{"version":3,"file":"scripts.js","mappings":"AAAA;AACA;AACA;AACA;AACA,CAAC,uBAAuB;;AAExB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA,iBAAiB,oBAAoB,2BAA2B,cAAc,eAAe,gDAAgD,cAAc,4BAA4B,cAAc,KAAK,cAAc,KAAK,aAAa,kBAAkB,4BAA4B,aAAa,wCAAwC,MAAM,KAAK,aAAa,iDAAiD,oBAAoB,iBAAiB,aAAa,iBAAiB,aAAa,yBAAyB,sCAAsC,+BAA+B,aAAa,iBAAiB,kBAAkB,eAAe,aAAa,YAAY,IAAI,MAAM,oBAAoB,gCAAgC,KAAK,aAAa,IAAI,iDAAiD,yCAAyC,SAAS,YAAY,gBAAgB,qCAAqC,oBAAoB,eAAe,MAAM,qBAAqB,aAAa,0BAA0B,GAAG,gBAAgB,SAAS,cAAc,WAAW,qDAAqD,eAAe,gBAAgB,cAAc,aAAa,iEAAiE,aAAa,6EAA6E,oBAAoB,IAAI,eAAe,SAAS,UAAU,kBAAkB,cAAc,6BAA6B,+BAA+B,aAAa,kBAAkB,4CAA4C,sBAAsB,KAAK,gBAAgB,+EAA+E,cAAc,aAAa,cAAc,GAAG,kBAAkB,+GAA+G,gBAAgB,kBAAkB,cAAc,aAAa,IAAI,UAAU,SAAS,mBAAmB,UAAU,aAAa,cAAc,wCAAwC,gBAAgB,0EAA0E,gBAAgB,+CAA+C,oBAAoB,gCAAgC,kEAAkE,cAAc,gCAAgC,iBAAiB,0CAA0C,WAAW,uCAAuC,0BAA0B,oBAAoB,kCAAkC,MAAM,IAAI,QAAQ,SAAS,UAAU,8BAA8B,SAAS,sEAAsE,gBAAgB,IAAI,cAAc,QAAQ,aAAa,QAAQ,GAAG,SAAS,SAAS,aAAa,YAAY,cAAc,8DAA8D,aAAa,4DAA4D,cAAc,8BAA8B,cAAc,WAAW,gCAAgC,uBAAuB,IAAI,+BAA+B,eAAe,2DAA2D,EAAE,cAAc,sBAAsB,gBAAgB,aAAa,0GAA0G,aAAa,6IAA6I,aAAa,aAAa,uDAAuD,wCAAwC,SAAS,6BAA6B,SAAS,4FAA4F,gBAAgB,MAAM,WAAW,IAAI,+CAA+C,UAAU,0CAA0C,cAAc,aAAa,0CAA0C,6DAA6D,8CAA8C,0CAA0C,mDAAmD,gIAAgI,iKAAiK,2EAA2E,kFAAkF,gBAAgB,gVAAgV,0CAA0C,YAAY,4BAA4B,6BAA6B,sCAAsC,4CAA4C,UAAU,2BAA2B,IAAI,UAAU,SAAS,UAAU,6DAA6D,iEAAiE,gBAAgB,eAAe,2CAA2C,0CAA0C,YAAY,MAAM,iCAAiC,wCAAwC,mBAAmB,yGAAyG,yCAAyC,WAAW,uBAAuB,2BAA2B,aAAa,2BAA2B,GAAG,GAAG,iBAAiB,cAAc,qIAAqI,wCAAwC,yBAAyB,oCAAoC,2BAA2B,+BAA+B,sCAAsC,SAAS,EAAE,aAAa,sCAAsC,QAAQ,EAAE,cAAc,GAAG,GAAG,kJAAkJ;AACpyM,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,+BAA+B;;AAE/B;AACA,4CAA4C,UAAU;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB;;AAEjB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,0BAA0B;AACzD;AACA;AACA,UAAU;AACV,+BAA+B,0BAA0B;AACzD;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,8CAA8C,0DAA0D;AACxG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B,0BAA0B;AAC1B,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B,0BAA0B;AAC1B,uBAAuB;AACvB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,0BAA0B;AAC1B;AACA,mBAAmB;AACnB;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,UAAU;AACV;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,kEAAkE,WAAW;AAC7E;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA,kEAAkE,WAAW;AAC7E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;;AAEA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uFAAuF;AACjH,cAAc;AACd,UAAU;;AAEV;AACA;AACA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,kBAAkB;;AAElB;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,sBAAsB;;AAEtB;AACA,kBAAkB;;AAElB;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,uBAAuB;AACvB;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,uBAAuB;AACvB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,6BAA6B,yBAAyB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;AAC9C,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD,kEAAkE;AAClE;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC","sources":["node_modules/keycloak-js/dist/keycloak.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define('keycloak', factory) :\n\t(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Keycloak = factory());\n})(this, (function () { 'use strict';\n\n\tvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction getDefaultExportFromCjs (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction commonjsRequire(path) {\n\t\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n\t}\n\n\tvar es6Promise_min = {exports: {}};\n\n\t(function (module, exports) {\n\t\t!function(t,e){module.exports=e();}(commonjsGlobal,function(){function t(t){var e=typeof t;return null!==t&&(\"object\"===e||\"function\"===e)}function e(t){return \"function\"==typeof t}function n(t){W=t;}function r(t){z=t;}function o(){return function(){return process.nextTick(a)}}function i(){return \"undefined\"!=typeof U?function(){U(a);}:c()}function s(){var t=0,e=new H(a),n=document.createTextNode(\"\");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2;}}function u(){var t=new MessageChannel;return t.port1.onmessage=a,function(){return t.port2.postMessage(0)}}function c(){var t=setTimeout;return function(){return t(a,1)}}function a(){for(var t=0;t 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\n\t // Trim off extra bytes after placeholder bytes are found\n\t // See: https://github.com/beatgammit/base64-js/issues/42\n\t var validLen = b64.indexOf('=');\n\t if (validLen === -1) validLen = len;\n\n\t var placeHoldersLen = validLen === len\n\t ? 0\n\t : 4 - (validLen % 4);\n\n\t return [validLen, placeHoldersLen]\n\t}\n\n\t// base64 is 4/3 + up to two characters of the original data\n\tfunction byteLength (b64) {\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction _byteLength (b64, validLen, placeHoldersLen) {\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction toByteArray (b64) {\n\t var tmp;\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\n\t var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n\t var curByte = 0;\n\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t var len = placeHoldersLen > 0\n\t ? validLen - 4\n\t : validLen;\n\n\t var i;\n\t for (i = 0; i < len; i += 4) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 18) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 12) |\n\t (revLookup[b64.charCodeAt(i + 2)] << 6) |\n\t revLookup[b64.charCodeAt(i + 3)];\n\t arr[curByte++] = (tmp >> 16) & 0xFF;\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 2) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 2) |\n\t (revLookup[b64.charCodeAt(i + 1)] >> 4);\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 1) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 10) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 4) |\n\t (revLookup[b64.charCodeAt(i + 2)] >> 2);\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] +\n\t lookup[num >> 12 & 0x3F] +\n\t lookup[num >> 6 & 0x3F] +\n\t lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp;\n\t var output = [];\n\t for (var i = start; i < end; i += 3) {\n\t tmp =\n\t ((uint8[i] << 16) & 0xFF0000) +\n\t ((uint8[i + 1] << 8) & 0xFF00) +\n\t (uint8[i + 2] & 0xFF);\n\t output.push(tripletToBase64(tmp));\n\t }\n\t return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t var tmp;\n\t var len = uint8.length;\n\t var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t var parts = [];\n\t var maxChunkLength = 16383; // must be multiple of 3\n\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n\t }\n\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 2] +\n\t lookup[(tmp << 4) & 0x3F] +\n\t '=='\n\t );\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 10] +\n\t lookup[(tmp >> 4) & 0x3F] +\n\t lookup[(tmp << 2) & 0x3F] +\n\t '='\n\t );\n\t }\n\n\t return parts.join('')\n\t}\n\n\tvar sha256$1 = {exports: {}};\n\n\t/**\n\t * [js-sha256]{@link https://github.com/emn178/js-sha256}\n\t *\n\t * @version 0.9.0\n\t * @author Chen, Yi-Cyuan [emn178@gmail.com]\n\t * @copyright Chen, Yi-Cyuan 2014-2017\n\t * @license MIT\n\t */\n\n\t(function (module) {\n\t\t/*jslint bitwise: true */\n\t\t(function () {\n\n\t\t var ERROR = 'input is invalid type';\n\t\t var WINDOW = typeof window === 'object';\n\t\t var root = WINDOW ? window : {};\n\t\t if (root.JS_SHA256_NO_WINDOW) {\n\t\t WINDOW = false;\n\t\t }\n\t\t var WEB_WORKER = !WINDOW && typeof self === 'object';\n\t\t var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n\t\t if (NODE_JS) {\n\t\t root = commonjsGlobal;\n\t\t } else if (WEB_WORKER) {\n\t\t root = self;\n\t\t }\n\t\t var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && 'object' === 'object' && module.exports;\n\t\t var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n\t\t var HEX_CHARS = '0123456789abcdef'.split('');\n\t\t var EXTRA = [-2147483648, 8388608, 32768, 128];\n\t\t var SHIFT = [24, 16, 8, 0];\n\t\t var K = [\n\t\t 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n\t\t 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n\t\t 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n\t\t 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n\t\t 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n\t\t 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n\t\t 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n\t\t 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n\t\t ];\n\t\t var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n\t\t var blocks = [];\n\n\t\t if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n\t\t Array.isArray = function (obj) {\n\t\t return Object.prototype.toString.call(obj) === '[object Array]';\n\t\t };\n\t\t }\n\n\t\t if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n\t\t ArrayBuffer.isView = function (obj) {\n\t\t return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n\t\t };\n\t\t }\n\n\t\t var createOutputMethod = function (outputType, is224) {\n\t\t return function (message) {\n\t\t return new Sha256(is224, true).update(message)[outputType]();\n\t\t };\n\t\t };\n\n\t\t var createMethod = function (is224) {\n\t\t var method = createOutputMethod('hex', is224);\n\t\t if (NODE_JS) {\n\t\t method = nodeWrap(method, is224);\n\t\t }\n\t\t method.create = function () {\n\t\t return new Sha256(is224);\n\t\t };\n\t\t method.update = function (message) {\n\t\t return method.create().update(message);\n\t\t };\n\t\t for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n\t\t var type = OUTPUT_TYPES[i];\n\t\t method[type] = createOutputMethod(type, is224);\n\t\t }\n\t\t return method;\n\t\t };\n\n\t\t var nodeWrap = function (method, is224) {\n\t\t var crypto = eval(\"require('crypto')\");\n\t\t var Buffer = eval(\"require('buffer').Buffer\");\n\t\t var algorithm = is224 ? 'sha224' : 'sha256';\n\t\t var nodeMethod = function (message) {\n\t\t if (typeof message === 'string') {\n\t\t return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n\t\t } else {\n\t\t if (message === null || message === undefined) {\n\t\t throw new Error(ERROR);\n\t\t } else if (message.constructor === ArrayBuffer) {\n\t\t message = new Uint8Array(message);\n\t\t }\n\t\t }\n\t\t if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n\t\t message.constructor === Buffer) {\n\t\t return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n\t\t } else {\n\t\t return method(message);\n\t\t }\n\t\t };\n\t\t return nodeMethod;\n\t\t };\n\n\t\t var createHmacOutputMethod = function (outputType, is224) {\n\t\t return function (key, message) {\n\t\t return new HmacSha256(key, is224, true).update(message)[outputType]();\n\t\t };\n\t\t };\n\n\t\t var createHmacMethod = function (is224) {\n\t\t var method = createHmacOutputMethod('hex', is224);\n\t\t method.create = function (key) {\n\t\t return new HmacSha256(key, is224);\n\t\t };\n\t\t method.update = function (key, message) {\n\t\t return method.create(key).update(message);\n\t\t };\n\t\t for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n\t\t var type = OUTPUT_TYPES[i];\n\t\t method[type] = createHmacOutputMethod(type, is224);\n\t\t }\n\t\t return method;\n\t\t };\n\n\t\t function Sha256(is224, sharedMemory) {\n\t\t if (sharedMemory) {\n\t\t blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n\t\t blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n\t\t blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n\t\t blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n\t\t this.blocks = blocks;\n\t\t } else {\n\t\t this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\t\t }\n\n\t\t if (is224) {\n\t\t this.h0 = 0xc1059ed8;\n\t\t this.h1 = 0x367cd507;\n\t\t this.h2 = 0x3070dd17;\n\t\t this.h3 = 0xf70e5939;\n\t\t this.h4 = 0xffc00b31;\n\t\t this.h5 = 0x68581511;\n\t\t this.h6 = 0x64f98fa7;\n\t\t this.h7 = 0xbefa4fa4;\n\t\t } else { // 256\n\t\t this.h0 = 0x6a09e667;\n\t\t this.h1 = 0xbb67ae85;\n\t\t this.h2 = 0x3c6ef372;\n\t\t this.h3 = 0xa54ff53a;\n\t\t this.h4 = 0x510e527f;\n\t\t this.h5 = 0x9b05688c;\n\t\t this.h6 = 0x1f83d9ab;\n\t\t this.h7 = 0x5be0cd19;\n\t\t }\n\n\t\t this.block = this.start = this.bytes = this.hBytes = 0;\n\t\t this.finalized = this.hashed = false;\n\t\t this.first = true;\n\t\t this.is224 = is224;\n\t\t }\n\n\t\t Sha256.prototype.update = function (message) {\n\t\t if (this.finalized) {\n\t\t return;\n\t\t }\n\t\t var notString, type = typeof message;\n\t\t if (type !== 'string') {\n\t\t if (type === 'object') {\n\t\t if (message === null) {\n\t\t throw new Error(ERROR);\n\t\t } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n\t\t message = new Uint8Array(message);\n\t\t } else if (!Array.isArray(message)) {\n\t\t if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n\t\t throw new Error(ERROR);\n\t\t }\n\t\t }\n\t\t } else {\n\t\t throw new Error(ERROR);\n\t\t }\n\t\t notString = true;\n\t\t }\n\t\t var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n\t\t while (index < length) {\n\t\t if (this.hashed) {\n\t\t this.hashed = false;\n\t\t blocks[0] = this.block;\n\t\t blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n\t\t blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n\t\t blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n\t\t blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n\t\t }\n\n\t\t if (notString) {\n\t\t for (i = this.start; index < length && i < 64; ++index) {\n\t\t blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n\t\t }\n\t\t } else {\n\t\t for (i = this.start; index < length && i < 64; ++index) {\n\t\t code = message.charCodeAt(index);\n\t\t if (code < 0x80) {\n\t\t blocks[i >> 2] |= code << SHIFT[i++ & 3];\n\t\t } else if (code < 0x800) {\n\t\t blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n\t\t } else if (code < 0xd800 || code >= 0xe000) {\n\t\t blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n\t\t } else {\n\t\t code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n\t\t blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n\t\t blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n\t\t }\n\t\t }\n\t\t }\n\n\t\t this.lastByteIndex = i;\n\t\t this.bytes += i - this.start;\n\t\t if (i >= 64) {\n\t\t this.block = blocks[16];\n\t\t this.start = i - 64;\n\t\t this.hash();\n\t\t this.hashed = true;\n\t\t } else {\n\t\t this.start = i;\n\t\t }\n\t\t }\n\t\t if (this.bytes > 4294967295) {\n\t\t this.hBytes += this.bytes / 4294967296 << 0;\n\t\t this.bytes = this.bytes % 4294967296;\n\t\t }\n\t\t return this;\n\t\t };\n\n\t\t Sha256.prototype.finalize = function () {\n\t\t if (this.finalized) {\n\t\t return;\n\t\t }\n\t\t this.finalized = true;\n\t\t var blocks = this.blocks, i = this.lastByteIndex;\n\t\t blocks[16] = this.block;\n\t\t blocks[i >> 2] |= EXTRA[i & 3];\n\t\t this.block = blocks[16];\n\t\t if (i >= 56) {\n\t\t if (!this.hashed) {\n\t\t this.hash();\n\t\t }\n\t\t blocks[0] = this.block;\n\t\t blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n\t\t blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n\t\t blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n\t\t blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n\t\t }\n\t\t blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n\t\t blocks[15] = this.bytes << 3;\n\t\t this.hash();\n\t\t };\n\n\t\t Sha256.prototype.hash = function () {\n\t\t var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n\t\t h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n\t\t for (j = 16; j < 64; ++j) {\n\t\t // rightrotate\n\t\t t1 = blocks[j - 15];\n\t\t s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n\t\t t1 = blocks[j - 2];\n\t\t s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n\t\t blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n\t\t }\n\n\t\t bc = b & c;\n\t\t for (j = 0; j < 64; j += 4) {\n\t\t if (this.first) {\n\t\t if (this.is224) {\n\t\t ab = 300032;\n\t\t t1 = blocks[0] - 1413257819;\n\t\t h = t1 - 150054599 << 0;\n\t\t d = t1 + 24177077 << 0;\n\t\t } else {\n\t\t ab = 704751109;\n\t\t t1 = blocks[0] - 210244248;\n\t\t h = t1 - 1521486534 << 0;\n\t\t d = t1 + 143694565 << 0;\n\t\t }\n\t\t this.first = false;\n\t\t } else {\n\t\t s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n\t\t s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n\t\t ab = a & b;\n\t\t maj = ab ^ (a & c) ^ bc;\n\t\t ch = (e & f) ^ (~e & g);\n\t\t t1 = h + s1 + ch + K[j] + blocks[j];\n\t\t t2 = s0 + maj;\n\t\t h = d + t1 << 0;\n\t\t d = t1 + t2 << 0;\n\t\t }\n\t\t s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n\t\t s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n\t\t da = d & a;\n\t\t maj = da ^ (d & b) ^ ab;\n\t\t ch = (h & e) ^ (~h & f);\n\t\t t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n\t\t t2 = s0 + maj;\n\t\t g = c + t1 << 0;\n\t\t c = t1 + t2 << 0;\n\t\t s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n\t\t s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n\t\t cd = c & d;\n\t\t maj = cd ^ (c & a) ^ da;\n\t\t ch = (g & h) ^ (~g & e);\n\t\t t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n\t\t t2 = s0 + maj;\n\t\t f = b + t1 << 0;\n\t\t b = t1 + t2 << 0;\n\t\t s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n\t\t s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n\t\t bc = b & c;\n\t\t maj = bc ^ (b & d) ^ cd;\n\t\t ch = (f & g) ^ (~f & h);\n\t\t t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n\t\t t2 = s0 + maj;\n\t\t e = a + t1 << 0;\n\t\t a = t1 + t2 << 0;\n\t\t }\n\n\t\t this.h0 = this.h0 + a << 0;\n\t\t this.h1 = this.h1 + b << 0;\n\t\t this.h2 = this.h2 + c << 0;\n\t\t this.h3 = this.h3 + d << 0;\n\t\t this.h4 = this.h4 + e << 0;\n\t\t this.h5 = this.h5 + f << 0;\n\t\t this.h6 = this.h6 + g << 0;\n\t\t this.h7 = this.h7 + h << 0;\n\t\t };\n\n\t\t Sha256.prototype.hex = function () {\n\t\t this.finalize();\n\n\t\t var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n\t\t h6 = this.h6, h7 = this.h7;\n\n\t\t var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n\t\t HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n\t\t HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n\t\t HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n\t\t HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n\t\t HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n\t\t HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n\t\t if (!this.is224) {\n\t\t hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n\t\t HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n\t\t HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n\t\t HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n\t\t }\n\t\t return hex;\n\t\t };\n\n\t\t Sha256.prototype.toString = Sha256.prototype.hex;\n\n\t\t Sha256.prototype.digest = function () {\n\t\t this.finalize();\n\n\t\t var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n\t\t h6 = this.h6, h7 = this.h7;\n\n\t\t var arr = [\n\t\t (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n\t\t (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n\t\t (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n\t\t (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n\t\t (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n\t\t (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n\t\t (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n\t\t ];\n\t\t if (!this.is224) {\n\t\t arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n\t\t }\n\t\t return arr;\n\t\t };\n\n\t\t Sha256.prototype.array = Sha256.prototype.digest;\n\n\t\t Sha256.prototype.arrayBuffer = function () {\n\t\t this.finalize();\n\n\t\t var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n\t\t var dataView = new DataView(buffer);\n\t\t dataView.setUint32(0, this.h0);\n\t\t dataView.setUint32(4, this.h1);\n\t\t dataView.setUint32(8, this.h2);\n\t\t dataView.setUint32(12, this.h3);\n\t\t dataView.setUint32(16, this.h4);\n\t\t dataView.setUint32(20, this.h5);\n\t\t dataView.setUint32(24, this.h6);\n\t\t if (!this.is224) {\n\t\t dataView.setUint32(28, this.h7);\n\t\t }\n\t\t return buffer;\n\t\t };\n\n\t\t function HmacSha256(key, is224, sharedMemory) {\n\t\t var i, type = typeof key;\n\t\t if (type === 'string') {\n\t\t var bytes = [], length = key.length, index = 0, code;\n\t\t for (i = 0; i < length; ++i) {\n\t\t code = key.charCodeAt(i);\n\t\t if (code < 0x80) {\n\t\t bytes[index++] = code;\n\t\t } else if (code < 0x800) {\n\t\t bytes[index++] = (0xc0 | (code >> 6));\n\t\t bytes[index++] = (0x80 | (code & 0x3f));\n\t\t } else if (code < 0xd800 || code >= 0xe000) {\n\t\t bytes[index++] = (0xe0 | (code >> 12));\n\t\t bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n\t\t bytes[index++] = (0x80 | (code & 0x3f));\n\t\t } else {\n\t\t code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n\t\t bytes[index++] = (0xf0 | (code >> 18));\n\t\t bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n\t\t bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n\t\t bytes[index++] = (0x80 | (code & 0x3f));\n\t\t }\n\t\t }\n\t\t key = bytes;\n\t\t } else {\n\t\t if (type === 'object') {\n\t\t if (key === null) {\n\t\t throw new Error(ERROR);\n\t\t } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n\t\t key = new Uint8Array(key);\n\t\t } else if (!Array.isArray(key)) {\n\t\t if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n\t\t throw new Error(ERROR);\n\t\t }\n\t\t }\n\t\t } else {\n\t\t throw new Error(ERROR);\n\t\t }\n\t\t }\n\n\t\t if (key.length > 64) {\n\t\t key = (new Sha256(is224, true)).update(key).array();\n\t\t }\n\n\t\t var oKeyPad = [], iKeyPad = [];\n\t\t for (i = 0; i < 64; ++i) {\n\t\t var b = key[i] || 0;\n\t\t oKeyPad[i] = 0x5c ^ b;\n\t\t iKeyPad[i] = 0x36 ^ b;\n\t\t }\n\n\t\t Sha256.call(this, is224, sharedMemory);\n\n\t\t this.update(iKeyPad);\n\t\t this.oKeyPad = oKeyPad;\n\t\t this.inner = true;\n\t\t this.sharedMemory = sharedMemory;\n\t\t }\n\t\t HmacSha256.prototype = new Sha256();\n\n\t\t HmacSha256.prototype.finalize = function () {\n\t\t Sha256.prototype.finalize.call(this);\n\t\t if (this.inner) {\n\t\t this.inner = false;\n\t\t var innerHash = this.array();\n\t\t Sha256.call(this, this.is224, this.sharedMemory);\n\t\t this.update(this.oKeyPad);\n\t\t this.update(innerHash);\n\t\t Sha256.prototype.finalize.call(this);\n\t\t }\n\t\t };\n\n\t\t var exports = createMethod();\n\t\t exports.sha256 = exports;\n\t\t exports.sha224 = createMethod(true);\n\t\t exports.sha256.hmac = createHmacMethod();\n\t\t exports.sha224.hmac = createHmacMethod(true);\n\n\t\t if (COMMON_JS) {\n\t\t module.exports = exports;\n\t\t } else {\n\t\t root.sha256 = exports.sha256;\n\t\t root.sha224 = exports.sha224;\n\t\t }\n\t\t})(); \n\t} (sha256$1));\n\n\tvar sha256Exports = sha256$1.exports;\n\tvar sha256 = /*@__PURE__*/getDefaultExportFromCjs(sha256Exports);\n\n\tif (typeof es6Promise_minExports.Promise === 'undefined') {\n\t throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n\t}\n\n\tvar loggedConstructorDeprecation = false;\n\n\tfunction logConstructorDeprecation() {\n\t if (!loggedConstructorDeprecation) {\n\t loggedConstructorDeprecation = true;\n\t console.warn('[KEYCLOAK] Instantiation using the `Keycloak` function has been deprecated and support will be removed in future versions. Use the `new` operator to create an instance instead.');\n\t }\n\t}\n\n\tvar loggedPromiseDeprecation = false;\n\n\tfunction logPromiseDeprecation() {\n\t if (!loggedPromiseDeprecation) {\n\t loggedPromiseDeprecation = true;\n\t console.warn('[KEYCLOAK] Usage of legacy style promise methods such as `.error()` and `.success()` has been deprecated and support will be removed in future versions. Use standard style promise methods such as `.then() and `.catch()` instead.');\n\t }\n\t}\n\n\tfunction Keycloak (config) {\n\t if (!(this instanceof Keycloak)) {\n\t logConstructorDeprecation();\n\t return new Keycloak(config);\n\t }\n\n\t var kc = this;\n\t var adapter;\n\t var refreshQueue = [];\n\t var callbackStorage;\n\n\t var loginIframe = {\n\t enable: true,\n\t callbackList: [],\n\t interval: 5\n\t };\n\n\t var scripts = document.getElementsByTagName('script');\n\t for (var i = 0; i < scripts.length; i++) {\n\t if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n\t kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n\t }\n\t }\n\n\t var useNonce = true;\n\t var logInfo = createLogger(console.info);\n\t var logWarn = createLogger(console.warn);\n\n\t kc.init = function (initOptions) {\n\t kc.authenticated = false;\n\n\t callbackStorage = createCallbackStorage();\n\t var adapters = ['default', 'cordova', 'cordova-native'];\n\n\t if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n\t adapter = loadAdapter(initOptions.adapter);\n\t } else if (initOptions && typeof initOptions.adapter === \"object\") {\n\t adapter = initOptions.adapter;\n\t } else {\n\t if (window.Cordova || window.cordova) {\n\t adapter = loadAdapter('cordova');\n\t } else {\n\t adapter = loadAdapter();\n\t }\n\t }\n\n\t if (initOptions) {\n\t if (typeof initOptions.useNonce !== 'undefined') {\n\t useNonce = initOptions.useNonce;\n\t }\n\n\t if (typeof initOptions.checkLoginIframe !== 'undefined') {\n\t loginIframe.enable = initOptions.checkLoginIframe;\n\t }\n\n\t if (initOptions.checkLoginIframeInterval) {\n\t loginIframe.interval = initOptions.checkLoginIframeInterval;\n\t }\n\n\t if (initOptions.onLoad === 'login-required') {\n\t kc.loginRequired = true;\n\t }\n\n\t if (initOptions.responseMode) {\n\t if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n\t kc.responseMode = initOptions.responseMode;\n\t } else {\n\t throw 'Invalid value for responseMode';\n\t }\n\t }\n\n\t if (initOptions.flow) {\n\t switch (initOptions.flow) {\n\t case 'standard':\n\t kc.responseType = 'code';\n\t break;\n\t case 'implicit':\n\t kc.responseType = 'id_token token';\n\t break;\n\t case 'hybrid':\n\t kc.responseType = 'code id_token token';\n\t break;\n\t default:\n\t throw 'Invalid value for flow';\n\t }\n\t kc.flow = initOptions.flow;\n\t }\n\n\t if (initOptions.timeSkew != null) {\n\t kc.timeSkew = initOptions.timeSkew;\n\t }\n\n\t if(initOptions.redirectUri) {\n\t kc.redirectUri = initOptions.redirectUri;\n\t }\n\n\t if (initOptions.silentCheckSsoRedirectUri) {\n\t kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n\t }\n\n\t if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n\t kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n\t } else {\n\t kc.silentCheckSsoFallback = true;\n\t }\n\n\t if (initOptions.pkceMethod) {\n\t if (initOptions.pkceMethod !== \"S256\") {\n\t throw 'Invalid value for pkceMethod';\n\t }\n\t kc.pkceMethod = initOptions.pkceMethod;\n\t }\n\n\t if (typeof initOptions.enableLogging === 'boolean') {\n\t kc.enableLogging = initOptions.enableLogging;\n\t } else {\n\t kc.enableLogging = false;\n\t }\n\n\t if (typeof initOptions.scope === 'string') {\n\t kc.scope = initOptions.scope;\n\t }\n\n\t if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n\t kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n\t } else {\n\t kc.messageReceiveTimeout = 10000;\n\t }\n\t }\n\n\t if (!kc.responseMode) {\n\t kc.responseMode = 'fragment';\n\t }\n\t if (!kc.responseType) {\n\t kc.responseType = 'code';\n\t kc.flow = 'standard';\n\t }\n\n\t var promise = createPromise();\n\n\t var initPromise = createPromise();\n\t initPromise.promise.then(function() {\n\t kc.onReady && kc.onReady(kc.authenticated);\n\t promise.setSuccess(kc.authenticated);\n\t }).catch(function(error) {\n\t promise.setError(error);\n\t });\n\n\t var configPromise = loadConfig();\n\n\t function onLoad() {\n\t var doLogin = function(prompt) {\n\t if (!prompt) {\n\t options.prompt = 'none';\n\t }\n\n\t kc.login(options).then(function () {\n\t initPromise.setSuccess();\n\t }).catch(function (error) {\n\t initPromise.setError(error);\n\t });\n\t };\n\n\t var checkSsoSilently = function() {\n\t var ifrm = document.createElement(\"iframe\");\n\t var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n\t ifrm.setAttribute(\"src\", src);\n\t ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n\t ifrm.style.display = \"none\";\n\t document.body.appendChild(ifrm);\n\n\t var messageCallback = function(event) {\n\t if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n\t return;\n\t }\n\n\t var oauth = parseCallback(event.data);\n\t processCallback(oauth, initPromise);\n\n\t document.body.removeChild(ifrm);\n\t window.removeEventListener(\"message\", messageCallback);\n\t };\n\n\t window.addEventListener(\"message\", messageCallback);\n\t };\n\n\t var options = {};\n\t switch (initOptions.onLoad) {\n\t case 'check-sso':\n\t if (loginIframe.enable) {\n\t setupCheckLoginIframe().then(function() {\n\t checkLoginIframe().then(function (unchanged) {\n\t if (!unchanged) {\n\t kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n\t } else {\n\t initPromise.setSuccess();\n\t }\n\t }).catch(function (error) {\n\t initPromise.setError(error);\n\t });\n\t });\n\t } else {\n\t kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n\t }\n\t break;\n\t case 'login-required':\n\t doLogin(true);\n\t break;\n\t default:\n\t throw 'Invalid value for onLoad';\n\t }\n\t }\n\n\t function processInit() {\n\t var callback = parseCallback(window.location.href);\n\n\t if (callback) {\n\t window.history.replaceState(window.history.state, null, callback.newUrl);\n\t }\n\n\t if (callback && callback.valid) {\n\t return setupCheckLoginIframe().then(function() {\n\t processCallback(callback, initPromise);\n\t }).catch(function (error) {\n\t initPromise.setError(error);\n\t });\n\t } else if (initOptions) {\n\t if (initOptions.token && initOptions.refreshToken) {\n\t setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n\t if (loginIframe.enable) {\n\t setupCheckLoginIframe().then(function() {\n\t checkLoginIframe().then(function (unchanged) {\n\t if (unchanged) {\n\t kc.onAuthSuccess && kc.onAuthSuccess();\n\t initPromise.setSuccess();\n\t scheduleCheckIframe();\n\t } else {\n\t initPromise.setSuccess();\n\t }\n\t }).catch(function (error) {\n\t initPromise.setError(error);\n\t });\n\t });\n\t } else {\n\t kc.updateToken(-1).then(function() {\n\t kc.onAuthSuccess && kc.onAuthSuccess();\n\t initPromise.setSuccess();\n\t }).catch(function(error) {\n\t kc.onAuthError && kc.onAuthError();\n\t if (initOptions.onLoad) {\n\t onLoad();\n\t } else {\n\t initPromise.setError(error);\n\t }\n\t });\n\t }\n\t } else if (initOptions.onLoad) {\n\t onLoad();\n\t } else {\n\t initPromise.setSuccess();\n\t }\n\t } else {\n\t initPromise.setSuccess();\n\t }\n\t }\n\n\t function domReady() {\n\t var promise = createPromise();\n\n\t var checkReadyState = function () {\n\t if (document.readyState === 'interactive' || document.readyState === 'complete') {\n\t document.removeEventListener('readystatechange', checkReadyState);\n\t promise.setSuccess();\n\t }\n\t };\n\t document.addEventListener('readystatechange', checkReadyState);\n\n\t checkReadyState(); // just in case the event was already fired and we missed it (in case the init is done later than at the load time, i.e. it's done from code)\n\n\t return promise.promise;\n\t }\n\n\t configPromise.then(function () {\n\t domReady()\n\t .then(check3pCookiesSupported)\n\t .then(processInit)\n\t .catch(function (error) {\n\t promise.setError(error);\n\t });\n\t });\n\t configPromise.catch(function (error) {\n\t promise.setError(error);\n\t });\n\n\t return promise.promise;\n\t };\n\n\t kc.login = function (options) {\n\t return adapter.login(options);\n\t };\n\n\t function generateRandomData(len) {\n\t // use web crypto APIs if possible\n\t var array = null;\n\t var crypto = window.crypto || window.msCrypto;\n\t if (crypto && crypto.getRandomValues && window.Uint8Array) {\n\t array = new Uint8Array(len);\n\t crypto.getRandomValues(array);\n\t return array;\n\t }\n\n\t // fallback to Math random\n\t array = new Array(len);\n\t for (var j = 0; j < array.length; j++) {\n\t array[j] = Math.floor(256 * Math.random());\n\t }\n\t return array;\n\t }\n\n\t function generateCodeVerifier(len) {\n\t return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n\t }\n\n\t function generateRandomString(len, alphabet){\n\t var randomData = generateRandomData(len);\n\t var chars = new Array(len);\n\t for (var i = 0; i < len; i++) {\n\t chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n\t }\n\t return String.fromCharCode.apply(null, chars);\n\t }\n\n\t function generatePkceChallenge(pkceMethod, codeVerifier) {\n\t switch (pkceMethod) {\n\t // The use of the \"plain\" method is considered insecure and therefore not supported.\n\t case \"S256\":\n\t // hash codeVerifier, then encode as url-safe base64 without padding\n\t var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n\t var encodedHash = base64Js.fromByteArray(hashBytes)\n\t .replace(/\\+/g, '-')\n\t .replace(/\\//g, '_')\n\t .replace(/\\=/g, '');\n\t return encodedHash;\n\t default:\n\t throw 'Invalid value for pkceMethod';\n\t }\n\t }\n\n\t function buildClaimsParameter(requestedAcr){\n\t var claims = {\n\t id_token: {\n\t acr: requestedAcr\n\t }\n\t };\n\t return JSON.stringify(claims);\n\t }\n\n\t kc.createLoginUrl = function(options) {\n\t var state = createUUID();\n\t var nonce = createUUID();\n\n\t var redirectUri = adapter.redirectUri(options);\n\n\t var callbackState = {\n\t state: state,\n\t nonce: nonce,\n\t redirectUri: encodeURIComponent(redirectUri)\n\t };\n\n\t if (options && options.prompt) {\n\t callbackState.prompt = options.prompt;\n\t }\n\n\t var baseUrl;\n\t if (options && options.action == 'register') {\n\t baseUrl = kc.endpoints.register();\n\t } else {\n\t baseUrl = kc.endpoints.authorize();\n\t }\n\n\t var scope = options && options.scope || kc.scope;\n\t if (!scope) {\n\t // if scope is not set, default to \"openid\"\n\t scope = \"openid\";\n\t } else if (scope.indexOf(\"openid\") === -1) {\n\t // if openid scope is missing, prefix the given scopes with it\n\t scope = \"openid \" + scope;\n\t }\n\n\t var url = baseUrl\n\t + '?client_id=' + encodeURIComponent(kc.clientId)\n\t + '&redirect_uri=' + encodeURIComponent(redirectUri)\n\t + '&state=' + encodeURIComponent(state)\n\t + '&response_mode=' + encodeURIComponent(kc.responseMode)\n\t + '&response_type=' + encodeURIComponent(kc.responseType)\n\t + '&scope=' + encodeURIComponent(scope);\n\t if (useNonce) {\n\t url = url + '&nonce=' + encodeURIComponent(nonce);\n\t }\n\n\t if (options && options.prompt) {\n\t url += '&prompt=' + encodeURIComponent(options.prompt);\n\t }\n\n\t if (options && options.maxAge) {\n\t url += '&max_age=' + encodeURIComponent(options.maxAge);\n\t }\n\n\t if (options && options.loginHint) {\n\t url += '&login_hint=' + encodeURIComponent(options.loginHint);\n\t }\n\n\t if (options && options.idpHint) {\n\t url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n\t }\n\n\t if (options && options.action && options.action != 'register') {\n\t url += '&kc_action=' + encodeURIComponent(options.action);\n\t }\n\n\t if (options && options.locale) {\n\t url += '&ui_locales=' + encodeURIComponent(options.locale);\n\t }\n\n\t if (options && options.acr) {\n\t var claimsParameter = buildClaimsParameter(options.acr);\n\t url += '&claims=' + encodeURIComponent(claimsParameter);\n\t }\n\n\t if (kc.pkceMethod) {\n\t var codeVerifier = generateCodeVerifier(96);\n\t callbackState.pkceCodeVerifier = codeVerifier;\n\t var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\t url += '&code_challenge=' + pkceChallenge;\n\t url += '&code_challenge_method=' + kc.pkceMethod;\n\t }\n\n\t callbackStorage.add(callbackState);\n\n\t return url;\n\t };\n\n\t kc.logout = function(options) {\n\t return adapter.logout(options);\n\t };\n\n\t kc.createLogoutUrl = function(options) {\n\t var url = kc.endpoints.logout()\n\t + '?client_id=' + encodeURIComponent(kc.clientId)\n\t + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n\t if (kc.idToken) {\n\t url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n\t }\n\n\t return url;\n\t };\n\n\t kc.register = function (options) {\n\t return adapter.register(options);\n\t };\n\n\t kc.createRegisterUrl = function(options) {\n\t if (!options) {\n\t options = {};\n\t }\n\t options.action = 'register';\n\t return kc.createLoginUrl(options);\n\t };\n\n\t kc.createAccountUrl = function(options) {\n\t var realm = getRealmUrl();\n\t var url = undefined;\n\t if (typeof realm !== 'undefined') {\n\t url = realm\n\t + '/account'\n\t + '?referrer=' + encodeURIComponent(kc.clientId)\n\t + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n\t }\n\t return url;\n\t };\n\n\t kc.accountManagement = function() {\n\t return adapter.accountManagement();\n\t };\n\n\t kc.hasRealmRole = function (role) {\n\t var access = kc.realmAccess;\n\t return !!access && access.roles.indexOf(role) >= 0;\n\t };\n\n\t kc.hasResourceRole = function(role, resource) {\n\t if (!kc.resourceAccess) {\n\t return false;\n\t }\n\n\t var access = kc.resourceAccess[resource || kc.clientId];\n\t return !!access && access.roles.indexOf(role) >= 0;\n\t };\n\n\t kc.loadUserProfile = function() {\n\t var url = getRealmUrl() + '/account';\n\t var req = new XMLHttpRequest();\n\t req.open('GET', url, true);\n\t req.setRequestHeader('Accept', 'application/json');\n\t req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n\t var promise = createPromise();\n\n\t req.onreadystatechange = function () {\n\t if (req.readyState == 4) {\n\t if (req.status == 200) {\n\t kc.profile = JSON.parse(req.responseText);\n\t promise.setSuccess(kc.profile);\n\t } else {\n\t promise.setError();\n\t }\n\t }\n\t };\n\n\t req.send();\n\n\t return promise.promise;\n\t };\n\n\t kc.loadUserInfo = function() {\n\t var url = kc.endpoints.userinfo();\n\t var req = new XMLHttpRequest();\n\t req.open('GET', url, true);\n\t req.setRequestHeader('Accept', 'application/json');\n\t req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n\t var promise = createPromise();\n\n\t req.onreadystatechange = function () {\n\t if (req.readyState == 4) {\n\t if (req.status == 200) {\n\t kc.userInfo = JSON.parse(req.responseText);\n\t promise.setSuccess(kc.userInfo);\n\t } else {\n\t promise.setError();\n\t }\n\t }\n\t };\n\n\t req.send();\n\n\t return promise.promise;\n\t };\n\n\t kc.isTokenExpired = function(minValidity) {\n\t if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n\t throw 'Not authenticated';\n\t }\n\n\t if (kc.timeSkew == null) {\n\t logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n\t return true;\n\t }\n\n\t var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n\t if (minValidity) {\n\t if (isNaN(minValidity)) {\n\t throw 'Invalid minValidity';\n\t }\n\t expiresIn -= minValidity;\n\t }\n\t return expiresIn < 0;\n\t };\n\n\t kc.updateToken = function(minValidity) {\n\t var promise = createPromise();\n\n\t if (!kc.refreshToken) {\n\t promise.setError();\n\t return promise.promise;\n\t }\n\n\t minValidity = minValidity || 5;\n\n\t var exec = function() {\n\t var refreshToken = false;\n\t if (minValidity == -1) {\n\t refreshToken = true;\n\t logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n\t } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n\t refreshToken = true;\n\t logInfo('[KEYCLOAK] Refreshing token: token expired');\n\t }\n\n\t if (!refreshToken) {\n\t promise.setSuccess(false);\n\t } else {\n\t var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n\t var url = kc.endpoints.token();\n\n\t refreshQueue.push(promise);\n\n\t if (refreshQueue.length == 1) {\n\t var req = new XMLHttpRequest();\n\t req.open('POST', url, true);\n\t req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\t req.withCredentials = true;\n\n\t params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n\t var timeLocal = new Date().getTime();\n\n\t req.onreadystatechange = function () {\n\t if (req.readyState == 4) {\n\t if (req.status == 200) {\n\t logInfo('[KEYCLOAK] Token refreshed');\n\n\t timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n\t var tokenResponse = JSON.parse(req.responseText);\n\n\t setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n\t kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n\t for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n\t p.setSuccess(true);\n\t }\n\t } else {\n\t logWarn('[KEYCLOAK] Failed to refresh token');\n\n\t if (req.status == 400) {\n\t kc.clearToken();\n\t }\n\n\t kc.onAuthRefreshError && kc.onAuthRefreshError();\n\t for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n\t p.setError(true);\n\t }\n\t }\n\t }\n\t };\n\n\t req.send(params);\n\t }\n\t }\n\t };\n\n\t if (loginIframe.enable) {\n\t var iframePromise = checkLoginIframe();\n\t iframePromise.then(function() {\n\t exec();\n\t }).catch(function(error) {\n\t promise.setError(error);\n\t });\n\t } else {\n\t exec();\n\t }\n\n\t return promise.promise;\n\t };\n\n\t kc.clearToken = function() {\n\t if (kc.token) {\n\t setToken(null, null, null);\n\t kc.onAuthLogout && kc.onAuthLogout();\n\t if (kc.loginRequired) {\n\t kc.login();\n\t }\n\t }\n\t };\n\n\t function getRealmUrl() {\n\t if (typeof kc.authServerUrl !== 'undefined') {\n\t if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n\t return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n\t } else {\n\t return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n\t }\n\t } else {\n\t return undefined;\n\t }\n\t }\n\n\t function getOrigin() {\n\t if (!window.location.origin) {\n\t return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n\t } else {\n\t return window.location.origin;\n\t }\n\t }\n\n\t function processCallback(oauth, promise) {\n\t var code = oauth.code;\n\t var error = oauth.error;\n\t var prompt = oauth.prompt;\n\n\t var timeLocal = new Date().getTime();\n\n\t if (oauth['kc_action_status']) {\n\t kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n\t }\n\n\t if (error) {\n\t if (prompt != 'none') {\n\t var errorData = { error: error, error_description: oauth.error_description };\n\t kc.onAuthError && kc.onAuthError(errorData);\n\t promise && promise.setError(errorData);\n\t } else {\n\t promise && promise.setSuccess();\n\t }\n\t return;\n\t } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n\t authSuccess(oauth.access_token, null, oauth.id_token, true);\n\t }\n\n\t if ((kc.flow != 'implicit') && code) {\n\t var params = 'code=' + code + '&grant_type=authorization_code';\n\t var url = kc.endpoints.token();\n\n\t var req = new XMLHttpRequest();\n\t req.open('POST', url, true);\n\t req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n\t params += '&client_id=' + encodeURIComponent(kc.clientId);\n\t params += '&redirect_uri=' + oauth.redirectUri;\n\n\t if (oauth.pkceCodeVerifier) {\n\t params += '&code_verifier=' + oauth.pkceCodeVerifier;\n\t }\n\n\t req.withCredentials = true;\n\n\t req.onreadystatechange = function() {\n\t if (req.readyState == 4) {\n\t if (req.status == 200) {\n\n\t var tokenResponse = JSON.parse(req.responseText);\n\t authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n\t scheduleCheckIframe();\n\t } else {\n\t kc.onAuthError && kc.onAuthError();\n\t promise && promise.setError();\n\t }\n\t }\n\t };\n\n\t req.send(params);\n\t }\n\n\t function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n\t timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n\t setToken(accessToken, refreshToken, idToken, timeLocal);\n\n\t if (useNonce && ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n\t (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n\t (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\n\t logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n\t kc.clearToken();\n\t promise && promise.setError();\n\t } else {\n\t if (fulfillPromise) {\n\t kc.onAuthSuccess && kc.onAuthSuccess();\n\t promise && promise.setSuccess();\n\t }\n\t }\n\t }\n\n\t }\n\n\t function loadConfig(url) {\n\t var promise = createPromise();\n\t var configUrl;\n\n\t if (!config) {\n\t configUrl = 'keycloak.json';\n\t } else if (typeof config === 'string') {\n\t configUrl = config;\n\t }\n\n\t function setupOidcEndoints(oidcConfiguration) {\n\t if (! oidcConfiguration) {\n\t kc.endpoints = {\n\t authorize: function() {\n\t return getRealmUrl() + '/protocol/openid-connect/auth';\n\t },\n\t token: function() {\n\t return getRealmUrl() + '/protocol/openid-connect/token';\n\t },\n\t logout: function() {\n\t return getRealmUrl() + '/protocol/openid-connect/logout';\n\t },\n\t checkSessionIframe: function() {\n\t var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n\t if (kc.iframeVersion) {\n\t src = src + '?version=' + kc.iframeVersion;\n\t }\n\t return src;\n\t },\n\t thirdPartyCookiesIframe: function() {\n\t var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n\t if (kc.iframeVersion) {\n\t src = src + '?version=' + kc.iframeVersion;\n\t }\n\t return src;\n\t },\n\t register: function() {\n\t return getRealmUrl() + '/protocol/openid-connect/registrations';\n\t },\n\t userinfo: function() {\n\t return getRealmUrl() + '/protocol/openid-connect/userinfo';\n\t }\n\t };\n\t } else {\n\t kc.endpoints = {\n\t authorize: function() {\n\t return oidcConfiguration.authorization_endpoint;\n\t },\n\t token: function() {\n\t return oidcConfiguration.token_endpoint;\n\t },\n\t logout: function() {\n\t if (!oidcConfiguration.end_session_endpoint) {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t return oidcConfiguration.end_session_endpoint;\n\t },\n\t checkSessionIframe: function() {\n\t if (!oidcConfiguration.check_session_iframe) {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t return oidcConfiguration.check_session_iframe;\n\t },\n\t register: function() {\n\t throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n\t },\n\t userinfo: function() {\n\t if (!oidcConfiguration.userinfo_endpoint) {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t return oidcConfiguration.userinfo_endpoint;\n\t }\n\t };\n\t }\n\t }\n\n\t if (configUrl) {\n\t var req = new XMLHttpRequest();\n\t req.open('GET', configUrl, true);\n\t req.setRequestHeader('Accept', 'application/json');\n\n\t req.onreadystatechange = function () {\n\t if (req.readyState == 4) {\n\t if (req.status == 200 || fileLoaded(req)) {\n\t var config = JSON.parse(req.responseText);\n\n\t kc.authServerUrl = config['auth-server-url'];\n\t kc.realm = config['realm'];\n\t kc.clientId = config['resource'];\n\t setupOidcEndoints(null);\n\t promise.setSuccess();\n\t } else {\n\t promise.setError();\n\t }\n\t }\n\t };\n\n\t req.send();\n\t } else {\n\t if (!config.clientId) {\n\t throw 'clientId missing';\n\t }\n\n\t kc.clientId = config.clientId;\n\n\t var oidcProvider = config['oidcProvider'];\n\t if (!oidcProvider) {\n\t if (!config['url']) {\n\t var scripts = document.getElementsByTagName('script');\n\t for (var i = 0; i < scripts.length; i++) {\n\t if (scripts[i].src.match(/.*keycloak\\.js/)) {\n\t config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n\t break;\n\t }\n\t }\n\t }\n\t if (!config.realm) {\n\t throw 'realm missing';\n\t }\n\n\t kc.authServerUrl = config.url;\n\t kc.realm = config.realm;\n\t setupOidcEndoints(null);\n\t promise.setSuccess();\n\t } else {\n\t if (typeof oidcProvider === 'string') {\n\t var oidcProviderConfigUrl;\n\t if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n\t oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n\t } else {\n\t oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n\t }\n\t var req = new XMLHttpRequest();\n\t req.open('GET', oidcProviderConfigUrl, true);\n\t req.setRequestHeader('Accept', 'application/json');\n\n\t req.onreadystatechange = function () {\n\t if (req.readyState == 4) {\n\t if (req.status == 200 || fileLoaded(req)) {\n\t var oidcProviderConfig = JSON.parse(req.responseText);\n\t setupOidcEndoints(oidcProviderConfig);\n\t promise.setSuccess();\n\t } else {\n\t promise.setError();\n\t }\n\t }\n\t };\n\n\t req.send();\n\t } else {\n\t setupOidcEndoints(oidcProvider);\n\t promise.setSuccess();\n\t }\n\t }\n\t }\n\n\t return promise.promise;\n\t }\n\n\t function fileLoaded(xhr) {\n\t return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n\t }\n\n\t function setToken(token, refreshToken, idToken, timeLocal) {\n\t if (kc.tokenTimeoutHandle) {\n\t clearTimeout(kc.tokenTimeoutHandle);\n\t kc.tokenTimeoutHandle = null;\n\t }\n\n\t if (refreshToken) {\n\t kc.refreshToken = refreshToken;\n\t kc.refreshTokenParsed = decodeToken(refreshToken);\n\t } else {\n\t delete kc.refreshToken;\n\t delete kc.refreshTokenParsed;\n\t }\n\n\t if (idToken) {\n\t kc.idToken = idToken;\n\t kc.idTokenParsed = decodeToken(idToken);\n\t } else {\n\t delete kc.idToken;\n\t delete kc.idTokenParsed;\n\t }\n\n\t if (token) {\n\t kc.token = token;\n\t kc.tokenParsed = decodeToken(token);\n\t kc.sessionId = kc.tokenParsed.session_state;\n\t kc.authenticated = true;\n\t kc.subject = kc.tokenParsed.sub;\n\t kc.realmAccess = kc.tokenParsed.realm_access;\n\t kc.resourceAccess = kc.tokenParsed.resource_access;\n\n\t if (timeLocal) {\n\t kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n\t }\n\n\t if (kc.timeSkew != null) {\n\t logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n\t if (kc.onTokenExpired) {\n\t var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n\t logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n\t if (expiresIn <= 0) {\n\t kc.onTokenExpired();\n\t } else {\n\t kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n\t }\n\t }\n\t }\n\t } else {\n\t delete kc.token;\n\t delete kc.tokenParsed;\n\t delete kc.subject;\n\t delete kc.realmAccess;\n\t delete kc.resourceAccess;\n\n\t kc.authenticated = false;\n\t }\n\t }\n\n\t function decodeToken(str) {\n\t str = str.split('.')[1];\n\n\t str = str.replace(/-/g, '+');\n\t str = str.replace(/_/g, '/');\n\t switch (str.length % 4) {\n\t case 0:\n\t break;\n\t case 2:\n\t str += '==';\n\t break;\n\t case 3:\n\t str += '=';\n\t break;\n\t default:\n\t throw 'Invalid token';\n\t }\n\n\t str = decodeURIComponent(escape(atob(str)));\n\n\t str = JSON.parse(str);\n\t return str;\n\t }\n\n\t function createUUID() {\n\t var hexDigits = '0123456789abcdef';\n\t var s = generateRandomString(36, hexDigits).split(\"\");\n\t s[14] = '4';\n\t s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n\t s[8] = s[13] = s[18] = s[23] = '-';\n\t var uuid = s.join('');\n\t return uuid;\n\t }\n\n\t function parseCallback(url) {\n\t var oauth = parseCallbackUrl(url);\n\t if (!oauth) {\n\t return;\n\t }\n\n\t var oauthState = callbackStorage.get(oauth.state);\n\n\t if (oauthState) {\n\t oauth.valid = true;\n\t oauth.redirectUri = oauthState.redirectUri;\n\t oauth.storedNonce = oauthState.nonce;\n\t oauth.prompt = oauthState.prompt;\n\t oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n\t }\n\n\t return oauth;\n\t }\n\n\t function parseCallbackUrl(url) {\n\t var supportedParams;\n\t switch (kc.flow) {\n\t case 'standard':\n\t supportedParams = ['code', 'state', 'session_state', 'kc_action_status'];\n\t break;\n\t case 'implicit':\n\t supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status'];\n\t break;\n\t case 'hybrid':\n\t supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status'];\n\t break;\n\t }\n\n\t supportedParams.push('error');\n\t supportedParams.push('error_description');\n\t supportedParams.push('error_uri');\n\n\t var queryIndex = url.indexOf('?');\n\t var fragmentIndex = url.indexOf('#');\n\n\t var newUrl;\n\t var parsed;\n\n\t if (kc.responseMode === 'query' && queryIndex !== -1) {\n\t newUrl = url.substring(0, queryIndex);\n\t parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n\t if (parsed.paramsString !== '') {\n\t newUrl += '?' + parsed.paramsString;\n\t }\n\t if (fragmentIndex !== -1) {\n\t newUrl += url.substring(fragmentIndex);\n\t }\n\t } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n\t newUrl = url.substring(0, fragmentIndex);\n\t parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n\t if (parsed.paramsString !== '') {\n\t newUrl += '#' + parsed.paramsString;\n\t }\n\t }\n\n\t if (parsed && parsed.oauthParams) {\n\t if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n\t if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n\t parsed.oauthParams.newUrl = newUrl;\n\t return parsed.oauthParams;\n\t }\n\t } else if (kc.flow === 'implicit') {\n\t if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n\t parsed.oauthParams.newUrl = newUrl;\n\t return parsed.oauthParams;\n\t }\n\t }\n\t }\n\t }\n\n\t function parseCallbackParams(paramsString, supportedParams) {\n\t var p = paramsString.split('&');\n\t var result = {\n\t paramsString: '',\n\t oauthParams: {}\n\t };\n\t for (var i = 0; i < p.length; i++) {\n\t var split = p[i].indexOf(\"=\");\n\t var key = p[i].slice(0, split);\n\t if (supportedParams.indexOf(key) !== -1) {\n\t result.oauthParams[key] = p[i].slice(split + 1);\n\t } else {\n\t if (result.paramsString !== '') {\n\t result.paramsString += '&';\n\t }\n\t result.paramsString += p[i];\n\t }\n\t }\n\t return result;\n\t }\n\n\t function createPromise() {\n\t // Need to create a native Promise which also preserves the\n\t // interface of the custom promise type previously used by the API\n\t var p = {\n\t setSuccess: function(result) {\n\t p.resolve(result);\n\t },\n\n\t setError: function(result) {\n\t p.reject(result);\n\t }\n\t };\n\t p.promise = new es6Promise_minExports.Promise(function(resolve, reject) {\n\t p.resolve = resolve;\n\t p.reject = reject;\n\t });\n\n\t p.promise.success = function(callback) {\n\t logPromiseDeprecation();\n\n\t this.then(function handleSuccess(value) {\n\t callback(value);\n\t });\n\n\t return this;\n\t };\n\n\t p.promise.error = function(callback) {\n\t logPromiseDeprecation();\n\n\t this.catch(function handleError(error) {\n\t callback(error);\n\t });\n\n\t return this;\n\t };\n\n\t return p;\n\t }\n\n\t // Function to extend existing native Promise with timeout\n\t function applyTimeoutToPromise(promise, timeout, errorMessage) {\n\t var timeoutHandle = null;\n\t var timeoutPromise = new es6Promise_minExports.Promise(function (resolve, reject) {\n\t timeoutHandle = setTimeout(function () {\n\t reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n\t }, timeout);\n\t });\n\n\t return es6Promise_minExports.Promise.race([promise, timeoutPromise]).finally(function () {\n\t clearTimeout(timeoutHandle);\n\t });\n\t }\n\n\t function setupCheckLoginIframe() {\n\t var promise = createPromise();\n\n\t if (!loginIframe.enable) {\n\t promise.setSuccess();\n\t return promise.promise;\n\t }\n\n\t if (loginIframe.iframe) {\n\t promise.setSuccess();\n\t return promise.promise;\n\t }\n\n\t var iframe = document.createElement('iframe');\n\t loginIframe.iframe = iframe;\n\n\t iframe.onload = function() {\n\t var authUrl = kc.endpoints.authorize();\n\t if (authUrl.charAt(0) === '/') {\n\t loginIframe.iframeOrigin = getOrigin();\n\t } else {\n\t loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n\t }\n\t promise.setSuccess();\n\t };\n\n\t var src = kc.endpoints.checkSessionIframe();\n\t iframe.setAttribute('src', src );\n\t iframe.setAttribute('title', 'keycloak-session-iframe' );\n\t iframe.style.display = 'none';\n\t document.body.appendChild(iframe);\n\n\t var messageCallback = function(event) {\n\t if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n\t return;\n\t }\n\n\t if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n\t return;\n\t }\n\n\n\t if (event.data != 'unchanged') {\n\t kc.clearToken();\n\t }\n\n\t var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n\t for (var i = callbacks.length - 1; i >= 0; --i) {\n\t var promise = callbacks[i];\n\t if (event.data == 'error') {\n\t promise.setError();\n\t } else {\n\t promise.setSuccess(event.data == 'unchanged');\n\t }\n\t }\n\t };\n\n\t window.addEventListener('message', messageCallback, false);\n\n\t return promise.promise;\n\t }\n\n\t function scheduleCheckIframe() {\n\t if (loginIframe.enable) {\n\t if (kc.token) {\n\t setTimeout(function() {\n\t checkLoginIframe().then(function(unchanged) {\n\t if (unchanged) {\n\t scheduleCheckIframe();\n\t }\n\t });\n\t }, loginIframe.interval * 1000);\n\t }\n\t }\n\t }\n\n\t function checkLoginIframe() {\n\t var promise = createPromise();\n\n\t if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n\t var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n\t loginIframe.callbackList.push(promise);\n\t var origin = loginIframe.iframeOrigin;\n\t if (loginIframe.callbackList.length == 1) {\n\t loginIframe.iframe.contentWindow.postMessage(msg, origin);\n\t }\n\t } else {\n\t promise.setSuccess();\n\t }\n\n\t return promise.promise;\n\t }\n\n\t function check3pCookiesSupported() {\n\t var promise = createPromise();\n\n\t if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n\t var iframe = document.createElement('iframe');\n\t iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n\t iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n\t iframe.style.display = 'none';\n\t document.body.appendChild(iframe);\n\n\t var messageCallback = function(event) {\n\t if (iframe.contentWindow !== event.source) {\n\t return;\n\t }\n\n\t if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n\t return;\n\t } else if (event.data === \"unsupported\") {\n\t loginIframe.enable = false;\n\t if (kc.silentCheckSsoFallback) {\n\t kc.silentCheckSsoRedirectUri = false;\n\t }\n\t logWarn(\"[KEYCLOAK] 3rd party cookies aren't supported by this browser. checkLoginIframe and \" +\n\t \"silent check-sso are not available.\");\n\t }\n\n\t document.body.removeChild(iframe);\n\t window.removeEventListener(\"message\", messageCallback);\n\t promise.setSuccess();\n\t };\n\n\t window.addEventListener('message', messageCallback, false);\n\t } else {\n\t promise.setSuccess();\n\t }\n\n\t return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n\t }\n\n\t function loadAdapter(type) {\n\t if (!type || type == 'default') {\n\t return {\n\t login: function(options) {\n\t window.location.assign(kc.createLoginUrl(options));\n\t return createPromise().promise;\n\t },\n\n\t logout: function(options) {\n\t window.location.replace(kc.createLogoutUrl(options));\n\t return createPromise().promise;\n\t },\n\n\t register: function(options) {\n\t window.location.assign(kc.createRegisterUrl(options));\n\t return createPromise().promise;\n\t },\n\n\t accountManagement : function() {\n\t var accountUrl = kc.createAccountUrl();\n\t if (typeof accountUrl !== 'undefined') {\n\t window.location.href = accountUrl;\n\t } else {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t return createPromise().promise;\n\t },\n\n\t redirectUri: function(options, encodeHash) {\n\n\t if (options && options.redirectUri) {\n\t return options.redirectUri;\n\t } else if (kc.redirectUri) {\n\t return kc.redirectUri;\n\t } else {\n\t return location.href;\n\t }\n\t }\n\t };\n\t }\n\n\t if (type == 'cordova') {\n\t loginIframe.enable = false;\n\t var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n\t if (window.cordova && window.cordova.InAppBrowser) {\n\t // Use inappbrowser for IOS and Android if available\n\t return window.cordova.InAppBrowser.open(loginUrl, target, options);\n\t } else {\n\t return window.open(loginUrl, target, options);\n\t }\n\t };\n\n\t var shallowCloneCordovaOptions = function (userOptions) {\n\t if (userOptions && userOptions.cordovaOptions) {\n\t return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n\t options[optionName] = userOptions.cordovaOptions[optionName];\n\t return options;\n\t }, {});\n\t } else {\n\t return {};\n\t }\n\t };\n\n\t var formatCordovaOptions = function (cordovaOptions) {\n\t return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n\t options.push(optionName+\"=\"+cordovaOptions[optionName]);\n\t return options;\n\t }, []).join(\",\");\n\t };\n\n\t var createCordovaOptions = function (userOptions) {\n\t var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n\t cordovaOptions.location = 'no';\n\t if (userOptions && userOptions.prompt == 'none') {\n\t cordovaOptions.hidden = 'yes';\n\t }\n\t return formatCordovaOptions(cordovaOptions);\n\t };\n\n\t var cordovaRedirectUri = kc.redirectUri || 'http://localhost';\n\t \n\t return {\n\t login: function(options) {\n\t var promise = createPromise();\n\n\t var cordovaOptions = createCordovaOptions(options);\n\t var loginUrl = kc.createLoginUrl(options);\n\t var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n\t var completed = false;\n\n\t var closed = false;\n\t var closeBrowser = function() {\n\t closed = true;\n\t ref.close();\n\t };\n\n\t ref.addEventListener('loadstart', function(event) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t var callback = parseCallback(event.url);\n\t processCallback(callback, promise);\n\t closeBrowser();\n\t completed = true;\n\t }\n\t });\n\n\t ref.addEventListener('loaderror', function(event) {\n\t if (!completed) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t var callback = parseCallback(event.url);\n\t processCallback(callback, promise);\n\t closeBrowser();\n\t completed = true;\n\t } else {\n\t promise.setError();\n\t closeBrowser();\n\t }\n\t }\n\t });\n\n\t ref.addEventListener('exit', function(event) {\n\t if (!closed) {\n\t promise.setError({\n\t reason: \"closed_by_user\"\n\t });\n\t }\n\t });\n\n\t return promise.promise;\n\t },\n\n\t logout: function(options) {\n\t var promise = createPromise();\n\n\t var logoutUrl = kc.createLogoutUrl(options);\n\t var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n\t var error;\n\n\t ref.addEventListener('loadstart', function(event) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t ref.close();\n\t }\n\t });\n\n\t ref.addEventListener('loaderror', function(event) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t ref.close();\n\t } else {\n\t error = true;\n\t ref.close();\n\t }\n\t });\n\n\t ref.addEventListener('exit', function(event) {\n\t if (error) {\n\t promise.setError();\n\t } else {\n\t kc.clearToken();\n\t promise.setSuccess();\n\t }\n\t });\n\n\t return promise.promise;\n\t },\n\n\t register : function(options) {\n\t var promise = createPromise();\n\t var registerUrl = kc.createRegisterUrl();\n\t var cordovaOptions = createCordovaOptions(options);\n\t var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n\t ref.addEventListener('loadstart', function(event) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t ref.close();\n\t var oauth = parseCallback(event.url);\n\t processCallback(oauth, promise);\n\t }\n\t });\n\t return promise.promise;\n\t },\n\n\t accountManagement : function() {\n\t var accountUrl = kc.createAccountUrl();\n\t if (typeof accountUrl !== 'undefined') {\n\t var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n\t ref.addEventListener('loadstart', function(event) {\n\t if (event.url.indexOf(cordovaRedirectUri) == 0) {\n\t ref.close();\n\t }\n\t });\n\t } else {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t },\n\n\t redirectUri: function(options) {\n\t return cordovaRedirectUri;\n\t }\n\t }\n\t }\n\n\t if (type == 'cordova-native') {\n\t loginIframe.enable = false;\n\n\t return {\n\t login: function(options) {\n\t var promise = createPromise();\n\t var loginUrl = kc.createLoginUrl(options);\n\n\t universalLinks.subscribe('keycloak', function(event) {\n\t universalLinks.unsubscribe('keycloak');\n\t window.cordova.plugins.browsertab.close();\n\t var oauth = parseCallback(event.url);\n\t processCallback(oauth, promise);\n\t });\n\n\t window.cordova.plugins.browsertab.openUrl(loginUrl);\n\t return promise.promise;\n\t },\n\n\t logout: function(options) {\n\t var promise = createPromise();\n\t var logoutUrl = kc.createLogoutUrl(options);\n\n\t universalLinks.subscribe('keycloak', function(event) {\n\t universalLinks.unsubscribe('keycloak');\n\t window.cordova.plugins.browsertab.close();\n\t kc.clearToken();\n\t promise.setSuccess();\n\t });\n\n\t window.cordova.plugins.browsertab.openUrl(logoutUrl);\n\t return promise.promise;\n\t },\n\n\t register : function(options) {\n\t var promise = createPromise();\n\t var registerUrl = kc.createRegisterUrl(options);\n\t universalLinks.subscribe('keycloak' , function(event) {\n\t universalLinks.unsubscribe('keycloak');\n\t window.cordova.plugins.browsertab.close();\n\t var oauth = parseCallback(event.url);\n\t processCallback(oauth, promise);\n\t });\n\t window.cordova.plugins.browsertab.openUrl(registerUrl);\n\t return promise.promise;\n\n\t },\n\n\t accountManagement : function() {\n\t var accountUrl = kc.createAccountUrl();\n\t if (typeof accountUrl !== 'undefined') {\n\t window.cordova.plugins.browsertab.openUrl(accountUrl);\n\t } else {\n\t throw \"Not supported by the OIDC server\";\n\t }\n\t },\n\n\t redirectUri: function(options) {\n\t if (options && options.redirectUri) {\n\t return options.redirectUri;\n\t } else if (kc.redirectUri) {\n\t return kc.redirectUri;\n\t } else {\n\t return \"http://localhost\";\n\t }\n\t }\n\t }\n\t }\n\n\t throw 'invalid adapter type: ' + type;\n\t }\n\n\t var LocalStorage = function() {\n\t if (!(this instanceof LocalStorage)) {\n\t return new LocalStorage();\n\t }\n\n\t localStorage.setItem('kc-test', 'test');\n\t localStorage.removeItem('kc-test');\n\n\t var cs = this;\n\n\t function clearExpired() {\n\t var time = new Date().getTime();\n\t for (var i = 0; i < localStorage.length; i++) {\n\t var key = localStorage.key(i);\n\t if (key && key.indexOf('kc-callback-') == 0) {\n\t var value = localStorage.getItem(key);\n\t if (value) {\n\t try {\n\t var expires = JSON.parse(value).expires;\n\t if (!expires || expires < time) {\n\t localStorage.removeItem(key);\n\t }\n\t } catch (err) {\n\t localStorage.removeItem(key);\n\t }\n\t }\n\t }\n\t }\n\t }\n\n\t cs.get = function(state) {\n\t if (!state) {\n\t return;\n\t }\n\n\t var key = 'kc-callback-' + state;\n\t var value = localStorage.getItem(key);\n\t if (value) {\n\t localStorage.removeItem(key);\n\t value = JSON.parse(value);\n\t }\n\n\t clearExpired();\n\t return value;\n\t };\n\n\t cs.add = function(state) {\n\t clearExpired();\n\n\t var key = 'kc-callback-' + state.state;\n\t state.expires = new Date().getTime() + (60 * 60 * 1000);\n\t localStorage.setItem(key, JSON.stringify(state));\n\t };\n\t };\n\n\t var CookieStorage = function() {\n\t if (!(this instanceof CookieStorage)) {\n\t return new CookieStorage();\n\t }\n\n\t var cs = this;\n\n\t cs.get = function(state) {\n\t if (!state) {\n\t return;\n\t }\n\n\t var value = getCookie('kc-callback-' + state);\n\t setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n\t if (value) {\n\t return JSON.parse(value);\n\t }\n\t };\n\n\t cs.add = function(state) {\n\t setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n\t };\n\n\t cs.removeItem = function(key) {\n\t setCookie(key, '', cookieExpiration(-100));\n\t };\n\n\t var cookieExpiration = function (minutes) {\n\t var exp = new Date();\n\t exp.setTime(exp.getTime() + (minutes*60*1000));\n\t return exp;\n\t };\n\n\t var getCookie = function (key) {\n\t var name = key + '=';\n\t var ca = document.cookie.split(';');\n\t for (var i = 0; i < ca.length; i++) {\n\t var c = ca[i];\n\t while (c.charAt(0) == ' ') {\n\t c = c.substring(1);\n\t }\n\t if (c.indexOf(name) == 0) {\n\t return c.substring(name.length, c.length);\n\t }\n\t }\n\t return '';\n\t };\n\n\t var setCookie = function (key, value, expirationDate) {\n\t var cookie = key + '=' + value + '; '\n\t + 'expires=' + expirationDate.toUTCString() + '; ';\n\t document.cookie = cookie;\n\t };\n\t };\n\n\t function createCallbackStorage() {\n\t try {\n\t return new LocalStorage();\n\t } catch (err) {\n\t }\n\n\t return new CookieStorage();\n\t }\n\n\t function createLogger(fn) {\n\t return function() {\n\t if (kc.enableLogging) {\n\t fn.apply(console, Array.prototype.slice.call(arguments));\n\t }\n\t };\n\t }\n\t}\n\n\treturn Keycloak;\n\n}));\n"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[]}