{"version":3,"sources":["webpack:///webpack/bootstrap 20de9a8b473bfbd281ce","webpack:///./wwwroot/lib/better-dom/dist/better-dom.js","webpack:///./wwwroot/lib/better-form-validation/dist/better-form-validation.js","webpack:///./wwwroot/lib/better-i18n-plugin/dist/better-i18n-plugin.js","webpack:///./wwwroot/lib/better-popover-plugin/dist/better-popover-plugin.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,mDAAmD;;AAEnD;AACA,gDAAgD;;AAEhD;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC,mCAAmC;AACnC,oCAAoC;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT,2CAA2C,YAAY;;AAEvD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uDAAuD;AACvD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C,wBAAwB;AACpE;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC,sEAAsE;AACzG;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yDAAyD;AACzD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,SAAS;AACT;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA,SAAS;AACT;AACA;AACA,oCAAoC,WAAW,aAAa,aAAa,gBAAgB,eAAe;;AAExG;AACA;AACA;AACA,KAAK;;AAEL,4CAA4C,SAAS,SAAS;AAC9D;;AAEA;;AAEA,iDAAiD;;AAEjD;;AAEA;;AAEA,uDAAuD,SAAS,mBAAmB,cAAc,YAAY,EAAE;AAC/G;AACA;;AAEA;AACA;AACA;AACA,sEAAsE,OAAO;AAC7E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,UAAU;;AAEV;;AAEA;;AAEA;;AAEA,iBAAiB,qBAAqB,gBAAgB,YAAY,EAAE;AACpE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kFAAkF,oCAAoC;AACtH;;AAEA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,KAAK,8BAA8B;AACnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA,sCAAsC;;AAEtC,yCAAyC,yBAAyB;AAClE,wCAAwC;;AAExC;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;;AAEA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA,+BAA+B,4DAA4D;AAC3F,iDAAiD,kCAAkC;;AAEnF;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;;AAEA,kBAAkB,6BAA6B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB,iCAAiC,oBAAoB,YAAY,YAAY,EAAE;AAC/E;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA,0DAA0D,kBAAkB;AAC5E;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,sGAAsG,mDAAmD;;AAEzJ;AACA;AACA;;AAEA;AACA,KAAK;AACL,yFAAyF;AACzF;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,0EAA0E,mBAAmB;AAC7F;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;;AAEhE;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6DAA6D,oBAAoB;AACjF;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,2FAA2F,YAAY,KAAK,UAAU;AACtH;AACA;AACA;AACA,6DAA6D,gBAAgB;AAC7E;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB;AAC3E,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,2DAA2D,gBAAgB;AAC3E;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD,kBAAkB;;AAEvE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA,KAAK,8BAA8B;AACnC;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0EAA0E,2BAA2B;AACrG;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA,MAAM,8BAA8B,oBAAoB,sCAAsC;;AAE9F;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,SAAS;AACT,+BAA+B,SAAS;AACxC;;AAEA,yBAAyB,qBAAqB,gBAAgB,YAAY,EAAE;AAC5E;;AAEA;AACA,kBAAkB;;AAElB;AACA;AACA;AACA,KAAK,0CAA0C,uBAAuB;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB,oBAAoB,2BAA2B;;AAEzE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB,oBAAoB;;AAE9C;;AAEA;AACA,kCAAkC,OAAO,SAAS;AAClD,iFAAiF,4BAA4B;;AAE7G;AACA;AACA,4CAA4C,8DAA8D;AAC1G,6CAA6C,qBAAqB;AAClE;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,qEAAqE,uBAAuB;AAC5F,oEAAoE,sBAAsB;AAC1F,4EAA4E,gCAAgC;AAC5G,4EAA4E,gCAAgC;AAC5G;;AAEA;AACA;AACA,sFAAsF,4BAA4B;;AAElH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC,aAAa;AACb,+CAA+C,iFAAiF;AAChI;AACA;AACA,KAAK;;AAEL;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,+DAA+D,6BAA6B;AAC5F,aAAa;AACb;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C;AACA;AACA;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,KAAK,8BAA8B;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,MAAM,8BAA8B,oBAAoB,sCAAsC;;AAE9F;AACA;AACA,2DAA2D;AAC3D,0DAA0D;AAC1D,KAAK;AACL;AACA,yFAAyF;AACzF;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qDAAqD;AACrD,oEAAoE;AACpE,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C,qCAAqC,OAAO;;AAE5C;AACA;AACA,8EAA8E;AAC9E,KAAK;;AAEL;AACA,2DAA2D;AAC3D,kEAAkE;;AAElE;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0DAA0D;AAC1D;AACA;AACA,qEAAqE;AACrE,4EAA4E;;AAE5E;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA,oCAAoC;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kEAAkE,6BAA6B;;AAE/F;;AAEA;AACA;AACA,mCAAmC,mCAAmC;AACtE;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB,IAAI;AACrB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,KAAK,qBAAqB,qBAAqB;;AAE/C;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT,KAAK,iEAAiE,mBAAmB,0CAA0C;AACnI;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,MAAM,eAAe,mBAAmB;;AAExC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB,oBAAoB,WAAW;;AAEzD;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,iDAAiD;;AAEpF,qCAAqC,2CAA2C;;AAEhF;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK,qBAAqB,oBAAoB;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,qBAAqB;AAC1B,gBAAgB;AAChB,MAAM;;AAEN;AACA;;AAEA;;AAEA,KAAK,6BAA6B,iDAAiD;AACnF;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8CAA8C,iDAAiD;AAC/F,aAAa;AACb,gEAAgE,mCAAmC;AACnG;AACA,SAAS;AACT;AACA;;AAEA;AACA,MAAM,eAAe,mBAAmB;;AAExC;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,6CAA6C,yBAAyB;AACtE,aAAa;AACb,+DAA+D,6BAA6B;AAC5F,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,KAAK,uCAAuC;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc,IAAI;AAClB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,yBAAyB,oBAAoB,iEAAiE;;AAEpH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uEAAuE,2CAA2C;AAClH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK,qBAAqB;AAC1B;AACA,MAAM;;AAEN,4HAA4H,4BAA4B;AACxJ;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA,kGAAkG,kDAAkD;;AAEpJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;;AAEjB;;AAEA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;;AAEA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,KAAK,oCAAoC,0CAA0C;AACnF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,MAAM,eAAe,mBAAmB;;AAExC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,SAAS;;AAET;AACA;;AAEA;AACA,qEAAqE,sBAAsB;AAC3F;;AAEA;AACA;AACA,KAAK,qBAAqB,mBAAmB;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,WAAW;;AAE7C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,kDAAkD,kCAAkC;AACpF;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;;;;;;;ACv3DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mEAAmE,IAAI;AACvE,yDAAyD,IAAI;AAC7D,4BAA4B,IAAI,uBAAuB,IAAI,SAAS,IAAI,eAAe,IAAI,WAAW,EAAE,cAAc,IAAI,EAAE,IAAI;AAChI;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA,qCAAqC;AACrC,qBAAqB;AACrB,iBAAiB;AACjB;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,aAAa;AACb,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD,4DAA4D,eAAe,cAAc,gBAAgB,gBAAgB,yBAAyB,gBAAgB,cAAc,aAAa,iBAAiB,oBAAoB,yBAAyB,sBAAsB,qBAAqB,iBAAiB,WAAW,kCAAkC,8BAA8B,0BAA0B,gCAAgC,wBAAwB,sDAAsD,8CAA8C,sCAAsC,wDAAwD,+BAA+B,2BAA2B,uBAAuB,2CAA2C,UAAU,kCAAkC,8BAA8B,0BAA0B,+DAA+D,WAAW,QAAQ,SAAS,cAAc,kBAAkB,YAAY,gCAAgC,6BAA6B,4BAA4B,+BAA+B,6BAA6B,yBAAyB,gBAAgB;;;;;;;;ACzT3rC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,0FAA0F,aAAa;AACvG;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;;AAEA;AACA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;AACA,CAAC,c;;;;;;;ACxHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC","file":"publishedSite.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1569);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 20de9a8b473bfbd281ce","/**\n * @overview better-dom: Live extension playground\n * @version 2.1.4 Sun, 22 Mar 2015 19:22:57 GMT\n * @copyright 2013-2015 Maksim Chemerisuk\n * @license MIT\n * @see https://github.com/chemerisuk/better-dom\n */\n(function() {\n \"use strict\";var SLICE$0 = Array.prototype.slice;\n function $NullElement() {}\n\n function $Element(node) {\n if (this instanceof $Element) {\n if (node) {\n // use a generated property to store a reference\n // to the wrapper for circular object binding\n node[\"__2001004__\"] = this;\n\n this[0] = node;\n this._ = {\n \"handler2001004\": [],\n \"watcher2001004\": {},\n \"extension2001004\": [],\n \"context2001004\": {}\n };\n }\n } else if (node) {\n // create a wrapper only once for each native element\n return node[\"__2001004__\"] || new $Element(node);\n } else {\n return new $NullElement();\n }\n }\n\n function $Document(node) {\n // use documentElement for a $Document wrapper\n return $Element.call(this, node.documentElement);\n }\n\n $Element.prototype = {\n toString: function() {\n return \"<\" + this[0].tagName.toLowerCase() + \">\";\n },\n version: \"2.1.4\"\n };\n\n $NullElement.prototype = new $Element();\n $NullElement.prototype.toString = function() {return \"\"};\n\n $Document.prototype = new $Element();\n $Document.prototype.toString = function() {return \"#document\"};\n\n var WINDOW = window;\n var DOCUMENT = document;\n var HTML = DOCUMENT.documentElement;\n\n var CUSTOM_EVENT_TYPE = \"dataavailable\";\n var RETURN_THIS = function() { return this };\n var RETURN_TRUE = function() {return true};\n var RETURN_FALSE = function() {return false};\n var VENDOR_PREFIXES = [\"Webkit\", \"O\", \"Moz\", \"ms\"];\n\n var userAgent = WINDOW.navigator.userAgent;\n var jscriptVersion = WINDOW.ScriptEngineMajorVersion;\n\n var JSCRIPT_VERSION = jscriptVersion && jscriptVersion();\n var LEGACY_ANDROID = ~userAgent.indexOf(\"Android\") && userAgent.indexOf(\"Chrome\") < 0;\n var WEBKIT_PREFIX = WINDOW.WebKitAnimationEvent ? \"-webkit-\" : \"\";\n\n var DOM = new $Document(DOCUMENT);\n\n var util$index$$arrayProto = Array.prototype;\n\n var util$index$$every = util$index$$arrayProto.every;\n var util$index$$each = util$index$$arrayProto.forEach;\n var util$index$$filter = util$index$$arrayProto.filter;\n var util$index$$map = util$index$$arrayProto.map;\n var util$index$$slice = util$index$$arrayProto.slice;\n var util$index$$isArray = Array.isArray;\n var util$index$$keys = Object.keys;\n\n function util$index$$computeStyle(node) {\n if (JSCRIPT_VERSION < 9) {\n return node.currentStyle;\n } else {\n return node.ownerDocument.defaultView.getComputedStyle(node);\n }\n }\n\n function util$index$$injectElement(node) {\n if (node && node.nodeType === 1) {\n return node.ownerDocument.getElementsByTagName(\"head\")[0].appendChild(node);\n }\n }\n\n function util$index$$safeCall(context, fn, arg1, arg2) {\n if (typeof fn === \"string\") fn = context[fn];\n\n try {\n return fn.call(context, arg1, arg2);\n } catch (err) {\n WINDOW.setTimeout(function() { throw err }, 1);\n\n return false;\n }\n }\n\n function util$index$$register(mixins, factory, defaultFactory) {\n var proto = defaultFactory ? $Element.prototype : $Document.prototype;\n\n if (factory == null) {\n factory = function(methodName, strategy) {return strategy};\n }\n\n util$index$$keys(mixins).forEach(function(methodName) {\n var args = [methodName].concat(mixins[methodName]);\n\n proto[methodName] = factory.apply(null, args);\n\n if (defaultFactory) {\n $NullElement.prototype[methodName] = defaultFactory.apply(null, args);\n }\n });\n }\n function MethodError(methodName, args) {var type = arguments[2];if(type === void 0)type = \"$Element\";\n var url = \"http://chemerisuk.github.io/better-dom/\" + type + \".html#\" + methodName,\n line = \"invalid call `\" + type + (type === \"DOM\" ? \".\" : \"#\") + methodName + \"(\";\n\n line += util$index$$map.call(args, String).join(\", \") + \")`. \";\n\n this.message = line + \"Check \" + url + \" to verify the arguments\";\n }\n\n MethodError.prototype = new TypeError();\n\n function StaticMethodError(methodName, args) {\n MethodError.call(this, methodName, args, \"DOM\");\n }\n\n StaticMethodError.prototype = new TypeError();\n\n function DocumentTypeError(methodName, args) {\n MethodError.call(this, methodName, args, \"$Document\");\n }\n\n DocumentTypeError.prototype = new TypeError();\n\n var // operator type / priority object\n global$emmet$$operators = {\"(\": 1,\")\": 2,\"^\": 3,\">\": 4,\"+\": 5,\"*\": 6,\"`\": 7,\"[\": 8,\".\": 8,\"#\": 8},\n global$emmet$$reParse = /`[^`]*`|\\[[^\\]]*\\]|\\.[^()>^+*`[#]+|[^()>^+*`[#.]+|\\^+|./g,\n global$emmet$$reAttr = /\\s*([\\w\\-]+)(?:=((?:`([^`]*)`)|[^\\s]*))?/g,\n global$emmet$$reIndex = /(\\$+)(?:@(-)?(\\d+)?)?/g,\n global$emmet$$reDot = /\\./g,\n global$emmet$$reDollar = /\\$/g,\n global$emmet$$tagCache = {\"\": \"\"},\n global$emmet$$normalizeAttrs = function(_, name, value, rawValue) {\n // try to detemnie which kind of quotes to use\n var quote = value && value.indexOf(\"\\\"\") >= 0 ? \"'\" : \"\\\"\";\n\n if (typeof rawValue === \"string\") {\n // grab unquoted value for smart quotes\n value = rawValue;\n } else if (typeof value !== \"string\") {\n // handle boolean attributes by using name as value\n value = name;\n }\n // always wrap attribute values with quotes even they don't exist\n return \" \" + name + \"=\" + quote + value + quote;\n },\n global$emmet$$injectTerm = function(term, end) {return function(html) {\n // find index of where to inject the term\n var index = end ? html.lastIndexOf(\"<\") : html.indexOf(\">\");\n // inject the term into the HTML string\n return html.slice(0, index) + term + html.slice(index);\n }},\n global$emmet$$makeTerm = function(tag) {\n return global$emmet$$tagCache[tag] || (global$emmet$$tagCache[tag] = \"<\" + tag + \">\");\n },\n global$emmet$$makeIndexedTerm = function(n, term) {\n var result = Array(n), i;\n\n for (i = 0; i < n; ++i) {\n result[i] = term.replace(global$emmet$$reIndex, function(expr, fmt, sign, base) {\n var index = (sign ? n - i - 1 : i) + (base ? +base : 1);\n // handle zero-padded index values, like $$$ etc.\n return (fmt + index).slice(-fmt.length).replace(global$emmet$$reDollar, \"0\");\n });\n }\n\n return result;\n },\n global$emmet$$reUnsafe = /[&<>\"']/g,\n // http://stackoverflow.com/questions/6234773/can-i-escape-html-special-chars-in-javascript\n global$emmet$$safeSymbol = {\"&\": \"&\", \"<\": \"<\", \">\": \">\", \"\\\"\": \""\", \"'\": \"'\"};\n\n // populate empty tag names with result\n \"area base br col hr img input link meta param command keygen source\".split(\" \").forEach(function(tag) {\n global$emmet$$tagCache[tag] = \"<\" + tag + \">\";\n });\n\n DOM.emmet = function(template, varMap) {var $D$0;var $D$1;var $D$2;\n if (typeof template !== \"string\") throw new StaticMethodError(\"emmet\", arguments);\n\n if (varMap) template = DOM.format(template, varMap);\n\n if (template in global$emmet$$tagCache) {return global$emmet$$tagCache[template];}\n\n // transform template string into RPN\n\n var stack = [], output = [];\n\n $D$2 = (template.match(global$emmet$$reParse));$D$0 = 0;$D$1 = $D$2.length;for (var str ;$D$0 < $D$1;){str = ($D$2[$D$0++]);\n var op = str[0];\n var priority = global$emmet$$operators[op];\n\n if (priority) {\n if (str !== \"(\") {\n // for ^ operator need to skip > str.length times\n for (var i = 0, n = (op === \"^\" ? str.length : 1); i < n; ++i) {\n while (stack[0] !== op && global$emmet$$operators[stack[0]] >= priority) {\n var head = stack.shift();\n\n output.push(head);\n // for ^ operator stop shifting when the first > is found\n if (op === \"^\" && head === \">\") break;\n }\n }\n }\n\n if (str === \")\") {\n stack.shift(); // remove \"(\" symbol from stack\n } else {\n // handle values inside of `...` and [...] sections\n if (op === \"[\" || op === \"`\") {\n output.push(str.slice(1, -1));\n }\n // handle multiple classes, e.g. a.one.two\n if (op === \".\") {\n output.push(str.slice(1).replace(global$emmet$$reDot, \" \"));\n }\n\n stack.unshift(op);\n }\n } else {\n output.push(str);\n }\n };$D$0 = $D$1 = $D$2 = void 0;\n\n output = output.concat(stack);\n\n // transform RPN into html nodes\n\n stack = [];\n\n $D$0 = 0;$D$1 = output.length;for (var str$0 ;$D$0 < $D$1;){str$0 = (output[$D$0++]);\n if (str$0 in global$emmet$$operators) {\n var value = stack.shift();\n var node = stack.shift();\n\n if (typeof node === \"string\") {\n node = [ global$emmet$$makeTerm(node) ];\n }\n\n switch(str$0) {\n case \".\":\n value = global$emmet$$injectTerm(\" class=\\\"\" + value + \"\\\"\");\n break;\n\n case \"#\":\n value = global$emmet$$injectTerm(\" id=\\\"\" + value + \"\\\"\");\n break;\n\n case \"[\":\n value = global$emmet$$injectTerm(value.replace(global$emmet$$reAttr, global$emmet$$normalizeAttrs));\n break;\n\n case \"*\":\n node = global$emmet$$makeIndexedTerm(+value, node.join(\"\"));\n break;\n\n case \"`\":\n stack.unshift(node);\n // escape unsafe HTML symbols\n node = [ value.replace(global$emmet$$reUnsafe, function(ch) {return global$emmet$$safeSymbol[ch]}) ];\n break;\n\n default: value = typeof value === \"string\" ? global$emmet$$makeTerm(value) : value.join(\"\");\n\n if (str$0 === \">\") {\n value = global$emmet$$injectTerm(value, true);\n } else {\n node.push(value);\n }\n }\n\n str$0 = typeof value === \"function\" ? node.map(value) : node;\n }\n\n stack.unshift(str$0);\n };$D$0 = $D$1 = void 0;\n\n if (output.length === 1) {\n // handle single tag case\n output = global$emmet$$makeTerm(stack[0]);\n } else {\n output = stack[0].join(\"\");\n }\n\n return output;\n };\n\n var global$emmet$$default = global$emmet$$tagCache;\n\n util$index$$register({\n create: \"\",\n createAll: \"All\"\n\n }, function(methodName, all) {return function(value, varMap) {\n var doc = this[0].ownerDocument,\n sandbox = this._[\"sandbox2001004\"];\n\n if (!sandbox) {\n sandbox = doc.createElement(\"div\");\n this._[\"sandbox2001004\"] = sandbox;\n }\n\n var nodes, el;\n\n if (value && value in global$emmet$$default) {\n nodes = doc.createElement(value);\n\n if (all) nodes = [ new $Element(nodes) ];\n } else {\n value = value.trim();\n\n if (value[0] === \"<\" && value[value.length - 1] === \">\") {\n value = varMap ? DOM.format(value, varMap) : value;\n } else {\n value = DOM.emmet(value, varMap);\n }\n\n sandbox.innerHTML = value; // parse input HTML string\n\n for (nodes = all ? [] : null; el = sandbox.firstChild; ) {\n sandbox.removeChild(el); // detach element from the sandbox\n\n if (el.nodeType === 1) {\n if (all) {\n nodes.push(new $Element(el));\n } else {\n nodes = el;\n\n break; // stop early, because need only the first element\n }\n }\n }\n }\n\n return all ? nodes : $Element(nodes);\n }});\n\n // Helper for css selectors\n\n var util$selectormatcher$$rquickIs = /^(\\w*)(?:#([\\w\\-]+))?(?:\\[([\\w\\-\\=]+)\\])?(?:\\.([\\w\\-]+))?$/,\n util$selectormatcher$$propName = VENDOR_PREFIXES.concat(null)\n .map(function(p) {return (p ? p.toLowerCase() + \"M\" : \"m\") + \"atchesSelector\"})\n .reduceRight(function(propName, p) {return propName || p in HTML && p}, null);\n\n var util$selectormatcher$$default = function(selector, context) {\n if (typeof selector !== \"string\") return null;\n\n var quick = util$selectormatcher$$rquickIs.exec(selector);\n\n if (quick) {\n // Quick matching is inspired by jQuery:\n // 0 1 2 3 4\n // [ _, tag, id, attribute, class ]\n if (quick[1]) quick[1] = quick[1].toLowerCase();\n if (quick[3]) quick[3] = quick[3].split(\"=\");\n if (quick[4]) quick[4] = \" \" + quick[4] + \" \";\n }\n\n return function(node) {var $D$3;var $D$4;\n var result, found;\n if (!quick && !util$selectormatcher$$propName) {\n found = (context || node.ownerDocument).querySelectorAll(selector);\n }\n\n for (; node && node.nodeType === 1; node = node.parentNode) {\n if (quick) {\n result = (\n (!quick[1] || node.nodeName.toLowerCase() === quick[1]) &&\n (!quick[2] || node.id === quick[2]) &&\n (!quick[3] || (quick[3][1] ? node.getAttribute(quick[3][0]) === quick[3][1] : node.hasAttribute(quick[3][0]))) &&\n (!quick[4] || (\" \" + node.className + \" \").indexOf(quick[4]) >= 0)\n );\n } else {\n if (util$selectormatcher$$propName) {\n result = node[util$selectormatcher$$propName](selector);\n } else {\n $D$3 = 0;$D$4 = found.length;for (var n ;$D$3 < $D$4;){n = (found[$D$3++]);\n if (n === node) return n;\n };$D$3 = $D$4 = void 0;\n }\n }\n\n if (result || !context || node === context) break;\n }\n\n return result && node;\n };\n };\n\n var util$extensionhandler$$rePrivateFunction = /^(?:on|do)[A-Z]/;\n\n var util$extensionhandler$$default = function(selector, condition, mixins, index) {\n var ctr = mixins.hasOwnProperty(\"constructor\") && mixins.constructor,\n matcher = util$selectormatcher$$default(selector);\n\n return function(node, mock) {\n var el = $Element(node);\n // skip previously invoked or mismatched elements\n if (~el._[\"extension2001004\"].indexOf(index) || !matcher(node)) return;\n // mark extension as invoked\n el._[\"extension2001004\"].push(index);\n\n if (mock === true || condition(el) !== false) {\n // apply all private/public members to the element's interface\n var privateFunctions = Object.keys(mixins).filter(function(prop) {\n var value = mixins[prop];\n // TODO: private functions are deprecated, remove this line later\n if (util$extensionhandler$$rePrivateFunction.exec(prop)) {\n // preserve context for private functions\n el[prop] = function() {return value.apply(el, arguments)};\n\n return !mock;\n }\n\n if (prop !== \"constructor\") {\n el[prop] = value;\n\n return !mock && prop[0] === \"_\";\n }\n });\n\n // invoke constructor if it exists\n // make a safe call so live extensions can't break each other\n if (ctr) util$index$$safeCall(el, ctr);\n // remove event handlers from element's interface\n privateFunctions.forEach(function(prop) { delete el[prop] });\n }\n };\n };\n\n // Inspired by trick discovered by Daniel Buchner:\n // https://github.com/csuwldcat/SelectorListener\n\n var document$extend$$cssText;\n\n if (JSCRIPT_VERSION < 10) {\n var document$extend$$legacyScripts = util$index$$filter.call(DOCUMENT.scripts, function(el) {return el.src.indexOf(\"better-dom-legacy.js\") >= 0});\n\n if (document$extend$$legacyScripts.length < 1) {\n throw new Error(\"In order to use live extensions in IE < 10 you have to include extra files. See https://github.com/chemerisuk/better-dom#notes-about-old-ies for details.\");\n }\n\n document$extend$$cssText = \"-ms-behavior:url(\" + document$extend$$legacyScripts[0].src.replace(\".js\", \".htc\") + \") !important\";\n } else {\n document$extend$$cssText = WEBKIT_PREFIX + \"animation-name:DOM2001004 !important;\";\n document$extend$$cssText += WEBKIT_PREFIX + \"animation-duration:1ms !important\";\n }\n\n util$index$$register({\n extend: function(selector, condition, definition) {var this$0 = this;\n if (arguments.length === 1) {\n // handle case when $Document protytype is extended\n return util$index$$register(selector);\n } else if (selector === \"*\") {\n // handle case when $Element protytype is extended\n return util$index$$register(condition, null, function() {return RETURN_THIS});\n }\n\n if (arguments.length === 2) {\n definition = condition;\n condition = true;\n }\n\n if (typeof condition === \"boolean\") condition = condition ? RETURN_TRUE : RETURN_FALSE;\n if (typeof definition === \"function\") definition = {constructor: definition};\n\n if (!definition || typeof definition !== \"object\" || typeof condition !== \"function\") throw new DocumentTypeError(\"extend\", arguments);\n\n var node = this[0],\n mappings = this._[\"mappings2001004\"];\n\n if (!mappings) {\n this._[\"mappings2001004\"] = mappings = [];\n\n if (JSCRIPT_VERSION < 10) {\n node.attachEvent(\"on\" + CUSTOM_EVENT_TYPE, function() {\n var e = WINDOW.event;\n\n if (e.srcUrn === CUSTOM_EVENT_TYPE) {\n mappings.forEach(function(ext) { ext(e.srcElement) });\n }\n });\n } else {\n // declare the fake animation on the first DOM.extend method call\n this.importStyles(\"@\" + WEBKIT_PREFIX + \"keyframes DOM2001004\", \"from {opacity:.99} to {opacity:1}\");\n // use capturing to suppress internal animationstart events\n node.addEventListener(WEBKIT_PREFIX ? \"webkitAnimationStart\" : \"animationstart\", function(e) {\n if (e.animationName === \"DOM2001004\") {\n mappings.forEach(function(ext) { ext(e.target) });\n // this is an internal event - stop it immediately\n e.stopImmediatePropagation();\n }\n }, true);\n }\n }\n\n var ext = util$extensionhandler$$default(selector, condition, definition, mappings.length);\n\n mappings.push(ext);\n // live extensions are always async - append CSS asynchronously\n WINDOW.setTimeout(function() {\n // initialize extension manually to make sure that all elements\n // have appropriate methods before they are used in other DOM.extend.\n // Also fixes legacy IEs when the HTC behavior is already attached\n util$index$$each.call(node.ownerDocument.querySelectorAll(selector), ext);\n // MUST be after querySelectorAll because of legacy IEs quirks\n this$0.importStyles(selector, document$extend$$cssText);\n }, 0);\n }\n });\n\n util$index$$register({\n importScripts: function() {var urls = SLICE$0.call(arguments, 0);\n var doc = this[0].ownerDocument;\n\n var callback = function() {\n var arg = urls.shift(),\n argType = typeof arg,\n script;\n\n if (argType === \"string\") {\n script = doc.createElement(\"script\");\n script.src = arg;\n script.onload = callback;\n script.async = true;\n\n util$index$$injectElement(script);\n } else if (argType === \"function\") {\n arg();\n } else if (arg) {\n throw new DocumentTypeError(\"importScripts\", arguments);\n }\n };\n\n callback();\n }\n });\n\n util$index$$register({\n importStyles: function(selector, cssText) {\n var styleSheet = this._[\"styles2001004\"];\n\n if (!styleSheet) {\n var doc = this[0].ownerDocument,\n styleNode = util$index$$injectElement(doc.createElement(\"style\"));\n\n styleSheet = styleNode.sheet || styleNode.styleSheet;\n // store object internally\n this._[\"styles2001004\"] = styleSheet;\n }\n\n if (typeof selector !== \"string\" || typeof cssText !== \"string\") {\n throw new DocumentTypeError(\"importStyles\", arguments);\n }\n\n // insert rules one by one because of several reasons:\n // 1. IE8 does not support comma in a selector string\n // 2. if one selector fails it doesn't break others\n selector.split(\",\").forEach(function(selector) {\n try {\n if (styleSheet.cssRules) {\n styleSheet.insertRule(selector + \"{\" + cssText + \"}\", styleSheet.cssRules.length);\n } else if (selector[0] !== \"@\") {\n styleSheet.addRule(selector, cssText);\n } else {\n // addRule doesn't support at-rules, use cssText instead\n styleSheet.cssText += selector + \"{\" + cssText + \"}\";\n }\n } catch(err) {\n // silently ignore invalid rules\n }\n });\n }\n });\n\n util$index$$register({\n mock: function(content, varMap) {\n if (!content) return new $NullElement();\n\n var result = this.create(content, varMap),\n mappings = this._[\"mappings2001004\"],\n applyExtensions = function(node) {\n mappings.forEach(function(ext) { ext(node, true) });\n\n util$index$$each.call(node.children, applyExtensions);\n };\n\n if (mappings && mappings.length) {\n applyExtensions(result[0]);\n }\n\n return result;\n }\n });\n\n util$index$$register({\n child: false,\n\n children: true\n\n }, function(methodName, all) {return function(selector) {\n if (all) {\n if (selector && typeof selector !== \"string\") throw new MethodError(methodName, arguments);\n } else {\n if (selector && typeof selector !== \"number\") throw new MethodError(methodName, arguments);\n }\n\n var node = this[0],\n matcher = util$selectormatcher$$default(selector),\n children = node.children;\n if (JSCRIPT_VERSION < 9) {\n // fix IE8 bug with children collection\n children = util$index$$filter.call(children, function(node) {return node.nodeType === 1});\n }\n\n if (all) {\n if (matcher) children = util$index$$filter.call(children, matcher);\n\n return util$index$$map.call(children, $Element);\n } else {\n if (selector < 0) selector = children.length + selector;\n\n return $Element(children[selector]);\n }\n }}, function(methodName, all) {return function() {return all ? [] : new $NullElement()}});\n\n var element$classes$$reSpace = /[\\n\\t\\r]/g;\n\n util$index$$register({\n hasClass: [RETURN_FALSE, \"contains\", function(el, token) {\n return (\" \" + el[0].className + \" \")\n .replace(element$classes$$reSpace, \" \").indexOf(\" \" + token + \" \") >= 0;\n }],\n\n addClass: [RETURN_THIS, \"add\", function(el, token) {\n if (!el.hasClass(token)) el[0].className += \" \" + token;\n }],\n\n removeClass: [RETURN_THIS, \"remove\", function(el, token) {\n el[0].className = (\" \" + el[0].className + \" \")\n .replace(element$classes$$reSpace, \" \").replace(\" \" + token + \" \", \" \").trim();\n }],\n\n toggleClass: [RETURN_FALSE, \"toggle\", function(el, token) {\n var hasClass = el.hasClass(token);\n\n if (hasClass) {\n el.removeClass(token);\n } else {\n el[0].className += \" \" + token;\n }\n\n return !hasClass;\n }]\n }, function(methodName, defaultStrategy, nativeMethodName, strategy) {\n if (HTML.classList) {\n // use native classList property if possible\n strategy = function(el, token) {\n return el[0].classList[nativeMethodName](token);\n };\n }\n\n if (defaultStrategy === RETURN_FALSE) {\n return function(token, force) {\n if (typeof force === \"boolean\" && nativeMethodName === \"toggle\") {\n this[force ? \"addClass\" : \"removeClass\"](token);\n\n return force;\n }\n\n if (typeof token !== \"string\") throw new MethodError(methodName, arguments);\n\n return strategy(this, token);\n };\n } else {\n return function() {var $D$5;var $D$6;\n var tokens = arguments;\n\n $D$5 = 0;$D$6 = tokens.length;for (var token ;$D$5 < $D$6;){token = (tokens[$D$5++]);\n if (typeof token !== \"string\") throw new MethodError(methodName, arguments);\n\n strategy(this, token);\n };$D$5 = $D$6 = void 0;\n\n return this;\n };\n }\n }, function(methodName, defaultStrategy) {return defaultStrategy});\n\n util$index$$register({\n clone: function(deep) {\n if (typeof deep !== \"boolean\") throw new MethodError(\"clone\", arguments);\n\n var node = this[0], result;\n if (JSCRIPT_VERSION < 9) {\n result = DOM.create(node.outerHTML);\n\n if (!deep) result.set(\"\");\n } else {\n result = new $Element(node.cloneNode(deep));\n }\n\n return result;\n }\n }, null, function() {return function() {return new $NullElement()}});\n\n util$index$$register({\n contains: function(element) {\n var node = this[0];\n\n if (element instanceof $Element) {\n var otherNode = element[0];\n\n if (otherNode === node) return true;\n if (node.contains) {\n return node.contains(otherNode);\n } else {\n return node.compareDocumentPosition(otherNode) & 16;\n }\n }\n\n throw new MethodError(\"contains\", arguments);\n }\n }, null, function() {return RETURN_FALSE});\n\n // Helper for CSS properties access\n\n var util$stylehooks$$reDash = /\\-./g,\n util$stylehooks$$hooks = {get: {}, set: {}, find: function(name, style) {\n var propName = name.replace(util$stylehooks$$reDash, function(str) {return str[1].toUpperCase()});\n\n if (!(propName in style)) {\n propName = VENDOR_PREFIXES\n .map(function(prefix) {return prefix + propName[0].toUpperCase() + propName.slice(1)})\n .filter(function(prop) {return prop in style})[0];\n }\n\n return this.get[name] = this.set[name] = propName;\n }},\n util$stylehooks$$directions = [\"Top\", \"Right\", \"Bottom\", \"Left\"],\n util$stylehooks$$shortCuts = {\n font: [\"fontStyle\", \"fontSize\", \"/\", \"lineHeight\", \"fontFamily\"],\n padding: util$stylehooks$$directions.map(function(dir) {return \"padding\" + dir}),\n margin: util$stylehooks$$directions.map(function(dir) {return \"margin\" + dir}),\n \"border-width\": util$stylehooks$$directions.map(function(dir) {return \"border\" + dir + \"Width\"}),\n \"border-style\": util$stylehooks$$directions.map(function(dir) {return \"border\" + dir + \"Style\"})\n };\n\n // Exclude the following css properties from adding px\n \"float fill-opacity font-weight line-height opacity orphans widows z-index zoom\".split(\" \").forEach(function(propName) {\n var stylePropName = propName.replace(util$stylehooks$$reDash, function(str) {return str[1].toUpperCase()});\n\n if (propName === \"float\") {\n stylePropName = \"cssFloat\" in HTML.style ? \"cssFloat\" : \"styleFloat\";\n // normalize float css property\n util$stylehooks$$hooks.get[propName] = util$stylehooks$$hooks.set[propName] = stylePropName;\n } else {\n util$stylehooks$$hooks.get[propName] = stylePropName;\n util$stylehooks$$hooks.set[propName] = function(value, style) {\n style[stylePropName] = value.toString();\n };\n }\n });\n\n // normalize property shortcuts\n util$index$$keys(util$stylehooks$$shortCuts).forEach(function(key) {\n var props = util$stylehooks$$shortCuts[key];\n\n util$stylehooks$$hooks.get[key] = function(style) {\n var result = [],\n hasEmptyStyleValue = function(prop, index) {\n result.push(prop === \"/\" ? prop : style[prop]);\n\n return !result[index];\n };\n\n return props.some(hasEmptyStyleValue) ? \"\" : result.join(\" \");\n };\n\n util$stylehooks$$hooks.set[key] = function(value, style) {\n if (value && \"cssText\" in style) {\n // normalize setting complex property across browsers\n style.cssText += \";\" + key + \":\" + value;\n } else {\n props.forEach(function(name) {return style[name] = typeof value === \"number\" ? value + \"px\" : value.toString()});\n }\n };\n });\n\n var util$stylehooks$$default = util$stylehooks$$hooks;\n\n util$index$$register({\n css: function(name, value) {var this$0 = this;\n var len = arguments.length,\n node = this[0],\n style = node.style,\n computed;\n\n if (len === 1 && (typeof name === \"string\" || util$index$$isArray(name))) {\n var strategy = function(name) {\n var getter = util$stylehooks$$default.get[name] || util$stylehooks$$default.find(name, style),\n value = typeof getter === \"function\" ? getter(style) : style[getter];\n\n if (!value) {\n if (!computed) computed = util$index$$computeStyle(node);\n\n value = typeof getter === \"function\" ? getter(computed) : computed[getter];\n }\n\n return value;\n };\n\n if (typeof name === \"string\") {\n return strategy(name);\n } else {\n return name.map(strategy).reduce(function(memo, value, index) {\n memo[name[index]] = value;\n\n return memo;\n }, {});\n }\n }\n\n if (len === 2 && typeof name === \"string\") {\n var setter = util$stylehooks$$default.set[name] || util$stylehooks$$default.find(name, style);\n\n if (typeof value === \"function\") {\n value = value(this);\n }\n\n if (value == null) value = \"\";\n\n if (typeof setter === \"function\") {\n setter(value, style);\n } else {\n style[setter] = typeof value === \"number\" ? value + \"px\" : value.toString();\n }\n } else if (len === 1 && name && typeof name === \"object\") {\n util$index$$keys(name).forEach(function(key) { this$0.css(key, name[key]) });\n } else {\n throw new MethodError(\"css\", arguments);\n }\n\n return this;\n }\n }, null, function() {return function(name) {\n if (arguments.length === 1 && util$index$$isArray(name)) {\n return {};\n }\n\n if (arguments.length !== 1 || typeof name !== \"string\") {\n return this;\n }\n }});\n\n var element$define$$ATTR_CASE = JSCRIPT_VERSION < 9 ? \"toUpperCase\" : \"toLowerCase\";\n\n util$index$$register({\n define: function(name, getter, setter) {var this$0 = this;\n var node = this[0];\n\n if (typeof name !== \"string\" || typeof getter !== \"function\" || typeof setter !== \"function\") {\n throw new MethodError(\"define\", arguments);\n }\n\n // Use trick to fix infinite recursion in IE8:\n // http://www.smashingmagazine.com/2014/11/28/complete-polyfill-html5-details-element/\n\n var attrName = name[element$define$$ATTR_CASE]();\n var _setAttribute = node.setAttribute;\n var _removeAttribute = node.removeAttribute;\n if (JSCRIPT_VERSION < 9) {\n // read attribute before the defineProperty call\n // to set the correct initial state for IE8\n var initialValue = node.getAttribute(name);\n\n if (initialValue !== null) {\n node[attrName] = initialValue;\n }\n }\n\n Object.defineProperty(node, name, {\n get: function() {\n var attrValue = node.getAttribute(attrName, 1);\n // attr value -> prop value\n return getter.call(this$0, attrValue);\n },\n set: function(propValue) {\n // prop value -> attr value\n var attrValue = setter.call(this$0, propValue);\n\n if (attrValue == null) {\n _removeAttribute.call(node, attrName, 1);\n } else {\n _setAttribute.call(node, attrName, attrValue, 1);\n }\n }\n });\n\n // override methods to catch changes from attributes too\n node.setAttribute = function(name, value, flags) {\n if (attrName === name[element$define$$ATTR_CASE]()) {\n node[name] = getter.call(this$0, value);\n } else {\n _setAttribute.call(node, name, value, flags);\n }\n };\n\n node.removeAttribute = function(name, flags) {\n if (attrName === name[element$define$$ATTR_CASE]()) {\n node[name] = getter.call(this$0, null);\n } else {\n _removeAttribute.call(node, name, flags);\n }\n };\n\n return this;\n }\n }, null, function() {return RETURN_THIS});\n\n util$index$$register({\n empty: function() {\n return this.set(\"\");\n }\n }, null, function() {return RETURN_THIS});\n\n // big part of code inspired by Sizzle:\n // https://github.com/jquery/sizzle/blob/master/sizzle.js\n\n var element$find$$rquick = DOCUMENT.getElementsByClassName ? /^(?:(\\w+)|\\.([\\w\\-]+))$/ : /^(?:(\\w+))$/,\n element$find$$rescape = /'|\\\\/g;\n\n util$index$$register({\n find: \"\",\n\n findAll: \"All\"\n\n }, function(methodName, all) {return function(selector) {\n if (typeof selector !== \"string\") throw new MethodError(methodName, arguments);\n\n var node = this[0],\n quickMatch = element$find$$rquick.exec(selector),\n result, old, nid, context;\n\n if (quickMatch) {\n if (quickMatch[1]) {\n // speed-up: \"TAG\"\n result = node.getElementsByTagName(selector);\n } else {\n // speed-up: \".CLASS\"\n result = node.getElementsByClassName(quickMatch[2]);\n }\n\n if (result && !all) result = result[0];\n } else {\n old = true;\n context = node;\n\n if (node !== node.ownerDocument.documentElement) {\n // qSA works strangely on Element-rooted queries\n // We can work around this by specifying an extra ID on the root\n // and working up from there (Thanks to Andrew Dupont for the technique)\n if ( (old = node.getAttribute(\"id\")) ) {\n nid = old.replace(element$find$$rescape, \"\\\\$&\");\n } else {\n nid = \"DOM2001004\";\n node.setAttribute(\"id\", nid);\n }\n\n nid = \"[id='\" + nid + \"'] \";\n selector = nid + selector.split(\",\").join(\",\" + nid);\n }\n\n result = util$index$$safeCall(context, \"querySelector\" + all, selector);\n\n if (!old) node.removeAttribute(\"id\");\n }\n\n return all ? util$index$$map.call(result, $Element) : $Element(result);\n }}, function(methodName, all) {return function() {return all ? [] : new $NullElement()}});\n\n var util$eventhooks$$hooks = {};\n if (\"onfocusin\" in DOCUMENT.documentElement) {\n util$eventhooks$$hooks.focus = function(handler) { handler._type = \"focusin\" };\n util$eventhooks$$hooks.blur = function(handler) { handler._type = \"focusout\" };\n } else {\n // firefox doesn't support focusin/focusout events\n util$eventhooks$$hooks.focus = util$eventhooks$$hooks.blur = function(handler) { handler.capturing = true };\n }\n if (DOCUMENT.createElement(\"input\").validity) {\n util$eventhooks$$hooks.invalid = function(handler) { handler.capturing = true };\n }\n if (JSCRIPT_VERSION < 9) {\n // fix non-bubbling form events for IE8 therefore\n // use custom event type instead of original one\n [\"submit\", \"change\", \"reset\"].forEach(function(name) {\n util$eventhooks$$hooks[name] = function(handler) { handler._type = \"_\" };\n });\n }\n\n var util$eventhooks$$default = util$eventhooks$$hooks;\n\n function util$eventhandler$$getEventProperty(name, e, type, node, target, currentTarget) {\n if (typeof name === \"number\") {\n var args = e[\"__2001004__\"];\n\n return args ? args[name] : void 0;\n }\n if (JSCRIPT_VERSION < 9) {\n var docEl = node.ownerDocument.documentElement;\n\n switch (name) {\n case \"which\":\n return e.keyCode;\n case \"button\":\n var button = e.button;\n // click: 1 === left; 2 === middle; 3 === right\n return button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) );\n case \"pageX\":\n return e.clientX + docEl.scrollLeft - docEl.clientLeft;\n case \"pageY\":\n return e.clientY + docEl.scrollTop - docEl.clientTop;\n case \"preventDefault\":\n return function() {return e.returnValue = false};\n case \"stopPropagation\":\n return function() {return e.cancelBubble = true};\n }\n }\n\n switch (name) {\n case \"type\":\n return type;\n case \"defaultPrevented\":\n // IE8 and Android 2.3 use returnValue instead of defaultPrevented\n return \"defaultPrevented\" in e ? e.defaultPrevented : e.returnValue === false;\n case \"target\":\n return $Element(target);\n case \"currentTarget\":\n return $Element(currentTarget);\n case \"relatedTarget\":\n return $Element(e.relatedTarget || e[(e.toElement === node ? \"from\" : \"to\") + \"Element\"]);\n }\n\n var value = e[name];\n\n if (typeof value === \"function\") {\n return function() {return value.apply(e, arguments)};\n }\n\n return value;\n }\n\n function util$eventhandler$$EventHandler(type, selector, callback, props, el, once) {\n var node = el[0],\n hook = util$eventhooks$$default[type],\n matcher = util$selectormatcher$$default(selector, node),\n handler = function(e) {\n e = e || WINDOW.event;\n // early stop in case of default action\n if (util$eventhandler$$EventHandler.skip === type) return;\n if (handler._type === CUSTOM_EVENT_TYPE && e.srcUrn !== type) {\n return; // handle custom events in legacy IE\n }\n // srcElement can be null in legacy IE when target is document\n var target = e.target || e.srcElement || node.ownerDocument.documentElement,\n currentTarget = matcher ? matcher(target) : node,\n args = props || [];\n\n // early stop for late binding or when target doesn't match selector\n if (!currentTarget) return;\n\n // off callback even if it throws an exception later\n if (once) el.off(type, callback);\n\n if (props) {\n args = args.map(function(name) {return util$eventhandler$$getEventProperty(\n name, e, type, node, target, currentTarget)});\n } else {\n args = util$index$$slice.call(e[\"__2001004__\"] || [0], 1);\n }\n\n // prevent default if handler returns false\n if (callback.apply(el, args) === false) {\n if (JSCRIPT_VERSION < 9) {\n e.returnValue = false;\n } else {\n e.preventDefault();\n }\n }\n };\n\n if (hook) handler = hook(handler, type) || handler;\n if (JSCRIPT_VERSION < 9 && !(\"on\" + (handler._type || type) in node)) {\n // handle custom events for IE8\n handler._type = CUSTOM_EVENT_TYPE;\n }\n\n handler.type = type;\n handler.callback = callback;\n handler.selector = selector;\n\n return handler;\n }\n\n var util$eventhandler$$default = util$eventhandler$$EventHandler;\n\n util$index$$register({\n fire: function(type) {\n var node = this[0],\n e, eventType, canContinue;\n\n if (typeof type === \"string\") {\n var hook = util$eventhooks$$default[type],\n handler = {};\n\n if (hook) handler = hook(handler) || handler;\n\n eventType = handler._type || type;\n } else {\n throw new MethodError(\"fire\", arguments);\n }\n if (JSCRIPT_VERSION < 9) {\n e = node.ownerDocument.createEventObject();\n e[\"__2001004__\"] = arguments;\n // handle custom events for legacy IE\n if (!(\"on\" + eventType in node)) eventType = CUSTOM_EVENT_TYPE;\n // store original event type\n if (eventType === CUSTOM_EVENT_TYPE) e.srcUrn = type;\n\n node.fireEvent(\"on\" + eventType, e);\n\n canContinue = e.returnValue !== false;\n } else {\n e = node.ownerDocument.createEvent(\"HTMLEvents\");\n e[\"__2001004__\"] = arguments;\n e.initEvent(eventType, true, true);\n canContinue = node.dispatchEvent(e);\n }\n\n // call native function to trigger default behavior\n if (canContinue && node[type]) {\n // prevent re-triggering of the current event\n util$eventhandler$$default.skip = type;\n\n util$index$$safeCall(node, type);\n\n util$eventhandler$$default.skip = null;\n }\n\n return canContinue;\n }\n }, null, function() {return RETURN_TRUE});\n\n var util$accessorhooks$$hooks = {get: {}, set: {}};\n\n // fix camel cased attributes\n \"tabIndex readOnly maxLength cellSpacing cellPadding rowSpan colSpan useMap frameBorder contentEditable\".split(\" \").forEach(function(key) {\n util$accessorhooks$$hooks.get[ key.toLowerCase() ] = function(node) {return node[key]};\n });\n\n // style hook\n util$accessorhooks$$hooks.get.style = function(node) {return node.style.cssText};\n util$accessorhooks$$hooks.set.style = function(node, value) { node.style.cssText = value };\n\n // title hook for DOM\n util$accessorhooks$$hooks.get.title = function(node) {\n var doc = node.ownerDocument;\n\n return (node === doc.documentElement ? doc : node).title;\n };\n\n util$accessorhooks$$hooks.set.title = function(node, value) {\n var doc = node.ownerDocument;\n\n (node === doc.documentElement ? doc : node).title = value;\n };\n\n // some browsers don't recognize input[type=email] etc.\n util$accessorhooks$$hooks.get.type = function(node) {return node.getAttribute(\"type\") || node.type};\n if (JSCRIPT_VERSION < 9) {\n // IE8 has innerText but not textContent\n util$accessorhooks$$hooks.get.textContent = function(node) {return node.innerText};\n util$accessorhooks$$hooks.set.textContent = function(node, value) { node.innerText = value };\n\n // IE8 sometimes breaks on innerHTML\n util$accessorhooks$$hooks.set.innerHTML = function(node, value) {\n try {\n node.innerHTML = value;\n } catch (err) {\n var sandbox = node.ownerDocument.createElement(\"div\"), it;\n\n node.innerText = \"\"; // cleanup inner content\n sandbox.innerHTML = value;\n\n while (it = sandbox.firstChild) {\n node.appendChild(it);\n }\n }\n };\n }\n\n var util$accessorhooks$$default = util$accessorhooks$$hooks;\n\n var element$get$$reUpper = /[A-Z]/g,\n element$get$$readPrivateProperty = function(node, key) {\n // convert from camel case to dash-separated value\n key = key.replace(element$get$$reUpper, function(l) {return \"-\" + l.toLowerCase()});\n\n var value = node.getAttribute(\"data-\" + key);\n\n if (value != null) {\n // try to recognize and parse object notation syntax\n if (value[0] === \"{\" && value[value.length - 1] === \"}\") {\n try {\n value = JSON.parse(value);\n } catch (err) {\n // just return the value itself\n }\n }\n }\n\n return value;\n };\n\n util$index$$register({\n get: function(name) {var this$0 = this;\n var node = this[0],\n hook = util$accessorhooks$$default.get[name];\n\n if (hook) return hook(node, name);\n\n if (typeof name === \"string\") {\n if (name in node) {\n return node[name];\n } else if (name[0] !== \"_\") {\n return node.getAttribute(name);\n } else {\n var key = name.slice(1),\n data = this._;\n\n if (!(key in data)) {\n data[key] = element$get$$readPrivateProperty(node, key);\n }\n\n return data[key];\n }\n } else if (util$index$$isArray(name)) {\n return name.reduce(function(memo, key) {\n return (memo[key] = this$0.get(key), memo);\n }, {});\n } else if (name === void 0) {\n // TODO: remove this line in future\n return this.value();\n } else {\n throw new MethodError(\"get\", arguments);\n }\n }\n }, null, function() {return function() {}});\n\n util$index$$register({\n after: [\"afterend\", true, function(node, relatedNode) {\n node.parentNode.insertBefore(relatedNode, node.nextSibling);\n }],\n\n before: [\"beforebegin\", true, function(node, relatedNode) {\n node.parentNode.insertBefore(relatedNode, node);\n }],\n\n prepend: [\"afterbegin\", false, function(node, relatedNode) {\n node.insertBefore(relatedNode, node.firstChild);\n }],\n\n append: [\"beforeend\", false, function(node, relatedNode) {\n node.appendChild(relatedNode);\n }],\n\n replace: [\"\", true, function(node, relatedNode) {\n node.parentNode.replaceChild(relatedNode, node);\n }],\n\n remove: [\"\", true, function(node) {\n node.parentNode.removeChild(node);\n }]\n }, function(methodName, fastStrategy, requiresParent, strategy) {return function() {var contents = SLICE$0.call(arguments, 0);var this$0 = this;\n var node = this[0];\n\n if (requiresParent && !node.parentNode) return this;\n\n // the idea of the algorithm is to construct HTML string\n // when possible or use document fragment as a fallback to\n // invoke manipulation using a single method call\n var fragment = fastStrategy ? \"\" : node.ownerDocument.createDocumentFragment();\n\n contents.forEach(function(content) {\n if (typeof content === \"function\") {\n content = content(this$0);\n }\n\n if (typeof content === \"string\") {\n if (typeof fragment === \"string\") {\n fragment += content.trim();\n } else {\n content = DOM.createAll(content);\n }\n } else if (content instanceof $Element) {\n content = [ content ];\n }\n\n if (util$index$$isArray(content)) {\n if (typeof fragment === \"string\") {\n // append existing string to fragment\n content = DOM.createAll(fragment).concat(content);\n // fallback to document fragment strategy\n fragment = node.ownerDocument.createDocumentFragment();\n }\n\n content.forEach(function(el) {\n fragment.appendChild(el[0]);\n });\n }\n });\n\n if (typeof fragment === \"string\") {\n node.insertAdjacentHTML(fastStrategy, fragment);\n } else {\n strategy(node, fragment);\n }\n\n return this;\n }}, function() {return RETURN_THIS});\n\n util$index$$register({\n map: function(fn, context) {\n if (typeof fn !== \"function\") {\n throw new MethodError(\"map\", arguments);\n }\n\n return [ fn.call(context, this) ];\n }\n }, null, function() {return function() {return []}});\n\n var util$selectorhooks$$isHidden = function(node) {\n var computed = util$index$$computeStyle(node);\n\n return computed.visibility === \"hidden\" || computed.display === \"none\";\n };\n\n var util$selectorhooks$$default = {\n \":focus\": function(node) {return node === node.ownerDocument.activeElement},\n\n \":visible\": function(node) {return !util$selectorhooks$$isHidden(node)},\n\n \":hidden\": util$selectorhooks$$isHidden\n };\n\n util$index$$register({\n matches: function(selector) {\n if (!selector || typeof selector !== \"string\") throw new MethodError(\"matches\", arguments);\n\n var checker = util$selectorhooks$$default[selector] || util$selectormatcher$$default(selector);\n\n return !!checker(this[0]);\n }\n }, null, function() {return RETURN_FALSE});\n\n util$index$$register({\n off: function(type, selector, callback) {\n if (typeof type !== \"string\") throw new MethodError(\"off\", arguments);\n\n if (callback === void 0) {\n callback = selector;\n selector = void 0;\n }\n\n var node = this[0];\n\n this._[\"handler2001004\"] = this._[\"handler2001004\"].filter(function(handler) {\n var skip = type !== handler.type;\n\n skip = skip || selector && selector !== handler.selector;\n skip = skip || callback && callback !== handler.callback;\n\n if (skip) return true;\n\n type = handler._type || handler.type;\n if (JSCRIPT_VERSION < 9) {\n node.detachEvent(\"on\" + type, handler);\n } else {\n node.removeEventListener(type, handler, !!handler.capturing);\n }\n });\n\n return this;\n }\n }, null, function() {return RETURN_THIS});\n\n util$index$$register({\n offset: function() {\n var node = this[0],\n docEl = node.ownerDocument.documentElement,\n clientTop = docEl.clientTop,\n clientLeft = docEl.clientLeft,\n scrollTop = WINDOW.pageYOffset || docEl.scrollTop,\n scrollLeft = WINDOW.pageXOffset || docEl.scrollLeft,\n boundingRect = node.getBoundingClientRect();\n\n return {\n top: boundingRect.top + scrollTop - clientTop,\n left: boundingRect.left + scrollLeft - clientLeft,\n right: boundingRect.right + scrollLeft - clientLeft,\n bottom: boundingRect.bottom + scrollTop - clientTop,\n width: boundingRect.right - boundingRect.left,\n height: boundingRect.bottom - boundingRect.top\n };\n }\n }, null, function() {return function() {\n return { top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 };\n }});\n\n util$index$$register({\n on: false,\n\n once: true\n\n }, function(method, single) {return function(type, selector, args, callback) {var this$0 = this;\n if (typeof type === \"string\") {\n if (typeof args === \"function\") {\n callback = args;\n\n if (typeof selector === \"string\") {\n args = null;\n } else {\n args = selector;\n selector = null;\n }\n }\n\n if (typeof selector === \"function\") {\n callback = selector;\n selector = null;\n args = null;\n }\n\n if (typeof callback !== \"function\") {\n throw new MethodError(method, arguments);\n }\n\n var node = this[0],\n handler = util$eventhandler$$default(type, selector, callback, args, this, single);\n\n if (JSCRIPT_VERSION < 9) {\n node.attachEvent(\"on\" + (handler._type || type), handler);\n } else {\n node.addEventListener(handler._type || type, handler, !!handler.capturing);\n }\n // store event entry\n this._[\"handler2001004\"].push(handler);\n } else if (typeof type === \"object\") {\n if (util$index$$isArray(type)) {\n type.forEach(function(name) { this$0[method](name, selector, args, callback) });\n } else {\n util$index$$keys(type).forEach(function(name) { this$0[method](name, type[name]) });\n }\n } else {\n throw new MethodError(method, arguments);\n }\n\n return this;\n }}, function() {return RETURN_THIS});\n\n util$index$$register({\n set: function(name, value) {var this$0 = this;\n var node = this[0];\n\n var hook = util$accessorhooks$$default.set[name],\n watchers = this._[\"watcher2001004\"][name],\n oldValue;\n\n if (watchers) {\n oldValue = this.get(name);\n }\n\n if (arguments.length === 1 && typeof name !== \"object\") {\n // TODO: remove this check in future\n return this.value(name);\n }\n\n if (typeof name === \"string\") {\n if (name[0] === \"_\") {\n this._[name.slice(1)] = value;\n } else {\n if (typeof value === \"function\") {\n value = value(this);\n }\n\n if (hook) {\n hook(node, value);\n } else if (value == null) {\n node.removeAttribute(name);\n } else if (name in node) {\n node[name] = value;\n } else {\n node.setAttribute(name, value);\n }\n if (JSCRIPT_VERSION < 9 || LEGACY_ANDROID) {\n // always trigger reflow manually for IE8 and legacy Android\n node.className = node.className;\n }\n }\n } else if (util$index$$isArray(name)) {\n name.forEach(function(key) { this$0.set(key, value) });\n } else if (typeof name === \"object\") {\n util$index$$keys(name).forEach(function(key) { this$0.set(key, name[key]) });\n } else {\n throw new MethodError(\"set\", arguments);\n }\n\n if (watchers && oldValue !== value) {\n watchers.forEach(function(w) {\n util$index$$safeCall(this$0, w, value, oldValue);\n });\n }\n\n return this;\n }\n }, null, function() {return RETURN_THIS});\n\n util$index$$register({\n next: \"nextSibling\",\n\n prev: \"previousSibling\",\n\n nextAll: \"nextSibling\",\n\n prevAll: \"previousSibling\",\n\n closest: \"parentNode\"\n\n }, function(methodName, propertyName) {return function(selector) {\n if (selector && typeof selector !== \"string\") throw new MethodError(methodName, arguments);\n\n var all = methodName.slice(-3) === \"All\",\n matcher = util$selectormatcher$$default(selector),\n nodes = all ? [] : null,\n it = this[0];\n\n // method closest starts traversing from the element itself\n // except no selector was specified where it returns parent\n if (!matcher || methodName !== \"closest\") {\n it = it[propertyName];\n }\n\n for (; it; it = it[propertyName]) {\n if (it.nodeType === 1 && (!matcher || matcher(it))) {\n if (!all) break;\n\n nodes.push(it);\n }\n }\n\n return all ? util$index$$map.call(nodes, $Element) : $Element(it);\n }}, function(methodName) {return function() {return methodName.slice(-3) === \"All\" ? [] : new $NullElement()}});\n\n util$index$$register({\n value: function(content) {\n var node = this[0], name;\n\n if (content === void 0) {\n switch (node.tagName) {\n case \"SELECT\":\n return ~node.selectedIndex ? node.options[ node.selectedIndex ].value : \"\";\n\n case \"OPTION\":\n name = node.hasAttribute(\"value\") ? \"value\" : \"text\";\n break;\n\n default:\n name = node.type && \"value\" in node ? \"value\" : \"innerHTML\";\n }\n\n return node[name];\n } else if ((content instanceof $Element) || Array.isArray(content)) {\n return this.set(\"\").append(content);\n }\n\n if (typeof content === \"function\") {\n content = content(this);\n }\n\n if (typeof content !== \"string\") {\n content = content == null ? \"\" : String(content);\n }\n\n switch (node.tagName) {\n case \"INPUT\":\n case \"OPTION\":\n name = \"value\";\n break;\n\n case \"SELECT\":\n // selectbox has special case\n if (util$index$$every.call(node.options, function(o) {return !(o.selected = o.value === content)})) {\n node.selectedIndex = -1;\n }\n // return earlier\n return this;\n\n case \"TEXTAREA\":\n // for IE use innerText for textareabecause it doesn't trigger onpropertychange\n name = JSCRIPT_VERSION < 9 ? \"innerText\" : \"value\";\n break;\n\n default:\n name = \"innerHTML\";\n }\n\n return this.set(name, content);\n }\n }, null, function() {return function() {\n if (arguments.length) return this;\n }});\n\n var util$animationhandler$$TRANSITION_PROPS = [\"timing-function\", \"property\", \"duration\", \"delay\"].map(function(prop) {return \"transition-\" + prop}),\n util$animationhandler$$parseTimeValue = function(value) {\n var result = parseFloat(value) || 0;\n // if duration is in seconds, then multiple result value by 1000\n return !result || value.slice(-2) === \"ms\" ? result : result * 1000;\n },\n util$animationhandler$$calcTransitionDuration = function(transitionValues) {\n var delays = transitionValues[3],\n durations = transitionValues[2];\n\n return Math.max.apply(Math, durations.map(function(value, index) {\n return util$animationhandler$$parseTimeValue(value) + (util$animationhandler$$parseTimeValue(delays[index]) || 0);\n }));\n };\n\n // initialize hooks for properties used below\n util$animationhandler$$TRANSITION_PROPS.concat(\"animation-duration\").forEach(function(prop) { util$stylehooks$$default.find(prop, HTML.style) });\n\n var util$animationhandler$$default = function(node, computed, animationName, hiding, done) {\n var rules, duration;\n\n // Legacy Android is usually slow and has lots of bugs in the\n // CSS animations implementation, so skip any animations for it\n if (LEGACY_ANDROID || JSCRIPT_VERSION < 10) return null;\n\n if (animationName) {\n duration = util$animationhandler$$parseTimeValue(computed[util$stylehooks$$default.get[\"animation-duration\"]]);\n\n if (!duration) return; // skip animations with zero duration\n\n rules = [\n WEBKIT_PREFIX + \"animation-direction:\" + (hiding ? \"normal\" : \"reverse\"),\n WEBKIT_PREFIX + \"animation-name:\" + animationName,\n // for CSS3 animation element should always be visible\n \"visibility:inherit\"\n ];\n } else {\n var transitionValues = util$animationhandler$$TRANSITION_PROPS.map(function(prop, index) {\n // have to use regexp to split transition-timing-function value\n return computed[util$stylehooks$$default.get[prop]].split(index ? \", \" : /, (?!\\d)/);\n });\n\n duration = util$animationhandler$$calcTransitionDuration(transitionValues);\n\n if (!duration) return; // skip transitions with zero duration\n\n if (transitionValues[1].indexOf(\"all\") < 0) {\n // try to find existing or use 0s length or make a new visibility transition\n var visibilityIndex = transitionValues[1].indexOf(\"visibility\");\n\n if (visibilityIndex < 0) visibilityIndex = transitionValues[2].indexOf(\"0s\");\n if (visibilityIndex < 0) visibilityIndex = transitionValues[1].length;\n\n transitionValues[0][visibilityIndex] = \"linear\";\n transitionValues[1][visibilityIndex] = \"visibility\";\n transitionValues[hiding ? 2 : 3][visibilityIndex] = \"0s\";\n transitionValues[hiding ? 3 : 2][visibilityIndex] = duration + \"ms\";\n }\n\n rules = transitionValues.map(function(props, index) {\n // fill holes in a trasition property value\n for (var i = 0, n = props.length; i < n; ++i) {\n props[i] = props[i] || props[i - 1] || \"initial\";\n }\n\n return WEBKIT_PREFIX + util$animationhandler$$TRANSITION_PROPS[index] + \":\" + props.join(\", \");\n });\n\n rules.push(\n // append target visibility value to trigger transition\n \"visibility:\" + (hiding ? \"hidden\" : \"inherit\"),\n // use willChange to improve performance in modern browsers:\n // http://dev.opera.com/articles/css-will-change-property/\n \"will-change:\" + transitionValues[1].join(\", \")\n );\n }\n\n return {\n cssText: rules.join(\";\"),\n initialCssText: node.style.cssText,\n // this function used to trigger callback\n handleEvent: function(e) {\n if (e.target === node) {\n if (animationName) {\n if (e.animationName !== animationName) return;\n } else {\n if (e.propertyName !== \"visibility\") return;\n }\n\n e.stopPropagation(); // this is an internal event\n\n done();\n }\n }\n };\n };\n\n var element$visibility$$TRANSITION_EVENT_TYPE = WEBKIT_PREFIX ? \"webkitTransitionEnd\" : \"transitionend\",\n element$visibility$$ANIMATION_EVENT_TYPE = WEBKIT_PREFIX ? \"webkitAnimationEnd\" : \"animationend\";\n\n util$index$$register({\n show: false,\n\n hide: true,\n\n toggle: null\n\n }, function(methodName, condition) {return function(animationName, callback) {var this$0 = this;\n if (typeof animationName !== \"string\") {\n callback = animationName;\n animationName = null;\n }\n\n if (callback && typeof callback !== \"function\") {\n throw new MethodError(methodName, arguments);\n }\n\n var node = this[0],\n style = node.style,\n computed = util$index$$computeStyle(node),\n hiding = condition,\n frameId = this._[\"frame2001004\"],\n done = function() {\n if (animationHandler) {\n node.removeEventListener(eventType, animationHandler, true);\n // clear inline style adjustments were made previously\n style.cssText = animationHandler.initialCssText;\n } else {\n this$0.set(\"aria-hidden\", String(hiding));\n }\n // always update element visibility property: use value \"inherit\"\n // to respect parent container visibility. Should be a separate\n // from setting cssText because of Opera 12 quirks\n style.visibility = hiding ? \"hidden\" : \"inherit\";\n\n this$0._[\"frame2001004\"] = null;\n\n if (callback) callback(this$0);\n };\n\n if (typeof hiding !== \"boolean\") {\n hiding = computed.visibility !== \"hidden\";\n }\n\n // cancel previous frame if it exists\n if (frameId) DOM.cancelFrame(frameId);\n\n if (!node.ownerDocument.documentElement.contains(node)) {\n // apply attribute/visibility syncronously for detached DOM elements\n // because browser returns zero animation/transition duration for them\n done();\n } else {\n var animationHandler = util$animationhandler$$default(node, computed, animationName, hiding, done),\n eventType = animationName ? element$visibility$$ANIMATION_EVENT_TYPE : element$visibility$$TRANSITION_EVENT_TYPE;\n // use requestAnimationFrame to avoid animation quirks for\n // new elements inserted into the DOM\n // http://christianheilmann.com/2013/09/19/quicky-fading-in-a-newly-created-element-using-css/\n this._[\"frame2001004\"] = DOM.requestFrame(!animationHandler ? done : function() {\n node.addEventListener(eventType, animationHandler, true);\n // update modified style rules\n style.cssText = animationHandler.initialCssText + animationHandler.cssText;\n // trigger CSS3 transition / animation\n this$0.set(\"aria-hidden\", String(hiding));\n });\n }\n\n return this;\n }}, function() {return RETURN_THIS});\n\n util$index$$register({\n watch: function(name, callback) {\n var watchers = this._[\"watcher2001004\"];\n\n if (!watchers[name]) watchers[name] = [];\n\n watchers[name].push(callback);\n\n return this;\n },\n\n unwatch: function(name, callback) {\n var watchers = this._[\"watcher2001004\"];\n\n if (watchers[name]) {\n watchers[name] = watchers[name].filter(function(w) {return w !== callback});\n }\n\n return this;\n }\n }, null, function() {return RETURN_THIS});\n\n DOM.constructor = function(node) {\n var nodeType = node && node.nodeType,\n ctr = nodeType === 9 ? $Document : $Element;\n // filter non elements like text nodes, comments etc.\n return ctr(nodeType === 1 || nodeType === 9 ? node : null);\n };\n\n var global$format$$reVar = /\\{([\\w\\-]+)\\}/g;\n\n DOM.format = function(tmpl, varMap) {\n if (typeof tmpl !== \"string\") tmpl = String(tmpl);\n\n if (!varMap || typeof varMap !== \"object\") varMap = {};\n\n return tmpl.replace(global$format$$reVar, function(x, name, index) {\n if (name in varMap) {\n x = varMap[name];\n\n if (typeof x === \"function\") x = x(index);\n\n x = String(x);\n }\n\n return x;\n });\n };\n\n var global$frame$$raf = WINDOW.requestAnimationFrame,\n global$frame$$craf = WINDOW.cancelAnimationFrame,\n global$frame$$lastTime = 0;\n\n if (!(global$frame$$raf && global$frame$$craf)) {\n VENDOR_PREFIXES.forEach(function(prefix) {\n prefix = prefix.toLowerCase();\n\n global$frame$$raf = global$frame$$raf || WINDOW[prefix + \"RequestAnimationFrame\"];\n global$frame$$craf = global$frame$$craf || WINDOW[prefix + \"CancelAnimationFrame\"];\n });\n }\n\n DOM.requestFrame = function(callback) {\n if (global$frame$$raf) {\n return global$frame$$raf.call(WINDOW, callback);\n } else {\n // use idea from Erik Möller's polyfill:\n // http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n var currTime = Date.now();\n var timeToCall = Math.max(0, 16 - (currTime - global$frame$$lastTime));\n\n global$frame$$lastTime = currTime + timeToCall;\n\n return WINDOW.setTimeout(function() { callback(currTime + timeToCall) }, timeToCall);\n }\n };\n\n DOM.cancelFrame = function(frameId) {\n if (global$frame$$craf) {\n global$frame$$craf.call(WINDOW, frameId);\n } else {\n WINDOW.clearTimeout(frameId);\n }\n };\n\n var exports$$_DOM = WINDOW.DOM;\n\n DOM.noConflict = function() {\n if (WINDOW.DOM === DOM) {\n WINDOW.DOM = exports$$_DOM;\n }\n\n return DOM;\n };\n\n WINDOW.DOM = DOM;\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./wwwroot/lib/better-dom/dist/better-dom.js\n// module id = 1570\n// module chunks = 7","/**\n * better-form-validation: Form validation using better-dom\n * @version 1.5.0 Fri, 14 Oct 2016 08:26:37 GMT\n * @link https://github.com/chemerisuk/better-form-validation\n * @copyright 2016 Maksim Chemerisuk\n * @license MIT\n */\n(function (DOM, VALIDITY_KEY, I18N_MISMATCH, undefined) {\n \"use strict\";\n\n var patterns = {};\n var invalidTypes = [null, \"file\", \"image\", \"submit\", \"fieldset\", \"reset\", \"button\", \"hidden\"];\n var isValidInput = function (el) {\n return invalidTypes.indexOf(el.get(\"type\")) < 0;\n };\n\n patterns.required = /\\S/;\n patterns.number = /^-?[0-9]*(\\.[0-9]+)?$/;\n patterns.email = /^([a-z0-9_\\.\\-\\+]+)@([\\da-z\\.\\-]+)\\.([a-z\\.]{2,6})$/i;\n patterns.url = /^(https?:\\/\\/)?[\\da-z\\.\\-]+\\.[a-z\\.]{2,6}[#&+_\\?\\/\\w \\.\\-=]*$/i;\n patterns.tel = /^((\\+\\d{1,3}(-| )?\\(?\\d\\)?(-| )?\\d{1,5})|(\\(?\\d{2,6}\\)?))(-| )?(\\d{3,4})(-| )?(\\d{4})(( x| ext)\\d{1,5}){0,1}$/;\n /* istanbul ignore next */\n var getBooleanProp = function (name) {\n return function (attrValue) {\n attrValue = String(attrValue).toLowerCase();\n\n return attrValue === \"\" || attrValue === name.toLowerCase();\n };\n },\n setBooleanProp = function () {\n return function (propValue) {\n return propValue ? \"\" : null;\n };\n };\n\n function Validity(errors) {\n var _this = this;\n\n this.valid = true;\n\n if (!errors || typeof errors !== \"object\") return;\n\n Object.keys(errors).forEach(function (key) {\n var validity = errors[key];\n\n _this[key] = validity;\n\n if (validity instanceof Validity) {\n _this.valid = _this.valid && validity.valid;\n } else {\n _this.valid = _this.valid && !validity.length;\n }\n });\n }\n\n DOM.extend(\"[name]\", isValidInput, {\n constructor: function () {\n var _this2 = this;\n\n var type = this.get(\"type\");\n\n if (type !== \"checkbox\" && type !== \"radio\") {\n this.on(\"input\", this._checkValidity);\n }\n\n this.on(\"change\", this.reportValidity);\n /* istanbul ignore if */\n if (typeof this.get(\"required\") !== \"boolean\") {\n [\"required\", \"noValidate\"].forEach(function (propName) {\n _this2.define(propName, getBooleanProp(propName), setBooleanProp(propName));\n });\n }\n },\n validity: function (errors) {\n var _this3 = this;\n\n if (errors !== undefined) {\n this.set(VALIDITY_KEY, errors);\n } else {\n var form = DOM.constructor(this.get(\"form\"));\n\n if (this.get(\"novalidate\") != null || form.get(\"novalidate\") != null) {\n return new Validity();\n }\n }\n\n errors = this.get(VALIDITY_KEY);\n\n if (typeof errors === \"function\") errors = errors.call(this);\n if (typeof errors === \"string\") errors = [errors];\n\n errors = errors || [];\n\n var type = this.get(\"type\"),\n required = this.get(\"required\"),\n regexp,\n pattern,\n msg;\n\n if (!errors.length) {\n switch (type) {\n case \"radio\":\n if (!required) break;\n\n var elements = this.closest(\"form\").findAll(\"[name]\"),\n hasCheckedRadio = function (el) {\n return el.get(\"name\") === _this3.get(\"name\") && el.get(\"checked\");\n };\n\n if (elements.some(hasCheckedRadio)) break;\n /* falls through */\n case \"checkbox\":\n if (required && !this.get(\"checked\")) {\n errors.push(\"field is required\");\n }\n break;\n\n default:\n var value = this.get(\"value\");\n // pattern/type validations ignore blank values\n if (value) {\n pattern = this.get(\"pattern\");\n\n if (pattern) {\n // make the pattern string\n pattern = \"^(?:\" + pattern + \")$\";\n\n if (pattern in patterns) {\n regexp = patterns[pattern];\n } else {\n regexp = new RegExp(pattern);\n // cache regexp internally\n patterns[pattern] = regexp;\n }\n\n msg = this.get(\"title\") || \"illegal value format\";\n } else {\n regexp = patterns[type];\n msg = I18N_MISMATCH[type];\n }\n }\n\n if (required && !regexp) {\n regexp = patterns.required;\n msg = \"field is required\";\n }\n\n if (regexp && !regexp.test(value)) {\n errors.push(msg);\n }\n }\n }\n\n return new Validity(errors);\n },\n _checkValidity: function () {\n var value = this.get(),\n maxlength = this.get(\"maxlength\");\n\n if (maxlength >= 0 && value.length > maxlength) {\n this.set(value.substr(0, maxlength));\n }\n\n if (this.get(\"aria-invalid\")) {\n this.reportValidity();\n }\n },\n reportValidity: function () {\n var form = DOM.constructor(this.get(\"form\"));\n\n if (this.get(\"novalidate\") != null || form.get(\"novalidate\") != null) {\n return new Validity();\n }\n\n var validity = this.validity();\n\n this.set(\"aria-invalid\", !validity.valid);\n\n if (validity.valid) {\n this.fire(\"validity:ok\");\n } else {\n this.fire(\"validity:fail\", validity);\n }\n\n return validity;\n }\n });\n\n DOM.extend(\"form\", {\n constructor: function () {\n var _this4 = this;\n\n /* istanbul ignore if */\n if (typeof this.get(\"noValidate\") !== \"boolean\") {\n this.define(\"noValidate\", getBooleanProp(\"noValidate\"), setBooleanProp(\"noValidate\"));\n } else {\n (function () {\n var timeoutId = void 0;\n\n _this4.on(\"invalid\", function () {\n if (!timeoutId) {\n timeoutId = setTimeout(function () {\n // trigger submit event manually\n _this4.fire(\"submit\");\n\n timeoutId = null;\n });\n }\n\n return false; // don't show tooltips\n });\n })();\n }\n\n this.on(\"submit\", this._submitForm).on(\"reset\", this._resetForm);\n },\n validity: function (errors) {\n if (errors !== undefined) {\n this.set(VALIDITY_KEY, errors);\n } else if (this.get(\"novalidate\") != null) {\n return new Validity();\n }\n\n errors = this.get(VALIDITY_KEY);\n\n if (typeof errors === \"function\") errors = errors.call(this);\n if (typeof errors === \"string\") errors = [errors];\n\n errors = errors || [];\n\n this.findAll(\"[name]\").filter(isValidInput).forEach(function (el) {\n var name = el.get(\"name\");\n // hidden elements might not have validity method yet\n if (!(name in errors) && el.validity) {\n errors[name] = el.validity();\n }\n });\n\n return new Validity(errors);\n },\n _submitForm: function () {\n var validity = this.validity();\n\n if (!validity.valid) {\n // fire event on form level\n this.fire(\"validity:fail\", validity);\n\n return false;\n }\n },\n _resetForm: function () {\n this.findAll(\"[name]\").forEach(function (el) {\n el.set(\"aria-invalid\", null).popover().hide();\n });\n }\n });\n\n DOM.on(\"validity:ok\", [\"target\", \"defaultPrevented\"], function (target, cancel) {\n if (!cancel) target.popover().hide();\n });\n\n DOM.on(\"validity:fail\", [1, 2, \"target\", \"defaultPrevented\"], function (errors, batch, target, cancel) {\n if (cancel) return;\n\n if (target.matches(\"form\")) {\n Object.keys(errors).forEach(function (name) {\n var validity = errors[name];\n\n if (validity instanceof Validity) {\n if (validity.valid) return;\n } else {\n if (!validity.length) return;\n }\n\n target.find(\"[name=\\\"\" + name + \"\\\"]\").set(\"aria-invalid\", true).fire(\"validity:fail\", validity, true);\n });\n } else {\n var popover = target.popover(),\n delay = 0;\n\n // hiding the tooltip to show later with a small delay\n if (!popover.hasClass(\"better-validity-tooltip\")) {\n popover = target.popover(null, \"left\", \"bottom\").addClass(\"better-validity-tooltip\").on(\"click\", function () {\n target.fire(\"focus\");\n // hide with delay to fix issue in IE10-11\n // which trigger input event on focus\n setTimeout(function () {\n popover.hide();\n }, delay);\n });\n }\n // set error message\n popover.set(\"innerHTML\", DOM.__(errors[0]));\n\n if (batch) {\n // hide popover and show it later with delay\n delay = popover.hide().css(\"transition-duration\");\n // parse animation duration value\n delay = delay && parseFloat(delay) * (delay.slice(-2) === \"ms\" ? 1 : 1000);\n }\n\n // use a small delay if several tooltips are going to be displayed\n setTimeout(function () {\n popover.show();\n }, delay || 0);\n }\n });\n})(window.DOM, \"_validity\", {\n email: \"should be a valid email\",\n url: \"should be a valid URL\",\n tel: \"should be a valid phone number\",\n number: \"should be a numeric value\"\n});\nDOM.importStyles(\"@media screen\", \".better-validity-tooltip{cursor:pointer;color:#ff3329;background:#FFF;font-weight:700;text-transform:uppercase;font-size:.75em;line-height:1;padding:.5em;border:1px solid;border-radius:.25em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.9;-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px);-webkit-transition:.3s ease-out;transition:.3s ease-out;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform-origin:1em 0;-ms-transform-origin:1em 0;transform-origin:1em 0}.better-validity-tooltip[aria-hidden=true]{opacity:0;-webkit-transform:translateY(1em);-ms-transform:translateY(1em);transform:translateY(1em)}.better-validity-tooltip:before,.better-validity-tooltip:after{content:'';width:0;height:0;display:block;position:absolute;bottom:100%}.better-validity-tooltip:before{border:6px solid transparent;border-bottom-color:inherit}.better-validity-tooltip:after{border:5px solid transparent;border-bottom-color:#FFF;margin-left:1px}\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./wwwroot/lib/better-form-validation/dist/better-form-validation.js\n// module id = 1571\n// module chunks = 7","/**\n * better-i18n-plugin: Internationalization plugin for better-dom\n * @version 2.0.1 Wed, 30 Aug 2017 15:49:56 GMT\n * @link https://github.com/chemerisuk/better-i18n-plugin\n * @copyright 2017 Maksim Chemerisuk\n * @license MIT\n */\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n(function (DOM) {\n \"use strict\";\n\n var strings = [],\n languages = [],\n reParam = /%s/g,\n HTML = document.documentElement;\n\n function formatKey(key, args) {\n var start = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2];\n\n if (args) {\n return key.replace(reParam, function (str) {\n return args[start++] != null ? args[start - 1] : str;\n });\n } else {\n return key;\n }\n }\n\n var Entry = function () {\n function Entry(key, args) {\n var _this = this;\n\n _classCallCheck(this, Entry);\n\n languages.forEach(function (lang, index) {\n var value = strings[index][key];\n\n if (value) {\n _this[lang] = formatKey(value, args);\n }\n });\n\n this._ = formatKey(key, args);\n }\n\n Entry.prototype.toString = function toString() {\n var _this2 = this;\n\n // \"_\" key should always be the last one\n return Object.keys(this).sort(function (key) {\n return key === \"_\" ? 1 : -1;\n }).map(function (key) {\n return \"\" + _this2[key] + \"\";\n }).join(\"\");\n };\n\n Entry.prototype.toLocaleString = function toLocaleString(lang) {\n return this[lang || HTML.lang] || this._;\n };\n\n Entry.prototype.valueOf = function valueOf() {\n return \"\" + this.toString() + \"\";\n };\n\n return Entry;\n }();\n\n DOM.importStrings = function (lang, key, value) {\n if (typeof lang !== \"string\") {\n throw new TypeError(\"lang argument must be a string\");\n }\n\n var langIndex = languages.indexOf(lang),\n stringsMap = strings[langIndex];\n\n if (langIndex === -1) {\n langIndex = languages.push(lang) - 1;\n strings[langIndex] = stringsMap = {};\n\n // add global rules to to able to switch to new language\n\n // by default localized strings should be hidden\n DOM.importStyles(\"span[lang=\\\"\" + lang + \"\\\"]\", \"display:none\");\n // ... except current page language is `lang`\n DOM.importStyles(\":lang(\" + lang + \") > span[lang=\\\"\" + lang + \"\\\"]\", \"display:inline !important\");\n // ... in such case hide default value too\n DOM.importStyles(\":lang(\" + lang + \") > span[lang=\\\"\" + lang + \"\\\"] ~ span[lang]\", \"display:none\");\n }\n\n if (typeof key === \"string\") {\n stringsMap[key] = value;\n } else {\n Object.keys(key).forEach(function (x) {\n stringsMap[x] = key[x];\n });\n }\n };\n\n DOM.__ = function (key) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (Array.isArray(key)) {\n return key.map(function (key) {\n return new Entry(key, args);\n });\n } else {\n return new Entry(key, args);\n }\n };\n\n DOM.i18nLiteral = function (parts) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return new Entry(parts.join(\"%s\"), args).toLocaleString();\n };\n})(window.DOM);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./wwwroot/lib/better-i18n-plugin/dist/better-i18n-plugin.js\n// module id = 1572\n// module chunks = 7","/**\n * better-popover-plugin: Popover plugin for better-dom\n * @version 0.5.2 Mon, 02 Feb 2015 21:58:13 GMT\n * @link https://github.com/chemerisuk/better-popover-plugin\n * @copyright 2014 Maksim Chemerisuk\n * @license MIT\n */\n(function(DOM) {\n DOM.extend(\"*\", {\n popover: function(content, hpos, vpos) {\n var popover = this.get(\"_popover\");\n\n if (!popover) {\n popover = DOM.create(\"div.better-popover-plugin\").css(\"visibility\", \"hidden\");\n\n this.before(popover);\n\n popover.css({\n // MUST set position:absolute for correct offset calculation\n \"position\": \"absolute\",\n \"z-index\": 1 + (this.css(\"z-index\") | 0)\n });\n\n this.set(\"_popover\", popover);\n }\n\n if (content != null) {\n popover.value(content).show();\n }\n\n if (typeof hpos === \"string\") {\n // position is \"center\" by default\n hpos = hpos || \"center\";\n vpos = vpos || \"center\";\n\n var offset = this.offset();\n var popoverOffset = popover.css(\"margin\", \"0\").offset();\n\n popover.css({\n \"margin-left\": calcLeftMargin(hpos, offset, popoverOffset),\n \"margin-top\": calcTopMargin(vpos, offset, popoverOffset)\n });\n }\n\n return popover;\n }\n });\n\n function calcLeftMargin(pos, offset, popoverOffset) {\n switch(pos) {\n case \"left\":\n return offset.left - popoverOffset.left;\n\n case \"center\":\n return offset.left - popoverOffset.left + (offset.width - popoverOffset.width) / 2;\n\n case \"right\":\n return offset.right - popoverOffset.left - popoverOffset.width;\n }\n }\n\n function calcTopMargin(pos, offset, popoverOffset) {\n switch(pos) {\n case \"top\":\n return offset.top - popoverOffset.bottom;\n\n case \"center\":\n return offset.top - popoverOffset.top + (offset.height - popoverOffset.height) / 2;\n\n case \"bottom\":\n return offset.bottom - popoverOffset.top;\n }\n }\n}(window.DOM));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./wwwroot/lib/better-popover-plugin/dist/better-popover-plugin.js\n// module id = 1573\n// module chunks = 7"],"sourceRoot":""}