{"version":3,"file":"/js/app.min.js","mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA,oEAAoE;;AAEpE;AACA;AACA;;AAEA,MAAM;AACN;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;AACA;;AAEA;;AAEA,4BAA4B,yCAAyC,cAAc;;AAEnF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,qDAAqD;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,GAAG;;;AAGH;AACA;AACA,2CAA2C,IAAI;AAC/C;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iFAAiF,IAAI;AACrF,mFAAmF,IAAI;AACvF,iFAAiF,IAAI;AACrF,kFAAkF,IAAI;AACtF,oFAAoF,IAAI;AACxF,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kEAAkE;AAClE;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;;AAEP;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,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mDAAmD;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA,mDAAmD,cAAc;AACjE;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,GAAG,SAAS,EAAE,eAAe,GAAG,2BAA2B,GAAG,YAAY,GAAG,4BAA4B,GAAG,mBAAmB,EAAE,IAAI,GAAG;AACnK,wBAAwB,IAAI;;AAE5B;AACA,6CAA6C,EAAE,gCAAgC,KAAK,6CAA6C,KAAK;;AAEtI,uHAAuH,EAAE,kBAAkB,6sBAA6sB,EAAE,kBAAkB,uFAAuF,EAAE,kBAAkB,8FAA8F,EAAE,kBAAkB,iHAAiH,EAAE,kBAAkB;AAC9sC;AACA,6CAA6C,KAAK,0BAA0B,IAAI;;AAEhF,gCAAgC,EAAE;AAClC;AACA,8BAA8B,EAAE;AAChC;AACA,qDAAqD,EAAE;AACvD,sBAAsB,EAAE,SAAS,IAAI,SAAS,IAAI;AAClD;AACA,mFAAmF,EAAE;AACrF;AACA,mFAAmF,EAAE;;AAErF;AACA,gCAAgC,EAAE,aAAa,EAAE;AACjD,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kEAAkE;;AAElE;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;;AAEV;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA,iEAAiE,cAAc;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,WAAW;AAC/B;AACA;;AAEA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL,wBAAwB;;AAExB;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,6DAA6D;AAC7D,2HAA2H;AAC3H;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA,yBAAyB,qBAAqB;AAC9C;AACA,yBAAyB,qBAAqB;AAC9C;AACA,yBAAyB,yCAAyC;;AAElE;AACA,yBAAyB,iBAAiB;;AAE1C;AACA,sBAAsB,eAAe;;AAErC;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,4BAA4B;AAC5B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6CAA6C;AAC7C;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA,qCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,QAAQ;;AAER;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,0BAA0B,qBAAqB;AAC/C;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;;AAEA,gBAAgB;AAChB,OAAO;AACP;AACA;;AAEA;;AAEA,gBAAgB;AAChB,OAAO;AACP;AACA;;AAEA;;AAEA,gBAAgB;AAChB;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wDAAwD;AACxD,8DAA8D;;AAE9D;AACA,wCAAwC,iBAAiB;AACzD,uCAAuC,gBAAgB;AACvD,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,yCAAyC,mCAAmC;;AAE5E;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,CAAC;;;AAGD,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA,cAAc;;AAEd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED,CAAC;AACD;;AAEA;;AAEA;AACA;;AAEA;;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,OAAO;AACP,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,4CAA4C;AAC5C,mBAAmB;AACnB,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;;AAEA,kDAAkD;;AAElD;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD,SAAS;;AAET;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kDAAkD;;AAElD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;;AAEf,cAAc;AACd;;AAEA;;;AAGA,YAAY;;AAEZ;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;;AAEf,cAAc;AACd;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;;AAEV;;AAEA,UAAU;;AAEV;;AAEA;AACA,QAAQ;;AAER;;AAEA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uJAAuJ;AACvJ,cAAc;AACd;AACA;AACA,2EAA2E;AAC3E;;AAEA;;AAEA,YAAY;AACZ;AACA;AACA;AACA,sIAAsI;AACtI,cAAc;AACd;AACA;AACA,2EAA2E;AAC3E;;AAEA;;AAEA,YAAY;;AAEZ;AACA;AACA,4HAA4H;;AAE5H;;AAEA,YAAY;;AAEZ;AACA;AACA,8HAA8H;;AAE9H;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,QAAQ;;AAER;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,4CAA4C,kEAAkE;AAC9G;;AAEA,UAAU;;AAEV,0CAA0C,qEAAqE;AAC/G;;AAEA;;AAEA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA,wDAAwD,4EAA4E;AACpI;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0CAA0C;AACpE,UAAU;AACV;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA,sBAAsB;AACtB,6BAA6B;AAC7B,sCAAsC;AACtC;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6BAA6B;AAClE;AACA,sEAAsE,+CAA+C;AACrH;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D,UAAU;AACV;AACA;AACA;;AAEA,gCAAgC,YAAY;;AAE5C;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B;;AAEA;AACA,kCAAkC,wBAAwB;AAC1D,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA,4CAA4C;;AAE5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,+CAA+C;AAC/C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,gCAAgC;AAChD,oBAAoB,cAAc;AAClC;AACA;AACA,OAAO;AACP;;AAEA;AACA,gBAAgB,gCAAgC;AAChD,oBAAoB,cAAc;AAClC;AACA;AACA,OAAO;AACP;AACA;;;AAGA;;AAEA;AACA;;AAEA;;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,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,0BAA0B;AAC1B,yBAAyB;AACzB,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA,UAAU;AACV;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;;AAE/D;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA,uCAAuC,WAAW;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,cAAc;;AAEd;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;;AAEA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;;AAEA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;;AAEA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,8BAA8B,sCAAsC;AACpE;AACA;AACA;AACA;AACA,QAAQ;AACR,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sCAAsC;AAC3D;AACA,+BAA+B,wCAAwC;AACvE,iEAAiE,qCAAqC;AACtG;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL,wBAAwB;;AAExB;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,cAAc;;AAEd;AACA;AACA;AACA,KAAK;;AAEL;AACA,gCAAgC;;AAEhC;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC,QAAQ;AACR,iBAAiB,mCAAmC;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA,KAAK;;AAEL;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,CAAC;;AAED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,gDAAgD,8CAA8C;;AAE9F;AACA;AACA;AACA,OAAO;;AAEP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,uBAAuB,WAAW;AAClC,oCAAoC,aAAa;AACjD,UAAU;AACV,uBAAuB,YAAY;AACnC,oCAAoC,cAAc;AAClD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B,0CAA0C;AACrE,0CAA0C,uCAAuC;AACjF,cAAc;AACd,2BAA2B,2CAA2C;AACtE,0CAA0C,wCAAwC;AAClF;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,0CAA0C;AACjE,sCAAsC,uCAAuC;AAC7E,UAAU;AACV,uBAAuB,2CAA2C;AAClE,sCAAsC,wCAAwC;AAC9E;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,8CAA8C;AAC9C;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,mDAAmD,sCAAsC,gBAAgB;AACzG,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,CAAC;;;;;;;;;;;AC5mLD,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,yCAAyC,mCAAmC;;AAE5E;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,CAAC;;;;;;;;;;;;ACxED,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,0BAA0B;AAC1B,yBAAyB;AACzB,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA,UAAU;AACV;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,+DAA+D;;AAE/D;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA,uCAAuC,WAAW;AAClD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;AC3bD,CAAC;AACD;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,gDAAgD,8CAA8C;;AAE9F;AACA;AACA;AACA,OAAO;;AAEP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,uBAAuB,WAAW;AAClC,oCAAoC,aAAa;AACjD,UAAU;AACV,uBAAuB,YAAY;AACnC,oCAAoC,cAAc;AAClD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B,0CAA0C;AACrE,0CAA0C,uCAAuC;AACjF,cAAc;AACd,2BAA2B,2CAA2C;AACtE,0CAA0C,wCAAwC;AAClF;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,0CAA0C;AACjE,sCAAsC,uCAAuC;AAC7E,UAAU;AACV,uBAAuB,2CAA2C;AAClE,sCAAsC,wCAAwC;AAC9E;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,8CAA8C;AAC9C;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,mDAAmD,sCAAsC,gBAAgB;AACzG,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,CAAC;;;;;;;;;;;AC5bD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,MAAM,KAA0B;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,YAAY;;AAErB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF,8CAA8C;AAC9C;AACA;AACA,mBAAmB,iCAAiC;AACpD,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,SAAS;AACnB;AACA;;AAEA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,YAAY;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA;;;AAGA;;;AAGA;;;AAGA;;;AAGA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;;AAEA;AACA,kCAAkC,IAAI;AACtC;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,0CAA0C,IAAI;AAC9C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,GAAG;AACH,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,0BAA0B;AACvC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS,6BAA6B;AACjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,wBAAwB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,eAAe;;AAEf,SAAS;;AAET;AACA,SAAS,gCAAgC;AACzC,SAAS,mBAAmB;AAC5B,SAAS,qCAAqC;AAC9C,SAAS;AACT,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,kEAAkE,UAAU;AAC5E,uCAAuC,2BAA2B;AAClE;AACA,iCAAiC,MAAM;AACvC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA,WAAW,UAAU;AACrB;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;;AAEA;AACA,aAAa,uEAAuE;AACpF;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;;AAEA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA,SAAS,SAAS;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,SAAS,SAAS;AAClB;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,iDAAiD;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA,WAAW,4CAA4C;AACvD;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,SAAS,GAAG;AACZ;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,2BAA2B,wBAAwB;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA,2CAA2C;AAC3C,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;;;AAIA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;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;AACA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,QAAQ;AACR,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,yCAAyC,qCAAqC;AAC9E,qCAAqC,sCAAsC;AAC3E,qCAAqC,qCAAqC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;;AAEZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qCAAqC;AACrC,sCAAsC;AACtC,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,GAAG;AACH;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,aAAa;AACrC,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,EAAE;AACF;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;;AAEA;;;;AAIA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA,EAAE;AACF;;AAEA;;AAEA;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;AACH;;AAEA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;AAChB;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW;;AAEX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,sBAAsB;AACrC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,cAAc;;AAEzB;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,uDAAuD;AAC/E;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAA+C;AACrD;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,eAAe,oCAAoC;;AAEnD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;;AAGF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,+BAA+B;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wCAAwC,OAAO;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,OAAO;AAChD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA,UAAU,qCAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA,UAAU,8BAA8B;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,WAAW;AACrB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C,cAAc,WAAW;AACxE,mBAAmB,UAAU;AAC7B;AACA,sBAAsB,cAAc,sBAAsB,gBAAgB;AAC1E,gBAAgB,WAAW,YAAY;AACvC,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA6C,cAAc;AAC3D,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA,aAAa,8DAA8D;AAC3E;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS,OAAO;;AAEhB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;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,EAAE;;AAEF;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,kDAAkD,0BAA0B;AAC5E;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,gBAAgB;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB;AACrB;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gBAAgB;AAC5B;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;;AAEA,SAAS,gBAAgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,EAAE;;AAEF;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,aAAa;AAClC,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,SAAS;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,YAAY,iBAAiB;AAC7B,eAAe;AACf,CAAC;AACD;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,mBAAmB;AAC5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,uBAAuB;AACzC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;;;AAKF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,kCAAkC;AAClC;AACA;;AAEA,KAAK;AACL;;AAEA,KAAK;AACL;AACA;AACA,MAAM;AACN;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,MAAM;AACN;AACA;;AAEA;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;;AAEA,cAAc;;AAEd;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;;AAEA;;AAEA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,GAAG;;AAEH;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,MAAM;AACN;;AAEA,YAAY;AACZ,IAAI;AACJ;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB,qDAAqD;AACrD;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA,sBAAsB;AACtB,2BAA2B;;AAE3B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;;AAEA;AACA;AACA,IAAI;AACJ,EAAE;;AAEF;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,uBAAuB;AACnC,YAAY,wBAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,cAAc,uCAAuC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,EAAE;;;;;AAKF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,KAAK;AACL,IAAI;AACJ;;AAEA;AACA;;;;;AAKA;AACA;AACA;AACA,GAAG;AACH;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;;AAEA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA,EAAE;;AAEF;AACA,eAAe,qDAAqD;AACpE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF;AACA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;;;;AAKF;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE;;AAEF;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK,IAA0C;AAC/C,CAAC,iCAAkB,EAAE,mCAAE;AACvB;AACA,EAAE;AAAA,kGAAE;AACJ;;;;;AAKA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA,EAAE;;;;;;;;;;;;;AC39UF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAE,UAASA,CAAT,EAAY;EAEb;EACA;EAEA,IAAIA,CAAC,CAACC,MAAD,CAAD,CAAUC,KAAV,KAAoB,GAAxB,EAA6B;IAC5BF,CAAC,CAACG,QAAD,CAAD,CAAYC,UAAZ,CAAuB;MACtBC,SAAS,EAAG;QACX;QACAC,iBAAiB,EAAE;MAFR;IADU,CAAvB;EAMA,CAPD,MAOO;IACNN,CAAC,CAA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CAAP,EACC7H,OAAO,CAAC8H,QAAR,GAAmB,CAAC,CAApB;QAED9H,OAAO,CAAC+H,KAAR;MACA;IACD,CATD,EASG,KATH;EAUA;AACD,CAjBD;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEAC,aAAa,GAAG;EACZC,MAAM,EAAE;IAAEC,QAAQ,EAAE,CAAE,6BAAF;EAAZ;AADI,CAAhB;;AAIA,CAAC,YAAW;EACR,IAAIC,EAAE,GAAG7R,QAAQ,CAACsG,aAAT,CAAuB,QAAvB,CAAT;EACAuL,EAAE,CAAC9Q,GAAH,GAAS,CAAC,aAAaf,QAAQ,CAACoC,QAAT,CAAkB0P,QAA/B,GAA0C,OAA1C,GAAoD,MAArD,IACD,uDADR;EAEAD,EAAE,CAACrR,IAAH,GAAU,iBAAV;EACAqR,EAAE,CAACE,KAAH,GAAW,MAAX;EACA,IAAIlI,CAAC,GAAG7J,QAAQ,CAACwG,oBAAT,CAA8B,QAA9B,EAAwC,CAAxC,CAAR;EACAqD,CAAC,CAACpD,UAAF,CAAaC,YAAb,CAA0BmL,EAA1B,EAA8BhI,CAA9B;AACH,CARD;;;;;;;;;;;;ACbA;;;;;;;;;;;;;ACAA;;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WCzBA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UElDA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA","sources":["webpack://smart-starter-theme/./bower_components/foundation/js/foundation.js","webpack://smart-starter-theme/./bower_components/foundation/js/foundation/foundation.equalizer.js","webpack://smart-starter-theme/./bower_components/foundation/js/foundation/foundation.reveal.js","webpack://smart-starter-theme/./bower_components/foundation/js/foundation/foundation.topbar.js","webpack://smart-starter-theme/./bower_components/jquery/dist/jquery.js","webpack://smart-starter-theme/./js/custom.js","webpack://smart-starter-theme/./js/skip-link-focus-fix.js","webpack://smart-starter-theme/./js/webfonts.js","webpack://smart-starter-theme/./scss/app.scss?058a","webpack://smart-starter-theme/./scss/editor-style.scss?49d7","webpack://smart-starter-theme/webpack/bootstrap","webpack://smart-starter-theme/webpack/runtime/chunk loaded","webpack://smart-starter-theme/webpack/runtime/global","webpack://smart-starter-theme/webpack/runtime/hasOwnProperty shorthand","webpack://smart-starter-theme/webpack/runtime/make namespace object","webpack://smart-starter-theme/webpack/runtime/jsonp chunk loading","webpack://smart-starter-theme/webpack/before-startup","webpack://smart-starter-theme/webpack/startup","webpack://smart-starter-theme/webpack/after-startup"],"sourcesContent":["/*\n * Foundation Responsive Library\n * http://foundation.zurb.com\n * Copyright 2014, ZURB\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($, window, document, undefined) {\n 'use strict';\n\n var header_helpers = function (class_array) {\n var i = class_array.length;\n var head = $('head');\n\n while (i--) {\n if(head.has('.' + class_array[i]).length === 0) {\n head.append('');\n }\n }\n };\n\n header_helpers([\n 'foundation-mq-small',\n 'foundation-mq-medium',\n 'foundation-mq-large',\n 'foundation-mq-xlarge',\n 'foundation-mq-xxlarge',\n 'foundation-data-attribute-namespace']);\n\n // Enable FastClick if present\n\n $(function() {\n if (typeof FastClick !== 'undefined') {\n // Don't attach to body if undefined\n if (typeof document.body !== 'undefined') {\n FastClick.attach(document.body);\n }\n }\n });\n\n // private Fast Selector wrapper,\n // returns jQuery object. Only use where\n // getElementById is not available.\n var S = function (selector, context) {\n if (typeof selector === 'string') {\n if (context) {\n var cont;\n if (context.jquery) {\n cont = context[0];\n if (!cont) return context;\n } else {\n cont = context;\n }\n return $(cont.querySelectorAll(selector));\n }\n\n return $(document.querySelectorAll(selector));\n }\n\n return $(selector, context);\n };\n\n // Namespace functions.\n\n var attr_name = function (init) {\n var arr = [];\n if (!init) arr.push('data');\n if (this.namespace.length > 0) arr.push(this.namespace);\n arr.push(this.name);\n\n return arr.join('-');\n };\n\n var add_namespace = function (str) {\n var parts = str.split('-'),\n i = parts.length,\n arr = [];\n\n while (i--) {\n if (i !== 0) {\n arr.push(parts[i]);\n } else {\n if (this.namespace.length > 0) {\n arr.push(this.namespace, parts[i]);\n } else {\n arr.push(parts[i]);\n }\n }\n }\n\n return arr.reverse().join('-');\n };\n\n // Event binding and data-options updating.\n\n var bindings = function (method, options) {\n var self = this,\n should_bind_events = !S(this).data(this.attr_name(true));\n\n\n if (S(this.scope).is('[' + this.attr_name() +']')) {\n S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));\n\n if (should_bind_events) {\n this.events(this.scope);\n }\n\n } else {\n S('[' + this.attr_name() +']', this.scope).each(function () {\n var should_bind_events = !S(this).data(self.attr_name(true) + '-init');\n S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));\n\n if (should_bind_events) {\n self.events(this);\n }\n });\n }\n // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.\n if (typeof method === 'string') {\n return this[method].call(this, options);\n }\n\n };\n\n var single_image_loaded = function (image, callback) {\n function loaded () {\n callback(image[0]);\n }\n\n function bindLoad () {\n this.one('load', loaded);\n\n if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\n var src = this.attr( 'src' ),\n param = src.match( /\\?/ ) ? '&' : '?';\n\n param += 'random=' + (new Date()).getTime();\n this.attr('src', src + param);\n }\n }\n\n if (!image.attr('src')) {\n loaded();\n return;\n }\n\n if (image[0].complete || image[0].readyState === 4) {\n loaded();\n } else {\n bindLoad.call(image);\n }\n };\n\n /*\n https://github.com/paulirish/matchMedia.js\n */\n\n window.matchMedia = window.matchMedia || (function( doc ) {\n\n \"use strict\";\n\n var bool,\n docElem = doc.documentElement,\n refNode = docElem.firstElementChild || docElem.firstChild,\n // fakeBody required for \n fakeBody = doc.createElement( \"body\" ),\n div = doc.createElement( \"div\" );\n\n div.id = \"mq-test-1\";\n div.style.cssText = \"position:absolute;top:-100em\";\n fakeBody.style.background = \"none\";\n fakeBody.appendChild(div);\n\n return function (q) {\n\n div.innerHTML = \"­\";\n\n docElem.insertBefore( fakeBody, refNode );\n bool = div.offsetWidth === 42;\n docElem.removeChild( fakeBody );\n\n return {\n matches: bool,\n media: q\n };\n\n };\n\n }( document ));\n\n /*\n * jquery.requestAnimationFrame\n * https://github.com/gnarf37/jquery-requestAnimationFrame\n * Requires jQuery 1.8+\n *\n * Copyright (c) 2012 Corey Frang\n * Licensed under the MIT license.\n */\n\n (function($) {\n\n // requestAnimationFrame polyfill adapted from Erik Möller\n // fixes from Paul Irish and Tino Zijdel\n // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n var animating,\n lastTime = 0,\n vendors = ['webkit', 'moz'],\n requestAnimationFrame = window.requestAnimationFrame,\n cancelAnimationFrame = window.cancelAnimationFrame,\n jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;\n\n for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {\n requestAnimationFrame = window[ vendors[lastTime] + \"RequestAnimationFrame\" ];\n cancelAnimationFrame = cancelAnimationFrame ||\n window[ vendors[lastTime] + \"CancelAnimationFrame\" ] ||\n window[ vendors[lastTime] + \"CancelRequestAnimationFrame\" ];\n }\n\n function raf() {\n if (animating) {\n requestAnimationFrame(raf);\n\n if (jqueryFxAvailable) {\n jQuery.fx.tick();\n }\n }\n }\n\n if (requestAnimationFrame) {\n // use rAF\n window.requestAnimationFrame = requestAnimationFrame;\n window.cancelAnimationFrame = cancelAnimationFrame;\n\n if (jqueryFxAvailable) {\n jQuery.fx.timer = function (timer) {\n if (timer() && jQuery.timers.push(timer) && !animating) {\n animating = true;\n raf();\n }\n };\n\n jQuery.fx.stop = function () {\n animating = false;\n };\n }\n } else {\n // polyfill\n window.requestAnimationFrame = function (callback) {\n var currTime = new Date().getTime(),\n timeToCall = Math.max(0, 16 - (currTime - lastTime)),\n id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n\n }\n\n }( jQuery ));\n\n\n function removeQuotes (string) {\n if (typeof string === 'string' || string instanceof String) {\n string = string.replace(/^['\\\\/\"]+|(;\\s?})+|['\\\\/\"]+$/g, '');\n }\n\n return string;\n }\n\n window.Foundation = {\n name : 'Foundation',\n\n version : '5.4.7',\n\n media_queries : {\n small : S('.foundation-mq-small').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n medium : S('.foundation-mq-medium').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n large : S('.foundation-mq-large').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n xlarge: S('.foundation-mq-xlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n xxlarge: S('.foundation-mq-xxlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, '')\n },\n\n stylesheet : $('').appendTo('head')[0].sheet,\n\n global: {\n namespace: undefined\n },\n\n init : function (scope, libraries, method, options, response) {\n var args = [scope, method, options, response],\n responses = [];\n\n // check RTL\n this.rtl = /rtl/i.test(S('html').attr('dir'));\n\n // set foundation global scope\n this.scope = scope || this.scope;\n\n this.set_namespace();\n\n if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {\n if (this.libs.hasOwnProperty(libraries)) {\n responses.push(this.init_lib(libraries, args));\n }\n } else {\n for (var lib in this.libs) {\n responses.push(this.init_lib(lib, libraries));\n }\n }\n\n S(window).load(function(){\n S(window)\n .trigger('resize.fndtn.clearing')\n .trigger('resize.fndtn.dropdown')\n .trigger('resize.fndtn.equalizer')\n .trigger('resize.fndtn.interchange')\n .trigger('resize.fndtn.joyride')\n .trigger('resize.fndtn.magellan')\n .trigger('resize.fndtn.topbar')\n .trigger('resize.fndtn.slider');\n });\n\n return scope;\n },\n\n init_lib : function (lib, args) {\n if (this.libs.hasOwnProperty(lib)) {\n this.patch(this.libs[lib]);\n\n if (args && args.hasOwnProperty(lib)) {\n if (typeof this.libs[lib].settings !== 'undefined') {\n $.extend(true, this.libs[lib].settings, args[lib]);\n }\n else if (typeof this.libs[lib].defaults !== 'undefined') {\n $.extend(true, this.libs[lib].defaults, args[lib]);\n }\n return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);\n }\n\n args = args instanceof Array ? args : new Array(args); // PATCH: added this line\n return this.libs[lib].init.apply(this.libs[lib], args);\n }\n\n return function () {};\n },\n\n patch : function (lib) {\n lib.scope = this.scope;\n lib.namespace = this.global.namespace;\n lib.rtl = this.rtl;\n lib['data_options'] = this.utils.data_options;\n lib['attr_name'] = attr_name;\n lib['add_namespace'] = add_namespace;\n lib['bindings'] = bindings;\n lib['S'] = this.utils.S;\n },\n\n inherit : function (scope, methods) {\n var methods_arr = methods.split(' '),\n i = methods_arr.length;\n\n while (i--) {\n if (this.utils.hasOwnProperty(methods_arr[i])) {\n scope[methods_arr[i]] = this.utils[methods_arr[i]];\n }\n }\n },\n\n set_namespace: function () {\n\n // Description:\n // Don't bother reading the namespace out of the meta tag\n // if the namespace has been set globally in javascript\n //\n // Example:\n // Foundation.global.namespace = 'my-namespace';\n // or make it an empty string:\n // Foundation.global.namespace = '';\n //\n //\n\n // If the namespace has not been set (is undefined), try to read it out of the meta element.\n // Otherwise use the globally defined namespace, even if it's empty ('')\n var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;\n\n // Finally, if the namsepace is either undefined or false, set it to an empty string.\n // Otherwise use the namespace value.\n this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;\n },\n\n libs : {},\n\n // methods that can be inherited in libraries\n utils : {\n\n // Description:\n // Fast Selector wrapper returns jQuery object. Only use where getElementById\n // is not available.\n //\n // Arguments:\n // Selector (String): CSS selector describing the element(s) to be\n // returned as a jQuery object.\n //\n // Scope (String): CSS selector describing the area to be searched. Default\n // is document.\n //\n // Returns:\n // Element (jQuery Object): jQuery object containing elements matching the\n // selector within the scope.\n S : S,\n\n // Description:\n // Executes a function a max of once every n milliseconds\n //\n // Arguments:\n // Func (Function): Function to be throttled.\n //\n // Delay (Integer): Function execution threshold in milliseconds.\n //\n // Returns:\n // Lazy_function (Function): Function with throttling applied.\n throttle : function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer == null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n },\n\n // Description:\n // Executes a function when it stops being invoked for n seconds\n // Modified version of _.debounce() http://underscorejs.org\n //\n // Arguments:\n // Func (Function): Function to be debounced.\n //\n // Delay (Integer): Function execution threshold in milliseconds.\n //\n // Immediate (Bool): Whether the function should be called at the beginning\n // of the delay instead of the end. Default is false.\n //\n // Returns:\n // Lazy_function (Function): Function with debouncing applied.\n debounce : function (func, delay, immediate) {\n var timeout, result;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, delay);\n if (callNow) result = func.apply(context, args);\n return result;\n };\n },\n\n // Description:\n // Parses data-options attribute\n //\n // Arguments:\n // El (jQuery Object): Element to be parsed.\n //\n // Returns:\n // Options (Javascript Object): Contents of the element's data-options\n // attribute.\n data_options : function (el, data_attr_name) {\n data_attr_name = data_attr_name || 'options';\n var opts = {}, ii, p, opts_arr,\n data_options = function (el) {\n var namespace = Foundation.global.namespace;\n\n if (namespace.length > 0) {\n return el.data(namespace + '-' + data_attr_name);\n }\n\n return el.data(data_attr_name);\n };\n\n var cached_options = data_options(el);\n\n if (typeof cached_options === 'object') {\n return cached_options;\n }\n\n opts_arr = (cached_options || ':').split(';');\n ii = opts_arr.length;\n\n function isNumber (o) {\n return ! isNaN (o-0) && o !== null && o !== \"\" && o !== false && o !== true;\n }\n\n function trim (str) {\n if (typeof str === 'string') return $.trim(str);\n return str;\n }\n\n while (ii--) {\n p = opts_arr[ii].split(':');\n p = [p[0], p.slice(1).join(':')];\n\n if (/true/i.test(p[1])) p[1] = true;\n if (/false/i.test(p[1])) p[1] = false;\n if (isNumber(p[1])) {\n if (p[1].indexOf('.') === -1) {\n p[1] = parseInt(p[1], 10);\n } else {\n p[1] = parseFloat(p[1]);\n }\n }\n\n if (p.length === 2 && p[0].length > 0) {\n opts[trim(p[0])] = trim(p[1]);\n }\n }\n\n return opts;\n },\n\n // Description:\n // Adds JS-recognizable media queries\n //\n // Arguments:\n // Media (String): Key string for the media query to be stored as in\n // Foundation.media_queries\n //\n // Class (String): Class name for the generated tag\n register_media : function (media, media_class) {\n if(Foundation.media_queries[media] === undefined) {\n $('head').append('');\n Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));\n }\n },\n\n // Description:\n // Add custom CSS within a JS-defined media query\n //\n // Arguments:\n // Rule (String): CSS rule to be appended to the document.\n //\n // Media (String): Optional media query string for the CSS rule to be\n // nested under.\n add_custom_rule : function (rule, media) {\n if (media === undefined && Foundation.stylesheet) {\n Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);\n } else {\n var query = Foundation.media_queries[media];\n\n if (query !== undefined) {\n Foundation.stylesheet.insertRule('@media ' +\n Foundation.media_queries[media] + '{ ' + rule + ' }');\n }\n }\n },\n\n // Description:\n // Performs a callback function when an image is fully loaded\n //\n // Arguments:\n // Image (jQuery Object): Image(s) to check if loaded.\n //\n // Callback (Function): Function to execute when image is fully loaded.\n image_loaded : function (images, callback) {\n var self = this,\n unloaded = images.length;\n\n if (unloaded === 0) {\n callback(images);\n }\n\n images.each(function () {\n single_image_loaded(self.S(this), function () {\n unloaded -= 1;\n if (unloaded === 0) {\n callback(images);\n }\n });\n });\n },\n\n // Description:\n // Returns a random, alphanumeric string\n //\n // Arguments:\n // Length (Integer): Length of string to be generated. Defaults to random\n // integer.\n //\n // Returns:\n // Rand (String): Pseudo-random, alphanumeric string.\n random_str : function () {\n if (!this.fidx) this.fidx = 0;\n this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');\n\n return this.prefix + (this.fidx++).toString(36);\n }\n }\n };\n\n $.fn.foundation = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n\n return this.each(function () {\n Foundation.init.apply(Foundation, [this].concat(args));\n return this;\n });\n };\n\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.abide = {\n name : 'abide',\n\n version : '5.4.7',\n\n settings : {\n live_validate : true,\n focus_on_invalid : true,\n error_labels: true, // labels with a for=\"inputId\" will recieve an `error` class\n error_class: 'error',\n timeout : 1000,\n patterns : {\n alpha: /^[a-zA-Z]+$/,\n alpha_numeric : /^[a-zA-Z0-9]+$/,\n integer: /^[-+]?\\d+$/,\n number: /^[-+]?\\d*(?:[\\.\\,]\\d+)?$/,\n\n // amex, visa, diners\n card : /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$/,\n cvv : /^([0-9]){3,4}$/,\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address\n email : /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,\n\n url: /^(https?|ftp|file|ssh):\\/\\/(((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-zA-Z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-zA-Z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/,\n // abc.de\n domain: /^([a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,6}$/,\n\n datetime: /^([0-2][0-9]{3})\\-([0-1][0-9])\\-([0-3][0-9])T([0-5][0-9])\\:([0-5][0-9])\\:([0-5][0-9])(Z|([\\-\\+]([0-1][0-9])\\:00))$/,\n // YYYY-MM-DD\n date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,\n // HH:MM:SS\n time : /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,\n dateISO: /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/,\n // MM/DD/YYYY\n month_day_year : /^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.]\\d{4}$/,\n // DD/MM/YYYY\n day_month_year : /^(0[1-9]|[12][0-9]|3[01])[- \\/.](0[1-9]|1[012])[- \\/.]\\d{4}$/,\n\n // #FFF or #FFFFFF\n color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/\n },\n validators : {\n equalTo: function(el, required, parent) {\n var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,\n to = el.value,\n valid = (from === to);\n\n return valid;\n }\n }\n },\n\n timer : null,\n\n init : function (scope, method, options) {\n this.bindings(method, options);\n },\n\n events : function (scope) {\n var self = this,\n form = self.S(scope).attr('novalidate', 'novalidate'),\n settings = form.data(this.attr_name(true) + '-init') || {};\n\n this.invalid_attr = this.add_namespace('data-invalid');\n\n form\n .off('.abide')\n .on('submit.fndtn.abide validate.fndtn.abide', function (e) {\n var is_ajax = /ajax/i.test(self.S(this).attr(self.attr_name()));\n return self.validate(self.S(this).find('input, textarea, select').get(), e, is_ajax);\n })\n .on('reset', function() {\n return self.reset($(this));\n })\n .find('input, textarea, select')\n .off('.abide')\n .on('blur.fndtn.abide change.fndtn.abide', function (e) {\n self.validate([this], e);\n })\n .on('keydown.fndtn.abide', function (e) {\n if (settings.live_validate === true) {\n clearTimeout(self.timer);\n self.timer = setTimeout(function () {\n self.validate([this], e);\n }.bind(this), settings.timeout);\n }\n });\n },\n\n reset : function (form) {\n form.removeAttr(this.invalid_attr);\n $(this.invalid_attr, form).removeAttr(this.invalid_attr);\n $('.' + this.settings.error_class, form).not('small').removeClass(this.settings.error_class);\n },\n\n validate : function (els, e, is_ajax) {\n var validations = this.parse_patterns(els),\n validation_count = validations.length,\n form = this.S(els[0]).closest('form'),\n submit_event = /submit/.test(e.type);\n\n // Has to count up to make sure the focus gets applied to the top error\n for (var i=0; i < validation_count; i++) {\n if (!validations[i] && (submit_event || is_ajax)) {\n if (this.settings.focus_on_invalid) els[i].focus();\n form.trigger('invalid');\n this.S(els[i]).closest('form').attr(this.invalid_attr, '');\n return false;\n }\n }\n\n if (submit_event || is_ajax) {\n form.trigger('valid');\n }\n\n form.removeAttr(this.invalid_attr);\n\n if (is_ajax) return false;\n\n return true;\n },\n\n parse_patterns : function (els) {\n var i = els.length,\n el_patterns = [];\n\n while (i--) {\n el_patterns.push(this.pattern(els[i]));\n }\n\n return this.check_validation_and_apply_styles(el_patterns);\n },\n\n pattern : function (el) {\n var type = el.getAttribute('type'),\n required = typeof el.getAttribute('required') === 'string';\n\n var pattern = el.getAttribute('pattern') || '';\n\n if (this.settings.patterns.hasOwnProperty(pattern) && pattern.length > 0) {\n return [el, this.settings.patterns[pattern], required];\n } else if (pattern.length > 0) {\n return [el, new RegExp(pattern), required];\n }\n\n if (this.settings.patterns.hasOwnProperty(type)) {\n return [el, this.settings.patterns[type], required];\n }\n\n pattern = /.*/;\n\n return [el, pattern, required];\n },\n\n check_validation_and_apply_styles : function (el_patterns) {\n var i = el_patterns.length,\n validations = [],\n form = this.S(el_patterns[0][0]).closest('[data-' + this.attr_name(true) + ']'),\n settings = form.data(this.attr_name(true) + '-init') || {};\n while (i--) {\n var el = el_patterns[i][0],\n required = el_patterns[i][2],\n value = el.value.trim(),\n direct_parent = this.S(el).parent(),\n validator = el.getAttribute(this.add_namespace('data-abide-validator')),\n is_radio = el.type === \"radio\",\n is_checkbox = el.type === \"checkbox\",\n label = this.S('label[for=\"' + el.getAttribute('id') + '\"]'),\n valid_length = (required) ? (el.value.length > 0) : true,\n el_validations = [];\n\n var parent, valid;\n\n // support old way to do equalTo validations\n if(el.getAttribute(this.add_namespace('data-equalto'))) { validator = \"equalTo\" }\n\n if (!direct_parent.is('label')) {\n parent = direct_parent;\n } else {\n parent = direct_parent.parent();\n }\n\n if (validator) {\n valid = this.settings.validators[validator].apply(this, [el, required, parent]);\n el_validations.push(valid);\n }\n\n if (is_radio && required) {\n el_validations.push(this.valid_radio(el, required));\n } else if (is_checkbox && required) {\n el_validations.push(this.valid_checkbox(el, required));\n } else {\n\n if (el_patterns[i][1].test(value) && valid_length ||\n !required && el.value.length < 1 || $(el).attr('disabled')) {\n el_validations.push(true);\n } else {\n el_validations.push(false);\n }\n\n el_validations = [el_validations.every(function(valid){return valid;})];\n\n if(el_validations[0]){\n this.S(el).removeAttr(this.invalid_attr);\n el.setAttribute('aria-invalid', 'false');\n el.removeAttribute('aria-describedby');\n parent.removeClass(this.settings.error_class);\n if (label.length > 0 && this.settings.error_labels) {\n label.removeClass(this.settings.error_class).removeAttr('role');\n }\n $(el).triggerHandler('valid');\n } else {\n this.S(el).attr(this.invalid_attr, '');\n el.setAttribute('aria-invalid', 'true');\n\n // Try to find the error associated with the input\n var errorElem = parent.find('small.'+this.settings.error_class, 'span.'+this.settings.error_class);\n var errorID = errorElem.length > 0 ? errorElem[0].id : \"\";\n if (errorID.length > 0) el.setAttribute('aria-describedby', errorID);\n\n // el.setAttribute('aria-describedby', $(el).find('.error')[0].id);\n parent.addClass(this.settings.error_class);\n if (label.length > 0 && this.settings.error_labels) {\n label.addClass(this.settings.error_class).attr('role', 'alert');\n }\n $(el).triggerHandler('invalid');\n }\n }\n validations.push(el_validations[0]);\n }\n validations = [validations.every(function(valid){return valid;})];\n return validations;\n },\n\n valid_checkbox : function(el, required) {\n var el = this.S(el),\n valid = (el.is(':checked') || !required);\n\n if (valid) {\n el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n } else {\n el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n }\n\n return valid;\n },\n\n valid_radio : function (el, required) {\n var name = el.getAttribute('name'),\n group = this.S(el).closest('[data-' + this.attr_name(true) + ']').find(\"[name='\"+name+\"']\"),\n count = group.length,\n valid = false;\n\n // Has to count up to make sure the focus gets applied to the top error\n for (var i=0; i < count; i++) {\n if (group[i].checked) valid = true;\n }\n\n // Has to count up to make sure the focus gets applied to the top error\n for (var i=0; i < count; i++) {\n if (valid) {\n this.S(group[i]).removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n } else {\n this.S(group[i]).attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n }\n }\n\n return valid;\n },\n\n valid_equal: function(el, required, parent) {\n var from = document.getElementById(el.getAttribute(this.add_namespace('data-equalto'))).value,\n to = el.value,\n valid = (from === to);\n\n if (valid) {\n this.S(el).removeAttr(this.invalid_attr);\n parent.removeClass(this.settings.error_class);\n if (label.length > 0 && settings.error_labels) label.removeClass(this.settings.error_class);\n } else {\n this.S(el).attr(this.invalid_attr, '');\n parent.addClass(this.settings.error_class);\n if (label.length > 0 && settings.error_labels) label.addClass(this.settings.error_class);\n }\n\n return valid;\n },\n\n valid_oneof: function(el, required, parent, doNotValidateOthers) {\n var el = this.S(el),\n others = this.S('[' + this.add_namespace('data-oneof') + ']'),\n valid = others.filter(':checked').length > 0;\n\n if (valid) {\n el.removeAttr(this.invalid_attr).parent().removeClass(this.settings.error_class);\n } else {\n el.attr(this.invalid_attr, '').parent().addClass(this.settings.error_class);\n }\n\n if (!doNotValidateOthers) {\n var _this = this;\n others.each(function() {\n _this.valid_oneof.call(_this, this, null, null, true);\n });\n }\n\n return valid;\n }\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.accordion = {\n name : 'accordion',\n\n version : '5.4.7',\n\n settings : {\n content_class: 'content',\n active_class: 'active',\n multi_expand: false,\n toggleable: true,\n callback : function () {}\n },\n\n init : function (scope, method, options) {\n this.bindings(method, options);\n },\n\n events : function () {\n var self = this;\n var S = this.S;\n S(this.scope)\n .off('.fndtn.accordion')\n .on('click.fndtn.accordion', '[' + this.attr_name() + '] > dd > a', function (e) {\n var accordion = S(this).closest('[' + self.attr_name() + ']'),\n groupSelector = self.attr_name() + '=' + accordion.attr(self.attr_name()),\n settings = accordion.data(self.attr_name(true) + '-init'),\n target = S('#' + this.href.split('#')[1]),\n aunts = $('> dd', accordion),\n siblings = aunts.children('.'+settings.content_class),\n active_content = siblings.filter('.' + settings.active_class);\n e.preventDefault();\n\n if (accordion.attr(self.attr_name())) {\n siblings = siblings.add('[' + groupSelector + '] dd > .'+settings.content_class);\n aunts = aunts.add('[' + groupSelector + '] dd');\n }\n\n if (settings.toggleable && target.is(active_content)) {\n target.parent('dd').toggleClass(settings.active_class, false);\n target.toggleClass(settings.active_class, false);\n settings.callback(target);\n target.triggerHandler('toggled', [accordion]);\n accordion.triggerHandler('toggled', [target]);\n return;\n }\n\n if (!settings.multi_expand) {\n siblings.removeClass(settings.active_class);\n aunts.removeClass(settings.active_class);\n }\n\n target.addClass(settings.active_class).parent().addClass(settings.active_class);\n settings.callback(target);\n target.triggerHandler('toggled', [accordion]);\n accordion.triggerHandler('toggled', [target]);\n });\n },\n\n off : function () {},\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.alert = {\n name : 'alert',\n\n version : '5.4.7',\n\n settings : {\n callback: function (){}\n },\n\n init : function (scope, method, options) {\n this.bindings(method, options);\n },\n\n events : function () {\n var self = this,\n S = this.S;\n\n $(this.scope).off('.alert').on('click.fndtn.alert', '[' + this.attr_name() + '] .close', function (e) {\n var alertBox = S(this).closest('[' + self.attr_name() + ']'),\n settings = alertBox.data(self.attr_name(true) + '-init') || self.settings;\n\n e.preventDefault();\n if (Modernizr.csstransitions) {\n alertBox.addClass(\"alert-close\");\n alertBox.on('transitionend webkitTransitionEnd oTransitionEnd', function(e) {\n S(this).trigger('close').trigger('close.fndtn.alert').remove();\n settings.callback();\n });\n } else {\n alertBox.fadeOut(300, function () {\n S(this).trigger('close').trigger('close.fndtn.alert').remove();\n settings.callback();\n });\n }\n });\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.clearing = {\n name : 'clearing',\n\n version: '5.4.7',\n\n settings : {\n templates : {\n viewing : '×' +\n '
\"\"' +\n '

' +\n '
'\n },\n\n // comma delimited list of selectors that, on click, will close clearing,\n // add 'div.clearing-blackout, div.visible-img' to close on background click\n close_selectors : '.clearing-close, div.clearing-blackout', \n\n // Default to the entire li element.\n open_selectors : '',\n\n // Image will be skipped in carousel.\n skip_selector : '',\n\n touch_label : '',\n\n // event initializers and locks\n init : false,\n locked : false\n },\n\n init : function (scope, method, options) {\n var self = this;\n Foundation.inherit(this, 'throttle image_loaded');\n\n this.bindings(method, options);\n\n if (self.S(this.scope).is('[' + this.attr_name() + ']')) {\n this.assemble(self.S('li', this.scope));\n } else {\n self.S('[' + this.attr_name() + ']', this.scope).each(function () {\n self.assemble(self.S('li', this));\n });\n }\n },\n\n events : function (scope) {\n var self = this,\n S = self.S,\n $scroll_container = $('.scroll-container');\n\n if ($scroll_container.length > 0) {\n this.scope = $scroll_container;\n }\n\n S(this.scope)\n .off('.clearing')\n .on('click.fndtn.clearing', 'ul[' + this.attr_name() + '] li ' + this.settings.open_selectors,\n function (e, current, target) {\n var current = current || S(this),\n target = target || current,\n next = current.next('li'),\n settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init'),\n image = S(e.target);\n\n e.preventDefault();\n\n if (!settings) {\n self.init();\n settings = current.closest('[' + self.attr_name() + ']').data(self.attr_name(true) + '-init');\n }\n\n // if clearing is open and the current image is\n // clicked, go to the next image in sequence\n if (target.hasClass('visible') &&\n current[0] === target[0] &&\n next.length > 0 && self.is_open(current)) {\n target = next;\n image = S('img', target);\n }\n\n // set current and target to the clicked li if not otherwise defined.\n self.open(image, current, target);\n self.update_paddles(target);\n })\n\n .on('click.fndtn.clearing', '.clearing-main-next',\n function (e) { self.nav(e, 'next') })\n .on('click.fndtn.clearing', '.clearing-main-prev',\n function (e) { self.nav(e, 'prev') })\n .on('click.fndtn.clearing', this.settings.close_selectors,\n function (e) { Foundation.libs.clearing.close(e, this) });\n\n $(document).on('keydown.fndtn.clearing',\n function (e) { self.keydown(e) });\n\n S(window).off('.clearing').on('resize.fndtn.clearing',\n function () { self.resize() });\n\n this.swipe_events(scope);\n },\n\n swipe_events : function (scope) {\n var self = this,\n S = self.S;\n\n S(this.scope)\n .on('touchstart.fndtn.clearing', '.visible-img', function(e) {\n if (!e.touches) { e = e.originalEvent; }\n var data = {\n start_page_x: e.touches[0].pageX,\n start_page_y: e.touches[0].pageY,\n start_time: (new Date()).getTime(),\n delta_x: 0,\n is_scrolling: undefined\n };\n\n S(this).data('swipe-transition', data);\n e.stopPropagation();\n })\n .on('touchmove.fndtn.clearing', '.visible-img', function(e) {\n if (!e.touches) { e = e.originalEvent; }\n // Ignore pinch/zoom events\n if(e.touches.length > 1 || e.scale && e.scale !== 1) return;\n\n var data = S(this).data('swipe-transition');\n\n if (typeof data === 'undefined') {\n data = {};\n }\n\n data.delta_x = e.touches[0].pageX - data.start_page_x;\n\n if (Foundation.rtl) {\n data.delta_x = -data.delta_x;\n }\n\n if (typeof data.is_scrolling === 'undefined') {\n data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );\n }\n\n if (!data.is_scrolling && !data.active) {\n e.preventDefault();\n var direction = (data.delta_x < 0) ? 'next' : 'prev';\n data.active = true;\n self.nav(e, direction);\n }\n })\n .on('touchend.fndtn.clearing', '.visible-img', function(e) {\n S(this).data('swipe-transition', {});\n e.stopPropagation();\n });\n },\n\n assemble : function ($li) {\n var $el = $li.parent();\n\n if ($el.parent().hasClass('carousel')) {\n return;\n }\n \n $el.after('
');\n\n var grid = $el.detach(),\n grid_outerHTML = '';\n\n if (grid[0] == null) {\n return;\n } else {\n grid_outerHTML = grid[0].outerHTML;\n }\n \n var holder = this.S('#foundationClearingHolder'),\n settings = $el.data(this.attr_name(true) + '-init'),\n data = {\n grid: '
' + grid_outerHTML + '
',\n viewing: settings.templates.viewing\n },\n wrapper = '
' + data.viewing +\n data.grid + '
',\n touch_label = this.settings.touch_label;\n\n if (Modernizr.touch) {\n wrapper = $(wrapper).find('.clearing-touch-label').html(touch_label).end();\n }\n\n holder.after(wrapper).remove();\n },\n\n open : function ($image, current, target) {\n var self = this,\n body = $(document.body),\n root = target.closest('.clearing-assembled'),\n container = self.S('div', root).first(),\n visible_image = self.S('.visible-img', container),\n image = self.S('img', visible_image).not($image),\n label = self.S('.clearing-touch-label', container),\n error = false;\n\n // Event to disable scrolling on touch devices when Clearing is activated\n $('body').on('touchmove',function(e){\n e.preventDefault();\n });\n\n image.error(function () {\n error = true;\n });\n\n function startLoad() {\n setTimeout(function () {\n this.image_loaded(image, function () {\n if (image.outerWidth() === 1 && !error) {\n startLoad.call(this);\n } else {\n cb.call(this, image);\n }\n }.bind(this));\n }.bind(this), 100);\n }\n\n function cb (image) {\n var $image = $(image);\n $image.css('visibility', 'visible');\n // toggle the gallery\n body.css('overflow', 'hidden');\n root.addClass('clearing-blackout');\n container.addClass('clearing-container');\n visible_image.show();\n this.fix_height(target)\n .caption(self.S('.clearing-caption', visible_image), self.S('img', target))\n .center_and_label(image, label)\n .shift(current, target, function () {\n target.closest('li').siblings().removeClass('visible');\n target.closest('li').addClass('visible');\n });\n visible_image.trigger('opened.fndtn.clearing')\n }\n\n if (!this.locked()) {\n visible_image.trigger('open.fndtn.clearing');\n // set the image to the selected thumbnail\n image\n .attr('src', this.load($image))\n .css('visibility', 'hidden');\n\n startLoad.call(this);\n }\n },\n\n close : function (e, el) {\n e.preventDefault();\n\n var root = (function (target) {\n if (/blackout/.test(target.selector)) {\n return target;\n } else {\n return target.closest('.clearing-blackout');\n }\n }($(el))),\n body = $(document.body), container, visible_image;\n\n if (el === e.target && root) {\n body.css('overflow', '');\n container = $('div', root).first();\n visible_image = $('.visible-img', container);\n visible_image.trigger('close.fndtn.clearing');\n this.settings.prev_index = 0;\n $('ul[' + this.attr_name() + ']', root)\n .attr('style', '').closest('.clearing-blackout')\n .removeClass('clearing-blackout');\n container.removeClass('clearing-container');\n visible_image.hide();\n visible_image.trigger('closed.fndtn.clearing'); \n }\n\n // Event to re-enable scrolling on touch devices\n $('body').off('touchmove');\n\n return false;\n },\n\n is_open : function (current) {\n return current.parent().prop('style').length > 0;\n },\n\n keydown : function (e) {\n var clearing = $('.clearing-blackout ul[' + this.attr_name() + ']'),\n NEXT_KEY = this.rtl ? 37 : 39,\n PREV_KEY = this.rtl ? 39 : 37,\n ESC_KEY = 27;\n\n if (e.which === NEXT_KEY) this.go(clearing, 'next');\n if (e.which === PREV_KEY) this.go(clearing, 'prev');\n if (e.which === ESC_KEY) this.S('a.clearing-close').trigger('click').trigger('click.fndtn.clearing');\n },\n\n nav : function (e, direction) {\n var clearing = $('ul[' + this.attr_name() + ']', '.clearing-blackout');\n\n e.preventDefault();\n this.go(clearing, direction);\n },\n\n resize : function () {\n var image = $('img', '.clearing-blackout .visible-img'),\n label = $('.clearing-touch-label', '.clearing-blackout');\n\n if (image.length) {\n this.center_and_label(image, label);\n image.trigger('resized.fndtn.clearing')\n }\n },\n\n // visual adjustments\n fix_height : function (target) {\n var lis = target.parent().children(),\n self = this;\n\n lis.each(function () {\n var li = self.S(this),\n image = li.find('img');\n\n if (li.height() > image.outerHeight()) {\n li.addClass('fix-height');\n }\n })\n .closest('ul')\n .width(lis.length * 100 + '%');\n\n return this;\n },\n\n update_paddles : function (target) {\n target = target.closest('li');\n var visible_image = target\n .closest('.carousel')\n .siblings('.visible-img');\n\n if (target.next().length > 0) {\n this.S('.clearing-main-next', visible_image).removeClass('disabled');\n } else {\n this.S('.clearing-main-next', visible_image).addClass('disabled');\n }\n\n if (target.prev().length > 0) {\n this.S('.clearing-main-prev', visible_image).removeClass('disabled');\n } else {\n this.S('.clearing-main-prev', visible_image).addClass('disabled');\n }\n },\n\n center_and_label : function (target, label) {\n if (!this.rtl) {\n target.css({\n marginLeft : -(target.outerWidth() / 2),\n marginTop : -(target.outerHeight() / 2)\n });\n\n if (label.length > 0) {\n label.css({\n marginLeft : -(label.outerWidth() / 2),\n marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10\n });\n }\n } else {\n target.css({\n marginRight : -(target.outerWidth() / 2),\n marginTop : -(target.outerHeight() / 2),\n left: 'auto',\n right: '50%'\n });\n\n if (label.length > 0) {\n label.css({\n marginRight : -(label.outerWidth() / 2),\n marginTop : -(target.outerHeight() / 2)-label.outerHeight()-10,\n left: 'auto',\n right: '50%'\n });\n }\n }\n return this;\n },\n\n // image loading and preloading\n\n load : function ($image) {\n var href;\n\n if ($image[0].nodeName === \"A\") {\n href = $image.attr('href');\n } else {\n href = $image.parent().attr('href');\n }\n\n this.preload($image);\n\n if (href) return href;\n return $image.attr('src');\n },\n\n preload : function ($image) {\n this\n .img($image.closest('li').next())\n .img($image.closest('li').prev());\n },\n\n img : function (img) {\n if (img.length) {\n var new_img = new Image(),\n new_a = this.S('a', img);\n\n if (new_a.length) {\n new_img.src = new_a.attr('href');\n } else {\n new_img.src = this.S('img', img).attr('src');\n }\n }\n return this;\n },\n\n // image caption\n\n caption : function (container, $image) {\n var caption = $image.attr('data-caption');\n\n if (caption) {\n container\n .html(caption)\n .show();\n } else {\n container\n .text('')\n .hide();\n }\n return this;\n }, \n\n // directional methods\n\n go : function ($ul, direction) {\n var current = this.S('.visible', $ul),\n target = current[direction]();\n\n // Check for skip selector.\n if (this.settings.skip_selector && target.find(this.settings.skip_selector).length != 0) {\n target = target[direction]();\n }\n\n if (target.length) {\n this.S('img', target)\n .trigger('click', [current, target]).trigger('click.fndtn.clearing', [current, target])\n .trigger('change.fndtn.clearing');\n }\n },\n\n shift : function (current, target, callback) {\n var clearing = target.parent(),\n old_index = this.settings.prev_index || target.index(),\n direction = this.direction(clearing, current, target),\n dir = this.rtl ? 'right' : 'left',\n left = parseInt(clearing.css('left'), 10),\n width = target.outerWidth(),\n skip_shift;\n\n var dir_obj = {};\n\n // we use jQuery animate instead of CSS transitions because we\n // need a callback to unlock the next animation\n // needs support for RTL **\n if (target.index() !== old_index && !/skip/.test(direction)){\n if (/left/.test(direction)) {\n this.lock();\n dir_obj[dir] = left + width;\n clearing.animate(dir_obj, 300, this.unlock());\n } else if (/right/.test(direction)) {\n this.lock();\n dir_obj[dir] = left - width;\n clearing.animate(dir_obj, 300, this.unlock());\n }\n } else if (/skip/.test(direction)) {\n // the target image is not adjacent to the current image, so\n // do we scroll right or not\n skip_shift = target.index() - this.settings.up_count;\n this.lock();\n\n if (skip_shift > 0) {\n dir_obj[dir] = -(skip_shift * width);\n clearing.animate(dir_obj, 300, this.unlock());\n } else {\n dir_obj[dir] = 0;\n clearing.animate(dir_obj, 300, this.unlock());\n }\n }\n\n callback();\n },\n\n direction : function ($el, current, target) {\n var lis = this.S('li', $el),\n li_width = lis.outerWidth() + (lis.outerWidth() / 4),\n up_count = Math.floor(this.S('.clearing-container').outerWidth() / li_width) - 1,\n target_index = lis.index(target),\n response;\n\n this.settings.up_count = up_count;\n\n if (this.adjacent(this.settings.prev_index, target_index)) {\n if ((target_index > up_count) && target_index > this.settings.prev_index) {\n response = 'right';\n } else if ((target_index > up_count - 1) && target_index <= this.settings.prev_index) {\n response = 'left';\n } else {\n response = false;\n }\n } else {\n response = 'skip';\n }\n\n this.settings.prev_index = target_index;\n\n return response;\n },\n\n adjacent : function (current_index, target_index) {\n for (var i = target_index + 1; i >= target_index - 1; i--) {\n if (i === current_index) return true;\n }\n return false;\n },\n\n // lock management\n\n lock : function () {\n this.settings.locked = true;\n },\n\n unlock : function () {\n this.settings.locked = false;\n },\n\n locked : function () {\n return this.settings.locked;\n },\n\n off : function () {\n this.S(this.scope).off('.fndtn.clearing');\n this.S(window).off('.fndtn.clearing');\n },\n\n reflow : function () {\n this.init();\n }\n };\n\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.dropdown = {\n name : 'dropdown',\n\n version : '5.4.7',\n\n settings : {\n active_class: 'open',\n disabled_class: 'disabled',\n mega_class: 'mega',\n align: 'bottom',\n is_hover: false,\n opened: function(){},\n closed: function(){}\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'throttle');\n\n this.bindings(method, options);\n },\n\n events : function (scope) {\n var self = this,\n S = self.S;\n\n S(this.scope)\n .off('.dropdown')\n .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {\n var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;\n if (!settings.is_hover || Modernizr.touch) {\n e.preventDefault();\n self.toggle($(this));\n }\n })\n .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {\n var $this = S(this),\n dropdown,\n target;\n\n clearTimeout(self.timeout);\n\n if ($this.data(self.data_attr())) {\n dropdown = S('#' + $this.data(self.data_attr()));\n target = $this;\n } else {\n dropdown = $this;\n target = S(\"[\" + self.attr_name() + \"='\" + dropdown.attr('id') + \"']\");\n }\n\n var settings = target.data(self.attr_name(true) + '-init') || self.settings;\n\n if(S(e.target).data(self.data_attr()) && settings.is_hover) {\n self.closeall.call(self);\n }\n\n if (settings.is_hover) self.open.apply(self, [dropdown, target]);\n })\n .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {\n var $this = S(this);\n self.timeout = setTimeout(function () {\n if ($this.data(self.data_attr())) {\n var settings = $this.data(self.data_attr(true) + '-init') || self.settings;\n if (settings.is_hover) self.close.call(self, S('#' + $this.data(self.data_attr())));\n } else {\n var target = S('[' + self.attr_name() + '=\"' + S(this).attr('id') + '\"]'),\n settings = target.data(self.attr_name(true) + '-init') || self.settings;\n if (settings.is_hover) self.close.call(self, $this);\n }\n }.bind(this), 150);\n })\n .on('click.fndtn.dropdown', function (e) {\n var parent = S(e.target).closest('[' + self.attr_name() + '-content]');\n\n if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {\n return;\n }\n if (!(S(e.target).data('revealId')) &&\n (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||\n $.contains(parent.first()[0], e.target)))) {\n e.stopPropagation();\n return;\n }\n\n self.close.call(self, S('[' + self.attr_name() + '-content]'));\n })\n .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {\n self.settings.opened.call(this);\n })\n .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {\n self.settings.closed.call(this);\n });\n\n S(window)\n .off('.dropdown')\n .on('resize.fndtn.dropdown', self.throttle(function () {\n self.resize.call(self);\n }, 50));\n\n this.resize();\n },\n\n close: function (dropdown) {\n var self = this;\n dropdown.each(function () {\n var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id+ ']');\n original_target.attr('aria-expanded', \"false\");\n if (self.S(this).hasClass(self.settings.active_class)) {\n self.S(this)\n .css(Foundation.rtl ? 'right':'left', '-99999px')\n .attr('aria-hidden', \"true\")\n .removeClass(self.settings.active_class)\n .prev('[' + self.attr_name() + ']')\n .removeClass(self.settings.active_class)\n .removeData('target');\n\n self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);\n }\n });\n },\n\n closeall: function() {\n var self = this;\n $.each(self.S('[' + this.attr_name() + '-content]'), function() {\n self.close.call(self, self.S(this));\n });\n },\n\n open: function (dropdown, target) {\n this\n .css(dropdown\n .addClass(this.settings.active_class), target);\n dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);\n dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);\n dropdown.attr('aria-hidden', 'false');\n target.attr('aria-expanded', 'true');\n dropdown.focus();\n },\n\n data_attr: function () {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + this.name;\n }\n\n return this.name;\n },\n\n toggle : function (target) {\n if (target.hasClass(this.settings.disabled_class)) {\n return;\n }\n var dropdown = this.S('#' + target.data(this.data_attr()));\n if (dropdown.length === 0) {\n // No dropdown found, not continuing\n return;\n }\n\n this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));\n\n if (dropdown.hasClass(this.settings.active_class)) {\n this.close.call(this, dropdown);\n if (dropdown.data('target') !== target.get(0))\n this.open.call(this, dropdown, target);\n } else {\n this.open.call(this, dropdown, target);\n }\n },\n\n resize : function () {\n var dropdown = this.S('[' + this.attr_name() + '-content].open'),\n target = this.S(\"[\" + this.attr_name() + \"='\" + dropdown.attr('id') + \"']\");\n\n if (dropdown.length && target.length) {\n this.css(dropdown, target);\n }\n },\n\n css : function (dropdown, target) {\n var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),\n settings = target.data(this.attr_name(true) + '-init') || this.settings;\n\n this.clear_idx();\n\n if (this.small()) {\n var p = this.dirs.bottom.call(dropdown, target, settings);\n\n dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({\n position : 'absolute',\n width: '95%',\n 'max-width': 'none',\n top: p.top\n });\n\n dropdown.css(Foundation.rtl ? 'right':'left', left_offset);\n } else {\n\n this.style(dropdown, target, settings);\n }\n\n return dropdown;\n },\n\n style : function (dropdown, target, settings) {\n var css = $.extend({position: 'absolute'},\n this.dirs[settings.align].call(dropdown, target, settings));\n\n dropdown.attr('style', '').css(css);\n },\n\n // return CSS property object\n // `this` is the dropdown\n dirs : {\n // Calculate target offset\n _base : function (t) {\n var o_p = this.offsetParent(),\n o = o_p.offset(),\n p = t.offset();\n\n p.top -= o.top;\n p.left -= o.left;\n\n return p;\n },\n top: function (t, s) {\n var self = Foundation.libs.dropdown,\n p = self.dirs._base.call(this, t);\n\n this.addClass('drop-top');\n\n if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {\n self.adjust_pip(this,t,s,p);\n }\n\n if (Foundation.rtl) {\n return {left: p.left - this.outerWidth() + t.outerWidth(),\n top: p.top - this.outerHeight()};\n }\n\n return {left: p.left, top: p.top - this.outerHeight()};\n },\n bottom: function (t,s) {\n var self = Foundation.libs.dropdown,\n p = self.dirs._base.call(this, t);\n\n if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {\n self.adjust_pip(this,t,s,p);\n }\n\n if (self.rtl) {\n return {left: p.left - this.outerWidth() + t.outerWidth(), top: p.top + t.outerHeight()};\n }\n\n return {left: p.left, top: p.top + t.outerHeight()};\n },\n left: function (t, s) {\n var p = Foundation.libs.dropdown.dirs._base.call(this, t);\n\n this.addClass('drop-left');\n\n return {left: p.left - this.outerWidth(), top: p.top};\n },\n right: function (t, s) {\n var p = Foundation.libs.dropdown.dirs._base.call(this, t);\n\n this.addClass('drop-right');\n\n return {left: p.left + t.outerWidth(), top: p.top};\n }\n },\n\n // Insert rule to style psuedo elements\n adjust_pip : function (dropdown,target,settings,position) {\n var sheet = Foundation.stylesheet,\n pip_offset_base = 8;\n\n if (dropdown.hasClass(settings.mega_class)) {\n pip_offset_base = position.left + (target.outerWidth()/2) - 8;\n }\n else if (this.small()) {\n pip_offset_base += position.left - 8;\n }\n\n this.rule_idx = sheet.cssRules.length;\n\n var sel_before = '.f-dropdown.open:before',\n sel_after = '.f-dropdown.open:after',\n css_before = 'left: ' + pip_offset_base + 'px;',\n css_after = 'left: ' + (pip_offset_base - 1) + 'px;';\n\n if (sheet.insertRule) {\n sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);\n sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);\n } else {\n sheet.addRule(sel_before, css_before, this.rule_idx);\n sheet.addRule(sel_after, css_after, this.rule_idx + 1);\n }\n },\n\n // Remove old dropdown rule index\n clear_idx : function () {\n var sheet = Foundation.stylesheet;\n\n if (typeof this.rule_idx !== 'undefined') {\n sheet.deleteRule(this.rule_idx);\n sheet.deleteRule(this.rule_idx);\n delete this.rule_idx;\n }\n },\n\n small : function () {\n return matchMedia(Foundation.media_queries.small).matches &&\n !matchMedia(Foundation.media_queries.medium).matches;\n },\n\n off: function () {\n this.S(this.scope).off('.fndtn.dropdown');\n this.S('html, body').off('.fndtn.dropdown');\n this.S(window).off('.fndtn.dropdown');\n this.S('[data-dropdown-content]').off('.fndtn.dropdown');\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.equalizer = {\n name : 'equalizer',\n\n version : '5.4.7',\n\n settings : {\n use_tallest: true,\n before_height_change: $.noop,\n after_height_change: $.noop,\n equalize_on_stack: false\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'image_loaded');\n this.bindings(method, options);\n this.reflow();\n },\n\n events : function () {\n this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){\n this.reflow();\n }.bind(this));\n },\n\n equalize: function(equalizer) {\n var isStacked = false,\n vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),\n settings = equalizer.data(this.attr_name(true)+'-init');\n\n if (vals.length === 0) return;\n var firstTopOffset = vals.first().offset().top;\n settings.before_height_change();\n equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');\n vals.height('inherit');\n vals.each(function(){\n var el = $(this);\n if (el.offset().top !== firstTopOffset) {\n isStacked = true;\n }\n });\n\n if (settings.equalize_on_stack === false) {\n if (isStacked) return;\n };\n\n var heights = vals.map(function(){ return $(this).outerHeight(false) }).get();\n\n if (settings.use_tallest) {\n var max = Math.max.apply(null, heights);\n vals.css('height', max);\n } else {\n var min = Math.min.apply(null, heights);\n vals.css('height', min);\n }\n settings.after_height_change();\n equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');\n },\n\n reflow : function () {\n var self = this;\n\n this.S('[' + this.attr_name() + ']', this.scope).each(function(){\n var $eq_target = $(this);\n self.image_loaded(self.S('img', this), function(){\n self.equalize($eq_target)\n });\n });\n }\n };\n})(jQuery, window, window.document);\n\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.interchange = {\n name : 'interchange',\n\n version : '5.4.7',\n\n cache : {},\n\n images_loaded : false,\n nodes_loaded : false,\n\n settings : {\n load_attr : 'interchange',\n\n named_queries : {\n 'default' : 'only screen',\n small : Foundation.media_queries.small,\n medium : Foundation.media_queries.medium,\n large : Foundation.media_queries.large,\n xlarge : Foundation.media_queries.xlarge,\n xxlarge: Foundation.media_queries.xxlarge,\n landscape : 'only screen and (orientation: landscape)',\n portrait : 'only screen and (orientation: portrait)',\n retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n 'only screen and (min--moz-device-pixel-ratio: 2),' +\n 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n 'only screen and (min-device-pixel-ratio: 2),' +\n 'only screen and (min-resolution: 192dpi),' +\n 'only screen and (min-resolution: 2dppx)'\n },\n\n directives : {\n replace: function (el, path, trigger) {\n // The trigger argument, if called within the directive, fires\n // an event named after the directive on the element, passing\n // any parameters along to the event that you pass to trigger.\n //\n // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)\n //\n // This allows you to bind a callback like so:\n // $('#interchangeContainer').on('replace', function (e, a, b, c) {\n // console.log($(this).html(), a, b, c);\n // });\n\n if (/IMG/.test(el[0].nodeName)) {\n var orig_path = el[0].src;\n\n if (new RegExp(path, 'i').test(orig_path)) return;\n\n el[0].src = path;\n\n return trigger(el[0].src);\n }\n var last_path = el.data(this.data_attr + '-last-path'),\n self = this;\n\n if (last_path == path) return;\n\n if (/\\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {\n $(el).css('background-image', 'url('+path+')');\n el.data('interchange-last-path', path);\n return trigger(path);\n }\n\n return $.get(path, function (response) {\n el.html(response);\n el.data(self.data_attr + '-last-path', path);\n trigger();\n });\n\n }\n }\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'throttle random_str');\n\n this.data_attr = this.set_data_attr();\n $.extend(true, this.settings, method, options);\n this.bindings(method, options);\n this.load('images');\n this.load('nodes');\n },\n\n get_media_hash : function() {\n var mediaHash='';\n for (var queryName in this.settings.named_queries ) {\n mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();\n }\n return mediaHash;\n },\n\n events : function () {\n var self = this, prevMediaHash;\n\n $(window)\n .off('.interchange')\n .on('resize.fndtn.interchange', self.throttle(function () {\n var currMediaHash = self.get_media_hash();\n if (currMediaHash !== prevMediaHash) {\n self.resize();\n }\n prevMediaHash = currMediaHash;\n }, 50));\n\n return this;\n },\n\n resize : function () {\n var cache = this.cache;\n\n if(!this.images_loaded || !this.nodes_loaded) {\n setTimeout($.proxy(this.resize, this), 50);\n return;\n }\n\n for (var uuid in cache) {\n if (cache.hasOwnProperty(uuid)) {\n var passed = this.results(uuid, cache[uuid]);\n\n if (passed) {\n this.settings.directives[passed\n .scenario[1]].call(this, passed.el, passed.scenario[0], function () {\n if (arguments[0] instanceof Array) { \n var args = arguments[0];\n } else { \n var args = Array.prototype.slice.call(arguments, 0);\n }\n\n passed.el.trigger(passed.scenario[1], args);\n });\n }\n }\n }\n\n },\n\n results : function (uuid, scenarios) {\n var count = scenarios.length;\n\n if (count > 0) {\n var el = this.S('[' + this.add_namespace('data-uuid') + '=\"' + uuid + '\"]');\n\n while (count--) {\n var mq, rule = scenarios[count][2];\n if (this.settings.named_queries.hasOwnProperty(rule)) {\n mq = matchMedia(this.settings.named_queries[rule]);\n } else {\n mq = matchMedia(rule);\n }\n if (mq.matches) {\n return {el: el, scenario: scenarios[count]};\n }\n }\n }\n\n return false;\n },\n\n load : function (type, force_update) {\n if (typeof this['cached_' + type] === 'undefined' || force_update) {\n this['update_' + type]();\n }\n\n return this['cached_' + type];\n },\n\n update_images : function () {\n var images = this.S('img[' + this.data_attr + ']'),\n count = images.length,\n i = count,\n loaded_count = 0,\n data_attr = this.data_attr;\n\n this.cache = {};\n this.cached_images = [];\n this.images_loaded = (count === 0);\n\n while (i--) {\n loaded_count++;\n if (images[i]) {\n var str = images[i].getAttribute(data_attr) || '';\n\n if (str.length > 0) {\n this.cached_images.push(images[i]);\n }\n }\n\n if (loaded_count === count) {\n this.images_loaded = true;\n this.enhance('images');\n }\n }\n\n return this;\n },\n\n update_nodes : function () {\n var nodes = this.S('[' + this.data_attr + ']').not('img'),\n count = nodes.length,\n i = count,\n loaded_count = 0,\n data_attr = this.data_attr;\n\n this.cached_nodes = [];\n this.nodes_loaded = (count === 0);\n\n\n while (i--) {\n loaded_count++;\n var str = nodes[i].getAttribute(data_attr) || '';\n\n if (str.length > 0) {\n this.cached_nodes.push(nodes[i]);\n }\n\n if(loaded_count === count) {\n this.nodes_loaded = true;\n this.enhance('nodes');\n }\n }\n\n return this;\n },\n\n enhance : function (type) {\n var i = this['cached_' + type].length;\n\n while (i--) {\n this.object($(this['cached_' + type][i]));\n }\n\n return $(window).trigger('resize').trigger('resize.fndtn.interchange');\n },\n\n convert_directive : function (directive) {\n\n var trimmed = this.trim(directive);\n\n if (trimmed.length > 0) {\n return trimmed;\n }\n\n return 'replace';\n },\n\n parse_scenario : function (scenario) {\n // This logic had to be made more complex since some users were using commas in the url path\n // So we cannot simply just split on a comma\n var directive_match = scenario[0].match(/(.+),\\s*(\\w+)\\s*$/),\n media_query = scenario[1];\n\n if (directive_match) {\n var path = directive_match[1],\n directive = directive_match[2];\n }\n else {\n var cached_split = scenario[0].split(/,\\s*$/),\n path = cached_split[0],\n directive = ''; \n }\n\n return [this.trim(path), this.convert_directive(directive), this.trim(media_query)];\n },\n\n object : function(el) {\n var raw_arr = this.parse_data_attr(el),\n scenarios = [], \n i = raw_arr.length;\n\n if (i > 0) {\n while (i--) {\n var split = raw_arr[i].split(/\\((.*?)(\\))$/);\n\n if (split.length > 1) {\n var params = this.parse_scenario(split);\n scenarios.push(params);\n }\n }\n }\n\n return this.store(el, scenarios);\n },\n\n store : function (el, scenarios) {\n var uuid = this.random_str(),\n current_uuid = el.data(this.add_namespace('uuid', true));\n\n if (this.cache[current_uuid]) return this.cache[current_uuid];\n\n el.attr(this.add_namespace('data-uuid'), uuid);\n\n return this.cache[uuid] = scenarios;\n },\n\n trim : function(str) {\n\n if (typeof str === 'string') {\n return $.trim(str);\n }\n\n return str;\n },\n\n set_data_attr: function (init) {\n if (init) {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + this.settings.load_attr;\n }\n\n return this.settings.load_attr;\n }\n\n if (this.namespace.length > 0) {\n return 'data-' + this.namespace + '-' + this.settings.load_attr;\n }\n\n return 'data-' + this.settings.load_attr;\n },\n\n parse_data_attr : function (el) {\n var raw = el.attr(this.attr_name()).split(/\\[(.*?)\\]/),\n i = raw.length, \n output = [];\n\n while (i--) {\n if (raw[i].replace(/[\\W\\d]+/, '').length > 4) {\n output.push(raw[i]);\n }\n }\n\n return output;\n },\n\n reflow : function () {\n this.load('images', true);\n this.load('nodes', true);\n }\n\n };\n\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n var Modernizr = Modernizr || false;\n\n Foundation.libs.joyride = {\n name : 'joyride',\n\n version : '5.4.7',\n\n defaults : {\n expose : false, // turn on or off the expose feature\n modal : true, // Whether to cover page with modal during the tour\n keyboard : true, // enable left, right and esc keystrokes\n tip_location : 'bottom', // 'top' or 'bottom' in relation to parent\n nub_position : 'auto', // override on a per tooltip bases\n scroll_speed : 1500, // Page scrolling speed in milliseconds, 0 = no scroll animation\n scroll_animation : 'linear', // supports 'swing' and 'linear', extend with jQuery UI.\n timer : 0, // 0 = no timer , all other numbers = timer in milliseconds\n start_timer_on_click : true, // true or false - true requires clicking the first button start the timer\n start_offset : 0, // the index of the tooltip you want to start on (index of the li)\n next_button : true, // true or false to control whether a next button is used\n prev_button : true, // true or false to control whether a prev button is used\n tip_animation : 'fade', // 'pop' or 'fade' in each tip\n pause_after : [], // array of indexes where to pause the tour after\n exposed : [], // array of expose elements\n tip_animation_fade_speed : 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition\n cookie_monster : false, // true or false to control whether cookies are used\n cookie_name : 'joyride', // Name the cookie you'll use\n cookie_domain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'\n cookie_expires : 365, // set when you would like the cookie to expire.\n tip_container : 'body', // Where will the tip be attached\n abort_on_close : true, // When true, the close event will not fire any callback\n tip_location_patterns : {\n top: ['bottom'],\n bottom: [], // bottom should not need to be repositioned\n left: ['right', 'top', 'bottom'],\n right: ['left', 'top', 'bottom']\n },\n post_ride_callback : function (){}, // A method to call once the tour closes (canceled or complete)\n post_step_callback : function (){}, // A method to call after each step\n pre_step_callback : function (){}, // A method to call before each step\n pre_ride_callback : function (){}, // A method to call before the tour starts (passed index, tip, and cloned exposed element)\n post_expose_callback : function (){}, // A method to call after an element has been exposed\n template : { // HTML segments for tip layout\n link : '×',\n timer : '
',\n tip : '
',\n wrapper : '
',\n button : '',\n prev_button : '',\n modal : '
',\n expose : '
',\n expose_cover : '
'\n },\n expose_add_class : '' // One or more space-separated class names to be added to exposed element\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'throttle random_str');\n\n this.settings = this.settings || $.extend({}, this.defaults, (options || method));\n\n this.bindings(method, options)\n },\n\n go_next : function() {\n if (this.settings.$li.next().length < 1) {\n this.end();\n } else if (this.settings.timer > 0) {\n clearTimeout(this.settings.automate);\n this.hide();\n this.show();\n this.startTimer();\n } else {\n this.hide();\n this.show();\n }\n },\n\n go_prev : function() {\n if (this.settings.$li.prev().length < 1) {\n // Do nothing if there are no prev element\n } else if (this.settings.timer > 0) {\n clearTimeout(this.settings.automate);\n this.hide();\n this.show(null, true);\n this.startTimer();\n } else {\n this.hide();\n this.show(null, true);\n }\n },\n\n events : function () {\n var self = this;\n\n $(this.scope)\n .off('.joyride')\n .on('click.fndtn.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {\n e.preventDefault();\n this.go_next()\n }.bind(this))\n .on('click.fndtn.joyride', '.joyride-prev-tip', function (e) {\n e.preventDefault();\n this.go_prev();\n }.bind(this))\n\n .on('click.fndtn.joyride', '.joyride-close-tip', function (e) {\n e.preventDefault();\n this.end(this.settings.abort_on_close);\n }.bind(this))\n\n .on(\"keyup.fndtn.joyride\", function(e) {\n // Don't do anything if keystrokes are disabled\n // or if the joyride is not being shown\n if (!this.settings.keyboard || !this.settings.riding) return;\n\n switch (e.which) {\n case 39: // right arrow\n e.preventDefault();\n this.go_next();\n break;\n case 37: // left arrow\n e.preventDefault();\n this.go_prev();\n break;\n case 27: // escape\n e.preventDefault();\n this.end(this.settings.abort_on_close);\n }\n }.bind(this));\n\n $(window)\n .off('.joyride')\n .on('resize.fndtn.joyride', self.throttle(function () {\n if ($('[' + self.attr_name() + ']').length > 0 && self.settings.$next_tip && self.settings.riding) {\n if (self.settings.exposed.length > 0) {\n var $els = $(self.settings.exposed);\n\n $els.each(function () {\n var $this = $(this);\n self.un_expose($this);\n self.expose($this);\n });\n }\n\n if (self.is_phone()) {\n self.pos_phone();\n } else {\n self.pos_default(false);\n }\n }\n }, 100));\n },\n\n start : function () {\n var self = this,\n $this = $('[' + this.attr_name() + ']', this.scope),\n integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],\n int_settings_count = integer_settings.length;\n\n if (!$this.length > 0) return;\n\n if (!this.settings.init) this.events();\n\n this.settings = $this.data(this.attr_name(true) + '-init');\n\n // non configureable settings\n this.settings.$content_el = $this;\n this.settings.$body = $(this.settings.tip_container);\n this.settings.body_offset = $(this.settings.tip_container).position();\n this.settings.$tip_content = this.settings.$content_el.find('> li');\n this.settings.paused = false;\n this.settings.attempts = 0;\n this.settings.riding = true;\n\n // can we create cookies?\n if (typeof $.cookie !== 'function') {\n this.settings.cookie_monster = false;\n }\n\n // generate the tips and insert into dom.\n if (!this.settings.cookie_monster || this.settings.cookie_monster && !$.cookie(this.settings.cookie_name)) {\n this.settings.$tip_content.each(function (index) {\n var $this = $(this);\n this.settings = $.extend({}, self.defaults, self.data_options($this));\n\n // Make sure that settings parsed from data_options are integers where necessary\n var i = int_settings_count;\n while (i--) {\n self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);\n }\n self.create({$li : $this, index : index});\n });\n\n // show first tip\n if (!this.settings.start_timer_on_click && this.settings.timer > 0) {\n this.show('init');\n this.startTimer();\n } else {\n this.show('init');\n }\n\n }\n },\n\n resume : function () {\n this.set_li();\n this.show();\n },\n\n tip_template : function (opts) {\n var $blank, content;\n\n opts.tip_class = opts.tip_class || '';\n\n $blank = $(this.settings.template.tip).addClass(opts.tip_class);\n content = $.trim($(opts.li).html()) +\n this.prev_button_text(opts.prev_button_text, opts.index) +\n this.button_text(opts.button_text) +\n this.settings.template.link +\n this.timer_instance(opts.index);\n\n $blank.append($(this.settings.template.wrapper));\n $blank.first().attr(this.add_namespace('data-index'), opts.index);\n $('.joyride-content-wrapper', $blank).append(content);\n\n return $blank[0];\n },\n\n timer_instance : function (index) {\n var txt;\n\n if ((index === 0 && this.settings.start_timer_on_click && this.settings.timer > 0) || this.settings.timer === 0) {\n txt = '';\n } else {\n txt = $(this.settings.template.timer)[0].outerHTML;\n }\n return txt;\n },\n\n button_text : function (txt) {\n if (this.settings.tip_settings.next_button) {\n txt = $.trim(txt) || 'Next';\n txt = $(this.settings.template.button).append(txt)[0].outerHTML;\n } else {\n txt = '';\n }\n return txt;\n },\n\n prev_button_text : function (txt, idx) {\n if (this.settings.tip_settings.prev_button) {\n txt = $.trim(txt) || 'Previous';\n\n // Add the disabled class to the button if it's the first element\n if (idx == 0)\n txt = $(this.settings.template.prev_button).append(txt).addClass('disabled')[0].outerHTML;\n else\n txt = $(this.settings.template.prev_button).append(txt)[0].outerHTML;\n } else {\n txt = '';\n }\n return txt;\n },\n\n create : function (opts) {\n this.settings.tip_settings = $.extend({}, this.settings, this.data_options(opts.$li));\n var buttonText = opts.$li.attr(this.add_namespace('data-button'))\n || opts.$li.attr(this.add_namespace('data-text')),\n prevButtonText = opts.$li.attr(this.add_namespace('data-button-prev'))\n || opts.$li.attr(this.add_namespace('data-prev-text')),\n tipClass = opts.$li.attr('class'),\n $tip_content = $(this.tip_template({\n tip_class : tipClass,\n index : opts.index,\n button_text : buttonText,\n prev_button_text : prevButtonText,\n li : opts.$li\n }));\n\n $(this.settings.tip_container).append($tip_content);\n },\n\n show : function (init, is_prev) {\n var $timer = null;\n\n // are we paused?\n if (this.settings.$li === undefined\n || ($.inArray(this.settings.$li.index(), this.settings.pause_after) === -1)) {\n\n // don't go to the next li if the tour was paused\n if (this.settings.paused) {\n this.settings.paused = false;\n } else {\n this.set_li(init, is_prev);\n }\n\n this.settings.attempts = 0;\n\n if (this.settings.$li.length && this.settings.$target.length > 0) {\n if (init) { //run when we first start\n this.settings.pre_ride_callback(this.settings.$li.index(), this.settings.$next_tip);\n if (this.settings.modal) {\n this.show_modal();\n }\n }\n\n this.settings.pre_step_callback(this.settings.$li.index(), this.settings.$next_tip);\n\n if (this.settings.modal && this.settings.expose) {\n this.expose();\n }\n\n this.settings.tip_settings = $.extend({}, this.settings, this.data_options(this.settings.$li));\n\n this.settings.timer = parseInt(this.settings.timer, 10);\n\n this.settings.tip_settings.tip_location_pattern = this.settings.tip_location_patterns[this.settings.tip_settings.tip_location];\n\n // scroll if not modal\n if (!/body/i.test(this.settings.$target.selector)) {\n this.scroll_to();\n }\n\n if (this.is_phone()) {\n this.pos_phone(true);\n } else {\n this.pos_default(true);\n }\n\n $timer = this.settings.$next_tip.find('.joyride-timer-indicator');\n\n if (/pop/i.test(this.settings.tip_animation)) {\n\n $timer.width(0);\n\n if (this.settings.timer > 0) {\n\n this.settings.$next_tip.show();\n\n setTimeout(function () {\n $timer.animate({\n width: $timer.parent().width()\n }, this.settings.timer, 'linear');\n }.bind(this), this.settings.tip_animation_fade_speed);\n\n } else {\n this.settings.$next_tip.show();\n\n }\n\n\n } else if (/fade/i.test(this.settings.tip_animation)) {\n\n $timer.width(0);\n\n if (this.settings.timer > 0) {\n\n this.settings.$next_tip\n .fadeIn(this.settings.tip_animation_fade_speed)\n .show();\n\n setTimeout(function () {\n $timer.animate({\n width: $timer.parent().width()\n }, this.settings.timer, 'linear');\n }.bind(this), this.settings.tip_animation_fade_speed);\n\n } else {\n this.settings.$next_tip.fadeIn(this.settings.tip_animation_fade_speed);\n }\n }\n\n this.settings.$current_tip = this.settings.$next_tip;\n\n // skip non-existant targets\n } else if (this.settings.$li && this.settings.$target.length < 1) {\n\n this.show(init, is_prev);\n\n } else {\n\n this.end();\n\n }\n } else {\n\n this.settings.paused = true;\n\n }\n\n },\n\n is_phone : function () {\n return matchMedia(Foundation.media_queries.small).matches &&\n !matchMedia(Foundation.media_queries.medium).matches;\n },\n\n hide : function () {\n if (this.settings.modal && this.settings.expose) {\n this.un_expose();\n }\n\n if (!this.settings.modal) {\n $('.joyride-modal-bg').hide();\n }\n\n // Prevent scroll bouncing...wait to remove from layout\n this.settings.$current_tip.css('visibility', 'hidden');\n setTimeout($.proxy(function() {\n this.hide();\n this.css('visibility', 'visible');\n }, this.settings.$current_tip), 0);\n this.settings.post_step_callback(this.settings.$li.index(),\n this.settings.$current_tip);\n },\n\n set_li : function (init, is_prev) {\n if (init) {\n this.settings.$li = this.settings.$tip_content.eq(this.settings.start_offset);\n this.set_next_tip();\n this.settings.$current_tip = this.settings.$next_tip;\n } else {\n if (is_prev)\n this.settings.$li = this.settings.$li.prev();\n else\n this.settings.$li = this.settings.$li.next();\n this.set_next_tip();\n }\n\n this.set_target();\n },\n\n set_next_tip : function () {\n this.settings.$next_tip = $(\".joyride-tip-guide\").eq(this.settings.$li.index());\n this.settings.$next_tip.data('closed', '');\n },\n\n set_target : function () {\n var cl = this.settings.$li.attr(this.add_namespace('data-class')),\n id = this.settings.$li.attr(this.add_namespace('data-id')),\n $sel = function () {\n if (id) {\n return $(document.getElementById(id));\n } else if (cl) {\n return $('.' + cl).first();\n } else {\n return $('body');\n }\n };\n\n this.settings.$target = $sel();\n },\n\n scroll_to : function () {\n var window_half, tipOffset;\n\n window_half = $(window).height() / 2;\n tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight());\n\n if (tipOffset != 0) {\n $('html, body').stop().animate({\n scrollTop: tipOffset\n }, this.settings.scroll_speed, 'swing');\n }\n },\n\n paused : function () {\n return ($.inArray((this.settings.$li.index() + 1), this.settings.pause_after) === -1);\n },\n\n restart : function () {\n this.hide();\n this.settings.$li = undefined;\n this.show('init');\n },\n\n pos_default : function (init) {\n var $nub = this.settings.$next_tip.find('.joyride-nub'),\n nub_width = Math.ceil($nub.outerWidth() / 2),\n nub_height = Math.ceil($nub.outerHeight() / 2),\n toggle = init || false;\n\n // tip must not be \"display: none\" to calculate position\n if (toggle) {\n this.settings.$next_tip.css('visibility', 'hidden');\n this.settings.$next_tip.show();\n }\n\n if (!/body/i.test(this.settings.$target.selector)) {\n \t var topAdjustment = this.settings.tip_settings.tipAdjustmentY ? parseInt(this.settings.tip_settings.tipAdjustmentY) : 0,\n\t\t\t leftAdjustment = this.settings.tip_settings.tipAdjustmentX ? parseInt(this.settings.tip_settings.tipAdjustmentX) : 0;\n\n if (this.bottom()) {\n if (this.rtl) {\n this.settings.$next_tip.css({\n top: (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),\n left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth() + leftAdjustment});\n } else {\n this.settings.$next_tip.css({\n top: (this.settings.$target.offset().top + nub_height + this.settings.$target.outerHeight() + topAdjustment),\n left: this.settings.$target.offset().left + leftAdjustment});\n }\n\n this.nub_position($nub, this.settings.tip_settings.nub_position, 'top');\n\n } else if (this.top()) {\n if (this.rtl) {\n this.settings.$next_tip.css({\n top: (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),\n left: this.settings.$target.offset().left + this.settings.$target.outerWidth() - this.settings.$next_tip.outerWidth()});\n } else {\n this.settings.$next_tip.css({\n top: (this.settings.$target.offset().top - this.settings.$next_tip.outerHeight() - nub_height + topAdjustment),\n left: this.settings.$target.offset().left + leftAdjustment});\n }\n\n this.nub_position($nub, this.settings.tip_settings.nub_position, 'bottom');\n\n } else if (this.right()) {\n\n this.settings.$next_tip.css({\n top: this.settings.$target.offset().top + topAdjustment,\n left: (this.settings.$target.outerWidth() + this.settings.$target.offset().left + nub_width + leftAdjustment)});\n\n this.nub_position($nub, this.settings.tip_settings.nub_position, 'left');\n\n } else if (this.left()) {\n\n this.settings.$next_tip.css({\n top: this.settings.$target.offset().top + topAdjustment,\n left: (this.settings.$target.offset().left - this.settings.$next_tip.outerWidth() - nub_width + leftAdjustment)});\n\n this.nub_position($nub, this.settings.tip_settings.nub_position, 'right');\n\n }\n\n if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tip_settings.tip_location_pattern.length) {\n\n $nub.removeClass('bottom')\n .removeClass('top')\n .removeClass('right')\n .removeClass('left');\n\n this.settings.tip_settings.tip_location = this.settings.tip_settings.tip_location_pattern[this.settings.attempts];\n\n this.settings.attempts++;\n\n this.pos_default();\n\n }\n\n } else if (this.settings.$li.length) {\n\n this.pos_modal($nub);\n\n }\n\n if (toggle) {\n this.settings.$next_tip.hide();\n this.settings.$next_tip.css('visibility', 'visible');\n }\n\n },\n\n pos_phone : function (init) {\n var tip_height = this.settings.$next_tip.outerHeight(),\n tip_offset = this.settings.$next_tip.offset(),\n target_height = this.settings.$target.outerHeight(),\n $nub = $('.joyride-nub', this.settings.$next_tip),\n nub_height = Math.ceil($nub.outerHeight() / 2),\n toggle = init || false;\n\n $nub.removeClass('bottom')\n .removeClass('top')\n .removeClass('right')\n .removeClass('left');\n\n if (toggle) {\n this.settings.$next_tip.css('visibility', 'hidden');\n this.settings.$next_tip.show();\n }\n\n if (!/body/i.test(this.settings.$target.selector)) {\n\n if (this.top()) {\n\n this.settings.$next_tip.offset({top: this.settings.$target.offset().top - tip_height - nub_height});\n $nub.addClass('bottom');\n\n } else {\n\n this.settings.$next_tip.offset({top: this.settings.$target.offset().top + target_height + nub_height});\n $nub.addClass('top');\n\n }\n\n } else if (this.settings.$li.length) {\n this.pos_modal($nub);\n }\n\n if (toggle) {\n this.settings.$next_tip.hide();\n this.settings.$next_tip.css('visibility', 'visible');\n }\n },\n\n pos_modal : function ($nub) {\n this.center();\n $nub.hide();\n\n this.show_modal();\n },\n\n show_modal : function () {\n if (!this.settings.$next_tip.data('closed')) {\n var joyridemodalbg = $('.joyride-modal-bg');\n if (joyridemodalbg.length < 1) {\n $('body').append(this.settings.template.modal).show();\n }\n\n if (/pop/i.test(this.settings.tip_animation)) {\n joyridemodalbg.show();\n } else {\n joyridemodalbg.fadeIn(this.settings.tip_animation_fade_speed);\n }\n }\n },\n\n expose : function () {\n var expose,\n exposeCover,\n el,\n origCSS,\n origClasses,\n randId = 'expose-' + this.random_str(6);\n\n if (arguments.length > 0 && arguments[0] instanceof $) {\n el = arguments[0];\n } else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){\n el = this.settings.$target;\n } else {\n return false;\n }\n\n if(el.length < 1){\n if(window.console){\n console.error('element not valid', el);\n }\n return false;\n }\n\n expose = $(this.settings.template.expose);\n this.settings.$body.append(expose);\n expose.css({\n top: el.offset().top,\n left: el.offset().left,\n width: el.outerWidth(true),\n height: el.outerHeight(true)\n });\n\n exposeCover = $(this.settings.template.expose_cover);\n\n origCSS = {\n zIndex: el.css('z-index'),\n position: el.css('position')\n };\n\n origClasses = el.attr('class') == null ? '' : el.attr('class');\n\n el.css('z-index',parseInt(expose.css('z-index'))+1);\n\n if (origCSS.position == 'static') {\n el.css('position','relative');\n }\n\n el.data('expose-css',origCSS);\n el.data('orig-class', origClasses);\n el.attr('class', origClasses + ' ' + this.settings.expose_add_class);\n\n exposeCover.css({\n top: el.offset().top,\n left: el.offset().left,\n width: el.outerWidth(true),\n height: el.outerHeight(true)\n });\n\n if (this.settings.modal) this.show_modal();\n\n this.settings.$body.append(exposeCover);\n expose.addClass(randId);\n exposeCover.addClass(randId);\n el.data('expose', randId);\n this.settings.post_expose_callback(this.settings.$li.index(), this.settings.$next_tip, el);\n this.add_exposed(el);\n },\n\n un_expose : function () {\n var exposeId,\n el,\n expose ,\n origCSS,\n origClasses,\n clearAll = false;\n\n if (arguments.length > 0 && arguments[0] instanceof $) {\n el = arguments[0];\n } else if(this.settings.$target && !/body/i.test(this.settings.$target.selector)){\n el = this.settings.$target;\n } else {\n return false;\n }\n\n if(el.length < 1){\n if (window.console) {\n console.error('element not valid', el);\n }\n return false;\n }\n\n exposeId = el.data('expose');\n expose = $('.' + exposeId);\n\n if (arguments.length > 1) {\n clearAll = arguments[1];\n }\n\n if (clearAll === true) {\n $('.joyride-expose-wrapper,.joyride-expose-cover').remove();\n } else {\n expose.remove();\n }\n\n origCSS = el.data('expose-css');\n\n if (origCSS.zIndex == 'auto') {\n el.css('z-index', '');\n } else {\n el.css('z-index', origCSS.zIndex);\n }\n\n if (origCSS.position != el.css('position')) {\n if(origCSS.position == 'static') {// this is default, no need to set it.\n el.css('position', '');\n } else {\n el.css('position', origCSS.position);\n }\n }\n\n origClasses = el.data('orig-class');\n el.attr('class', origClasses);\n el.removeData('orig-classes');\n\n el.removeData('expose');\n el.removeData('expose-z-index');\n this.remove_exposed(el);\n },\n\n add_exposed: function(el){\n this.settings.exposed = this.settings.exposed || [];\n if (el instanceof $ || typeof el === 'object') {\n this.settings.exposed.push(el[0]);\n } else if (typeof el == 'string') {\n this.settings.exposed.push(el);\n }\n },\n\n remove_exposed: function(el){\n var search, i;\n if (el instanceof $) {\n search = el[0]\n } else if (typeof el == 'string'){\n search = el;\n }\n\n this.settings.exposed = this.settings.exposed || [];\n i = this.settings.exposed.length;\n\n while (i--) {\n if (this.settings.exposed[i] == search) {\n this.settings.exposed.splice(i, 1);\n return;\n }\n }\n },\n\n center : function () {\n var $w = $(window);\n\n this.settings.$next_tip.css({\n top : ((($w.height() - this.settings.$next_tip.outerHeight()) / 2) + $w.scrollTop()),\n left : ((($w.width() - this.settings.$next_tip.outerWidth()) / 2) + $w.scrollLeft())\n });\n\n return true;\n },\n\n bottom : function () {\n return /bottom/i.test(this.settings.tip_settings.tip_location);\n },\n\n top : function () {\n return /top/i.test(this.settings.tip_settings.tip_location);\n },\n\n right : function () {\n return /right/i.test(this.settings.tip_settings.tip_location);\n },\n\n left : function () {\n return /left/i.test(this.settings.tip_settings.tip_location);\n },\n\n corners : function (el) {\n var w = $(window),\n window_half = w.height() / 2,\n //using this to calculate since scroll may not have finished yet.\n tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.settings.$next_tip.outerHeight()),\n right = w.width() + w.scrollLeft(),\n offsetBottom = w.height() + tipOffset,\n bottom = w.height() + w.scrollTop(),\n top = w.scrollTop();\n\n if (tipOffset < top) {\n if (tipOffset < 0) {\n top = 0;\n } else {\n top = tipOffset;\n }\n }\n\n if (offsetBottom > bottom) {\n bottom = offsetBottom;\n }\n\n return [\n el.offset().top < top,\n right < el.offset().left + el.outerWidth(),\n bottom < el.offset().top + el.outerHeight(),\n w.scrollLeft() > el.offset().left\n ];\n },\n\n visible : function (hidden_corners) {\n var i = hidden_corners.length;\n\n while (i--) {\n if (hidden_corners[i]) return false;\n }\n\n return true;\n },\n\n nub_position : function (nub, pos, def) {\n if (pos === 'auto') {\n nub.addClass(def);\n } else {\n nub.addClass(pos);\n }\n },\n\n startTimer : function () {\n if (this.settings.$li.length) {\n this.settings.automate = setTimeout(function () {\n this.hide();\n this.show();\n this.startTimer();\n }.bind(this), this.settings.timer);\n } else {\n clearTimeout(this.settings.automate);\n }\n },\n\n end : function (abort) {\n if (this.settings.cookie_monster) {\n $.cookie(this.settings.cookie_name, 'ridden', { expires: this.settings.cookie_expires, domain: this.settings.cookie_domain });\n }\n\n if (this.settings.timer > 0) {\n clearTimeout(this.settings.automate);\n }\n\n if (this.settings.modal && this.settings.expose) {\n this.un_expose();\n }\n\n // Unplug keystrokes listener\n $(this.scope).off('keyup.joyride')\n\n this.settings.$next_tip.data('closed', true);\n this.settings.riding = false;\n\n $('.joyride-modal-bg').hide();\n this.settings.$current_tip.hide();\n\n if (typeof abort === 'undefined' || abort === false) {\n this.settings.post_step_callback(this.settings.$li.index(), this.settings.$current_tip);\n this.settings.post_ride_callback(this.settings.$li.index(), this.settings.$current_tip);\n }\n\n $('.joyride-tip-guide').remove();\n },\n\n off : function () {\n $(this.scope).off('.joyride');\n $(window).off('.joyride');\n $('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');\n $('.joyride-tip-guide, .joyride-modal-bg').remove();\n clearTimeout(this.settings.automate);\n this.settings = {};\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs['magellan-expedition'] = {\n name : 'magellan-expedition',\n\n version : '5.4.7',\n\n settings : {\n active_class: 'active',\n threshold: 0, // pixels from the top of the expedition for it to become fixes\n destination_threshold: 20, // pixels from the top of destination for it to be considered active\n throttle_delay: 30, // calculation throttling to increase framerate\n fixed_top: 0 // top distance in pixels assigend to the fixed element on scroll\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'throttle');\n this.bindings(method, options);\n },\n\n events : function () {\n var self = this,\n S = self.S,\n settings = self.settings;\n\n // initialize expedition offset\n self.set_expedition_position();\n\n S(self.scope)\n .off('.magellan')\n .on('click.fndtn.magellan', '[' + self.add_namespace('data-magellan-arrival') + '] a[href^=\"#\"]', function (e) {\n e.preventDefault();\n var expedition = $(this).closest('[' + self.attr_name() + ']'),\n settings = expedition.data('magellan-expedition-init'),\n hash = this.hash.split('#').join(''),\n target = $(\"a[name='\"+hash+\"']\");\n\n if (target.length === 0) {\n target = $('#'+hash);\n\n }\n\n\n // Account for expedition height if fixed position\n var scroll_top = target.offset().top - settings.destination_threshold + 1;\n scroll_top = scroll_top - expedition.outerHeight();\n\n $('html, body').stop().animate({\n 'scrollTop': scroll_top\n }, 700, 'swing', function () {\n if(history.pushState) {\n history.pushState(null, null, '#'+hash);\n }\n else {\n location.hash = '#'+hash;\n }\n });\n })\n .on('scroll.fndtn.magellan', self.throttle(this.check_for_arrivals.bind(this), settings.throttle_delay));\n\n $(window)\n .on('resize.fndtn.magellan', self.throttle(this.set_expedition_position.bind(this), settings.throttle_delay));\n },\n\n check_for_arrivals : function() {\n var self = this;\n self.update_arrivals();\n self.update_expedition_positions();\n },\n\n set_expedition_position : function() {\n var self = this;\n $('[' + this.attr_name() + '=fixed]', self.scope).each(function(idx, el) {\n var expedition = $(this),\n settings = expedition.data('magellan-expedition-init'),\n styles = expedition.attr('styles'), // save styles\n top_offset, fixed_top;\n\n expedition.attr('style', '');\n top_offset = expedition.offset().top + settings.threshold;\n\n //set fixed-top by attribute\n fixed_top = parseInt(expedition.data('magellan-fixed-top'));\n if(!isNaN(fixed_top))\n self.settings.fixed_top = fixed_top;\n\n expedition.data(self.data_attr('magellan-top-offset'), top_offset);\n expedition.attr('style', styles);\n });\n },\n\n update_expedition_positions : function() {\n var self = this,\n window_top_offset = $(window).scrollTop();\n\n $('[' + this.attr_name() + '=fixed]', self.scope).each(function() {\n var expedition = $(this),\n settings = expedition.data('magellan-expedition-init'),\n styles = expedition.attr('style'), // save styles\n top_offset = expedition.data('magellan-top-offset');\n\n //scroll to the top distance\n if (window_top_offset+self.settings.fixed_top >= top_offset) {\n // Placeholder allows height calculations to be consistent even when\n // appearing to switch between fixed/non-fixed placement\n var placeholder = expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']');\n if (placeholder.length === 0) {\n placeholder = expedition.clone();\n placeholder.removeAttr(self.attr_name());\n placeholder.attr(self.add_namespace('data-magellan-expedition-clone'),'');\n expedition.before(placeholder);\n }\n expedition.css({position:'fixed', top: settings.fixed_top}).addClass('fixed');\n } else {\n expedition.prev('[' + self.add_namespace('data-magellan-expedition-clone') + ']').remove();\n expedition.attr('style',styles).css('position','').css('top','').removeClass('fixed');\n }\n });\n },\n\n update_arrivals : function() {\n var self = this,\n window_top_offset = $(window).scrollTop();\n\n $('[' + this.attr_name() + ']', self.scope).each(function() {\n var expedition = $(this),\n settings = expedition.data(self.attr_name(true) + '-init'),\n offsets = self.offsets(expedition, window_top_offset),\n arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']'),\n active_item = false;\n offsets.each(function(idx, item) {\n if (item.viewport_offset >= item.top_offset) {\n var arrivals = expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']');\n arrivals.not(item.arrival).removeClass(settings.active_class);\n item.arrival.addClass(settings.active_class);\n active_item = true;\n return true;\n }\n });\n\n if (!active_item) arrivals.removeClass(settings.active_class);\n });\n },\n\n offsets : function(expedition, window_offset) {\n var self = this,\n settings = expedition.data(self.attr_name(true) + '-init'),\n viewport_offset = window_offset;\n\n return expedition.find('[' + self.add_namespace('data-magellan-arrival') + ']').map(function(idx, el) {\n var name = $(this).data(self.data_attr('magellan-arrival')),\n dest = $('[' + self.add_namespace('data-magellan-destination') + '=' + name + ']');\n if (dest.length > 0) {\n var top_offset = Math.floor(dest.offset().top - settings.destination_threshold - expedition.outerHeight());\n return {\n destination : dest,\n arrival : $(this),\n top_offset : top_offset,\n viewport_offset : viewport_offset\n }\n }\n }).sort(function(a, b) {\n if (a.top_offset < b.top_offset) return -1;\n if (a.top_offset > b.top_offset) return 1;\n return 0;\n });\n },\n\n data_attr: function (str) {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + str;\n }\n\n return str;\n },\n\n off : function () {\n this.S(this.scope).off('.magellan');\n this.S(window).off('.magellan');\n },\n\n reflow : function () {\n var self = this;\n // remove placeholder expeditions used for height calculation purposes\n $('[' + self.add_namespace('data-magellan-expedition-clone') + ']', self.scope).remove();\n }\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.offcanvas = {\n name : 'offcanvas',\n\n version : '5.4.7',\n\n settings : {\n open_method: 'move',\n close_on_click: false\n },\n\n init : function (scope, method, options) {\n this.bindings(method, options);\n },\n\n events : function () {\n var self = this,\n S = self.S,\n move_class = '',\n right_postfix = '',\n left_postfix = '';\n\n if (this.settings.open_method === 'move') {\n move_class = 'move-';\n right_postfix = 'right';\n left_postfix = 'left';\n } else if (this.settings.open_method === 'overlap_single') {\n move_class = 'offcanvas-overlap-';\n right_postfix = 'right';\n left_postfix = 'left';\n } else if (this.settings.open_method === 'overlap') {\n move_class = 'offcanvas-overlap';\n }\n\n S(this.scope).off('.offcanvas')\n .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {\n self.click_toggle_class(e, move_class + right_postfix);\n if (self.settings.open_method !== 'overlap'){\n S(\".left-submenu\").removeClass(move_class + right_postfix);\n }\n $('.left-off-canvas-toggle').attr('aria-expanded', 'true');\n })\n .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {\n var settings = self.get_settings(e);\n var parent = S(this).parent();\n\n if(settings.close_on_click && !parent.hasClass(\"has-submenu\") && !parent.hasClass(\"back\")){\n self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));\n parent.parent().removeClass(move_class + right_postfix);\n }else if(S(this).parent().hasClass(\"has-submenu\")){\n e.preventDefault();\n S(this).siblings(\".left-submenu\").toggleClass(move_class + right_postfix);\n }else if(parent.hasClass(\"back\")){\n e.preventDefault();\n parent.parent().removeClass(move_class + right_postfix);\n }\n $('.left-off-canvas-toggle').attr('aria-expanded', 'true');\n })\n .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {\n self.click_toggle_class(e, move_class + left_postfix);\n if (self.settings.open_method !== 'overlap'){\n S(\".right-submenu\").removeClass(move_class + left_postfix);\n }\n $('.right-off-canvas-toggle').attr('aria-expanded', 'true');\n })\n .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {\n var settings = self.get_settings(e);\n var parent = S(this).parent();\n\n if(settings.close_on_click && !parent.hasClass(\"has-submenu\") && !parent.hasClass(\"back\")){\n self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));\n parent.parent().removeClass(move_class + left_postfix);\n }else if(S(this).parent().hasClass(\"has-submenu\")){\n e.preventDefault();\n S(this).siblings(\".right-submenu\").toggleClass(move_class + left_postfix);\n }else if(parent.hasClass(\"back\")){\n e.preventDefault();\n parent.parent().removeClass(move_class + left_postfix);\n }\n $('.right-off-canvas-toggle').attr('aria-expanded', 'true');\n })\n .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {\n self.click_remove_class(e, move_class + left_postfix);\n S(\".right-submenu\").removeClass(move_class + left_postfix);\n if (right_postfix){\n self.click_remove_class(e, move_class + right_postfix);\n S(\".left-submenu\").removeClass(move_class + left_postfix);\n }\n $('.right-off-canvas-toggle').attr('aria-expanded', 'true');\n })\n .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {\n self.click_remove_class(e, move_class + left_postfix);\n $('.left-off-canvas-toggle').attr('aria-expanded', 'false');\n if (right_postfix) {\n self.click_remove_class(e, move_class + right_postfix);\n $('.right-off-canvas-toggle').attr('aria-expanded', \"false\");\n }\n });\n },\n\n toggle: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n if ($off_canvas.is('.' + class_name)) {\n this.hide(class_name, $off_canvas);\n } else {\n this.show(class_name, $off_canvas);\n }\n },\n\n show: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n $off_canvas.trigger('open').trigger('open.fndtn.offcanvas');\n $off_canvas.addClass(class_name);\n },\n\n hide: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n $off_canvas.trigger('close').trigger('close.fndtn.offcanvas');\n $off_canvas.removeClass(class_name);\n },\n\n click_toggle_class: function(e, class_name) {\n e.preventDefault();\n var $off_canvas = this.get_wrapper(e);\n this.toggle(class_name, $off_canvas);\n },\n\n click_remove_class: function(e, class_name) {\n e.preventDefault();\n var $off_canvas = this.get_wrapper(e);\n this.hide(class_name, $off_canvas);\n },\n\n get_settings: function(e) {\n var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');\n return offcanvas.data(this.attr_name(true) + '-init') || this.settings;\n },\n\n get_wrapper: function(e) {\n var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');\n\n if ($off_canvas.length === 0) {\n $off_canvas = this.S('.off-canvas-wrap');\n }\n return $off_canvas;\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n var noop = function() {};\n\n var Orbit = function(el, settings) {\n // Don't reinitialize plugin\n if (el.hasClass(settings.slides_container_class)) {\n return this;\n }\n\n var self = this,\n container,\n slides_container = el,\n number_container,\n bullets_container,\n timer_container,\n idx = 0,\n animate,\n timer,\n locked = false,\n adjust_height_after = false;\n\n\n self.slides = function() {\n return slides_container.children(settings.slide_selector);\n };\n\n self.slides().first().addClass(settings.active_slide_class);\n\n self.update_slide_number = function(index) {\n if (settings.slide_number) {\n number_container.find('span:first').text(parseInt(index)+1);\n number_container.find('span:last').text(self.slides().length);\n }\n if (settings.bullets) {\n bullets_container.children().removeClass(settings.bullets_active_class);\n $(bullets_container.children().get(index)).addClass(settings.bullets_active_class);\n }\n };\n\n self.update_active_link = function(index) {\n var link = $('[data-orbit-link=\"'+self.slides().eq(index).attr('data-orbit-slide')+'\"]');\n link.siblings().removeClass(settings.bullets_active_class);\n link.addClass(settings.bullets_active_class);\n };\n\n self.build_markup = function() {\n slides_container.wrap('
');\n container = slides_container.parent();\n slides_container.addClass(settings.slides_container_class);\n\n if (settings.stack_on_small) {\n container.addClass(settings.stack_on_small_class);\n }\n\n if (settings.navigation_arrows) {\n container.append($('').addClass(settings.prev_class));\n container.append($('').addClass(settings.next_class));\n }\n\n if (settings.timer) {\n timer_container = $('
').addClass(settings.timer_container_class);\n timer_container.append('');\n timer_container.append($('
').addClass(settings.timer_progress_class));\n timer_container.addClass(settings.timer_paused_class);\n container.append(timer_container);\n }\n\n if (settings.slide_number) {\n number_container = $('
').addClass(settings.slide_number_class);\n number_container.append(' ' + settings.slide_number_text + ' ');\n container.append(number_container);\n }\n\n if (settings.bullets) {\n bullets_container = $('
    ').addClass(settings.bullets_container_class);\n container.append(bullets_container);\n bullets_container.wrap('
    ');\n self.slides().each(function(idx, el) {\n var bullet = $('
  1. ').attr('data-orbit-slide', idx).on('click', self.link_bullet);;\n bullets_container.append(bullet);\n });\n }\n\n };\n\n self._goto = function(next_idx, start_timer) {\n // if (locked) {return false;}\n if (next_idx === idx) {return false;}\n if (typeof timer === 'object') {timer.restart();}\n var slides = self.slides();\n\n var dir = 'next';\n locked = true;\n if (next_idx < idx) {dir = 'prev';}\n if (next_idx >= slides.length) {\n if (!settings.circular) return false;\n next_idx = 0;\n } else if (next_idx < 0) {\n if (!settings.circular) return false;\n next_idx = slides.length - 1;\n }\n\n var current = $(slides.get(idx));\n var next = $(slides.get(next_idx));\n\n current.css('zIndex', 2);\n current.removeClass(settings.active_slide_class);\n next.css('zIndex', 4).addClass(settings.active_slide_class);\n\n slides_container.trigger('before-slide-change.fndtn.orbit');\n settings.before_slide_change();\n self.update_active_link(next_idx);\n\n var callback = function() {\n var unlock = function() {\n idx = next_idx;\n locked = false;\n if (start_timer === true) {timer = self.create_timer(); timer.start();}\n self.update_slide_number(idx);\n slides_container.trigger('after-slide-change.fndtn.orbit',[{slide_number: idx, total_slides: slides.length}]);\n settings.after_slide_change(idx, slides.length);\n };\n if (slides_container.height() != next.height() && settings.variable_height) {\n slides_container.animate({'height': next.height()}, 250, 'linear', unlock);\n } else {\n unlock();\n }\n };\n\n if (slides.length === 1) {callback(); return false;}\n\n var start_animation = function() {\n if (dir === 'next') {animate.next(current, next, callback);}\n if (dir === 'prev') {animate.prev(current, next, callback);}\n };\n\n if (next.height() > slides_container.height() && settings.variable_height) {\n slides_container.animate({'height': next.height()}, 250, 'linear', start_animation);\n } else {\n start_animation();\n }\n };\n\n self.next = function(e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n self._goto(idx + 1);\n };\n\n self.prev = function(e) {\n e.stopImmediatePropagation();\n e.preventDefault();\n self._goto(idx - 1);\n };\n\n self.link_custom = function(e) {\n e.preventDefault();\n var link = $(this).attr('data-orbit-link');\n if ((typeof link === 'string') && (link = $.trim(link)) != \"\") {\n var slide = container.find('[data-orbit-slide='+link+']');\n if (slide.index() != -1) {self._goto(slide.index());}\n }\n };\n\n self.link_bullet = function(e) {\n var index = $(this).attr('data-orbit-slide');\n if ((typeof index === 'string') && (index = $.trim(index)) != \"\") {\n if(isNaN(parseInt(index)))\n {\n var slide = container.find('[data-orbit-slide='+index+']');\n if (slide.index() != -1) {self._goto(slide.index() + 1);}\n }\n else\n {\n self._goto(parseInt(index));\n }\n }\n\n }\n\n self.timer_callback = function() {\n self._goto(idx + 1, true);\n }\n\n self.compute_dimensions = function() {\n var current = $(self.slides().get(idx));\n var h = current.height();\n if (!settings.variable_height) {\n self.slides().each(function(){\n if ($(this).height() > h) { h = $(this).height(); }\n });\n }\n slides_container.height(h);\n };\n\n self.create_timer = function() {\n var t = new Timer(\n container.find('.'+settings.timer_container_class),\n settings,\n self.timer_callback\n );\n return t;\n };\n\n self.stop_timer = function() {\n if (typeof timer === 'object') timer.stop();\n };\n\n self.toggle_timer = function() {\n var t = container.find('.'+settings.timer_container_class);\n if (t.hasClass(settings.timer_paused_class)) {\n if (typeof timer === 'undefined') {timer = self.create_timer();}\n timer.start();\n }\n else {\n if (typeof timer === 'object') {timer.stop();}\n }\n };\n\n self.init = function() {\n self.build_markup();\n if (settings.timer) {\n timer = self.create_timer();\n Foundation.utils.image_loaded(this.slides().children('img'), timer.start);\n }\n animate = new FadeAnimation(settings, slides_container);\n if (settings.animation === 'slide')\n animate = new SlideAnimation(settings, slides_container);\n\n container.on('click', '.'+settings.next_class, self.next);\n container.on('click', '.'+settings.prev_class, self.prev);\n\n if (settings.next_on_click) {\n container.on('click', '.'+settings.slides_container_class+' [data-orbit-slide]', self.link_bullet);\n }\n\n container.on('click', self.toggle_timer);\n if (settings.swipe) {\n container.on('touchstart.fndtn.orbit', function(e) {\n if (!e.touches) {e = e.originalEvent;}\n var data = {\n start_page_x: e.touches[0].pageX,\n start_page_y: e.touches[0].pageY,\n start_time: (new Date()).getTime(),\n delta_x: 0,\n is_scrolling: undefined\n };\n container.data('swipe-transition', data);\n e.stopPropagation();\n })\n .on('touchmove.fndtn.orbit', function(e) {\n if (!e.touches) { e = e.originalEvent; }\n // Ignore pinch/zoom events\n if(e.touches.length > 1 || e.scale && e.scale !== 1) return;\n\n var data = container.data('swipe-transition');\n if (typeof data === 'undefined') {data = {};}\n\n data.delta_x = e.touches[0].pageX - data.start_page_x;\n\n if ( typeof data.is_scrolling === 'undefined') {\n data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );\n }\n\n if (!data.is_scrolling && !data.active) {\n e.preventDefault();\n var direction = (data.delta_x < 0) ? (idx+1) : (idx-1);\n data.active = true;\n self._goto(direction);\n }\n })\n .on('touchend.fndtn.orbit', function(e) {\n container.data('swipe-transition', {});\n e.stopPropagation();\n })\n }\n container.on('mouseenter.fndtn.orbit', function(e) {\n if (settings.timer && settings.pause_on_hover) {\n self.stop_timer();\n }\n })\n .on('mouseleave.fndtn.orbit', function(e) {\n if (settings.timer && settings.resume_on_mouseout) {\n timer.start();\n }\n });\n\n $(document).on('click', '[data-orbit-link]', self.link_custom);\n $(window).on('load resize', self.compute_dimensions);\n Foundation.utils.image_loaded(this.slides().children('img'), self.compute_dimensions);\n Foundation.utils.image_loaded(this.slides().children('img'), function() {\n container.prev('.'+settings.preloader_class).css('display', 'none');\n self.update_slide_number(0);\n self.update_active_link(0);\n slides_container.trigger('ready.fndtn.orbit');\n });\n };\n\n self.init();\n };\n\n var Timer = function(el, settings, callback) {\n var self = this,\n duration = settings.timer_speed,\n progress = el.find('.'+settings.timer_progress_class),\n start,\n timeout,\n left = -1;\n\n this.update_progress = function(w) {\n var new_progress = progress.clone();\n new_progress.attr('style', '');\n new_progress.css('width', w+'%');\n progress.replaceWith(new_progress);\n progress = new_progress;\n };\n\n this.restart = function() {\n clearTimeout(timeout);\n el.addClass(settings.timer_paused_class);\n left = -1;\n self.update_progress(0);\n };\n\n this.start = function() {\n if (!el.hasClass(settings.timer_paused_class)) {return true;}\n left = (left === -1) ? duration : left;\n el.removeClass(settings.timer_paused_class);\n start = new Date().getTime();\n progress.animate({'width': '100%'}, left, 'linear');\n timeout = setTimeout(function() {\n self.restart();\n callback();\n }, left);\n el.trigger('timer-started.fndtn.orbit')\n };\n\n this.stop = function() {\n if (el.hasClass(settings.timer_paused_class)) {return true;}\n clearTimeout(timeout);\n el.addClass(settings.timer_paused_class);\n var end = new Date().getTime();\n left = left - (end - start);\n var w = 100 - ((left / duration) * 100);\n self.update_progress(w);\n el.trigger('timer-stopped.fndtn.orbit');\n };\n };\n\n var SlideAnimation = function(settings, container) {\n var duration = settings.animation_speed;\n var is_rtl = ($('html[dir=rtl]').length === 1);\n var margin = is_rtl ? 'marginRight' : 'marginLeft';\n var animMargin = {};\n animMargin[margin] = '0%';\n\n this.next = function(current, next, callback) {\n current.animate({marginLeft:'-100%'}, duration);\n next.animate(animMargin, duration, function() {\n current.css(margin, '100%');\n callback();\n });\n };\n\n this.prev = function(current, prev, callback) {\n current.animate({marginLeft:'100%'}, duration);\n prev.css(margin, '-100%');\n prev.animate(animMargin, duration, function() {\n current.css(margin, '100%');\n callback();\n });\n };\n };\n\n var FadeAnimation = function(settings, container) {\n var duration = settings.animation_speed;\n var is_rtl = ($('html[dir=rtl]').length === 1);\n var margin = is_rtl ? 'marginRight' : 'marginLeft';\n\n this.next = function(current, next, callback) {\n next.css({'margin':'0%', 'opacity':'0.01'});\n next.animate({'opacity':'1'}, duration, 'linear', function() {\n current.css('margin', '100%');\n callback();\n });\n };\n\n this.prev = function(current, prev, callback) {\n prev.css({'margin':'0%', 'opacity':'0.01'});\n prev.animate({'opacity':'1'}, duration, 'linear', function() {\n current.css('margin', '100%');\n callback();\n });\n };\n };\n\n\n Foundation.libs = Foundation.libs || {};\n\n Foundation.libs.orbit = {\n name: 'orbit',\n\n version: '5.4.7',\n\n settings: {\n animation: 'slide',\n timer_speed: 10000,\n pause_on_hover: true,\n resume_on_mouseout: false,\n next_on_click: true,\n animation_speed: 500,\n stack_on_small: false,\n navigation_arrows: true,\n slide_number: true,\n slide_number_text: 'of',\n container_class: 'orbit-container',\n stack_on_small_class: 'orbit-stack-on-small',\n next_class: 'orbit-next',\n prev_class: 'orbit-prev',\n timer_container_class: 'orbit-timer',\n timer_paused_class: 'paused',\n timer_progress_class: 'orbit-progress',\n slides_container_class: 'orbit-slides-container',\n preloader_class: 'preloader',\n slide_selector: '*',\n bullets_container_class: 'orbit-bullets',\n bullets_active_class: 'active',\n slide_number_class: 'orbit-slide-number',\n caption_class: 'orbit-caption',\n active_slide_class: 'active',\n orbit_transition_class: 'orbit-transitioning',\n bullets: true,\n circular: true,\n timer: true,\n variable_height: false,\n swipe: true,\n before_slide_change: noop,\n after_slide_change: noop\n },\n\n init : function (scope, method, options) {\n var self = this;\n this.bindings(method, options);\n },\n\n events : function (instance) {\n var orbit_instance = new Orbit(this.S(instance), this.S(instance).data('orbit-init'));\n this.S(instance).data(this.name + '-instance', orbit_instance);\n },\n\n reflow : function () {\n var self = this;\n\n if (self.S(self.scope).is('[data-orbit]')) {\n var $el = self.S(self.scope);\n var instance = $el.data(self.name + '-instance');\n instance.compute_dimensions();\n } else {\n self.S('[data-orbit]', self.scope).each(function(idx, el) {\n var $el = self.S(el);\n var opts = self.data_options($el);\n var instance = $el.data(self.name + '-instance');\n instance.compute_dimensions();\n });\n }\n }\n };\n\n\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.reveal = {\n name : 'reveal',\n\n version : '5.4.7',\n\n locked : false,\n\n settings : {\n animation: 'fadeAndPop',\n animation_speed: 250,\n close_on_background_click: true,\n close_on_esc: true,\n dismiss_modal_class: 'close-reveal-modal',\n bg_class: 'reveal-modal-bg',\n root_element: 'body',\n open: function(){},\n opened: function(){},\n close: function(){},\n closed: function(){},\n bg : $('.reveal-modal-bg'),\n css : {\n open : {\n 'opacity': 0,\n 'visibility': 'visible',\n 'display' : 'block'\n },\n close : {\n 'opacity': 1,\n 'visibility': 'hidden',\n 'display': 'none'\n }\n }\n },\n\n init : function (scope, method, options) {\n $.extend(true, this.settings, method, options);\n this.bindings(method, options);\n },\n\n events : function (scope) {\n var self = this,\n S = self.S;\n\n S(this.scope)\n .off('.reveal')\n .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {\n e.preventDefault();\n \n if (!self.locked) {\n var element = S(this),\n ajax = element.data(self.data_attr('reveal-ajax'));\n\n self.locked = true;\n\n if (typeof ajax === 'undefined') {\n self.open.call(self, element);\n } else {\n var url = ajax === true ? element.attr('href') : ajax;\n\n self.open.call(self, element, {url: url});\n }\n }\n });\n\n S(document)\n .on('click.fndtn.reveal', this.close_targets(), function (e) {\n\n e.preventDefault();\n\n if (!self.locked) {\n var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,\n bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];\n\n if (bg_clicked) {\n if (settings.close_on_background_click) {\n e.stopPropagation();\n } else {\n return;\n }\n }\n\n self.locked = true;\n self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));\n }\n });\n\n if(S('[' + self.attr_name() + ']', this.scope).length > 0) {\n S(this.scope)\n // .off('.reveal')\n .on('open.fndtn.reveal', this.settings.open)\n .on('opened.fndtn.reveal', this.settings.opened)\n .on('opened.fndtn.reveal', this.open_video)\n .on('close.fndtn.reveal', this.settings.close)\n .on('closed.fndtn.reveal', this.settings.closed)\n .on('closed.fndtn.reveal', this.close_video);\n } else {\n S(this.scope)\n // .off('.reveal')\n .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)\n .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);\n }\n\n return true;\n },\n\n // PATCH #3: turning on key up capture only when a reveal window is open\n key_up_on : function (scope) {\n var self = this;\n\n // PATCH #1: fixing multiple keyup event trigger from single key press\n self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {\n var open_modal = self.S('[' + self.attr_name() + '].open'),\n settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;\n // PATCH #2: making sure that the close event can be called only while unlocked,\n // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.\n if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key\n self.close.call(self, open_modal);\n }\n });\n\n return true;\n },\n\n // PATCH #3: turning on key up capture only when a reveal window is open\n key_up_off : function (scope) {\n this.S('body').off('keyup.fndtn.reveal');\n return true;\n },\n\n\n open : function (target, ajax_settings) {\n var self = this,\n modal;\n\n if (target) {\n if (typeof target.selector !== 'undefined') {\n // Find the named node; only use the first one found, since the rest of the code assumes there's only one node\n modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();\n } else {\n modal = self.S(this.scope);\n\n ajax_settings = target;\n }\n } else {\n modal = self.S(this.scope);\n }\n\n var settings = modal.data(self.attr_name(true) + '-init');\n settings = settings || this.settings;\n\n\n if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {\n return self.close(modal);\n }\n\n if (!modal.hasClass('open')) {\n var open_modal = self.S('[' + self.attr_name() + '].open');\n\n if (typeof modal.data('css-top') === 'undefined') {\n modal.data('css-top', parseInt(modal.css('top'), 10))\n .data('offset', this.cache_offset(modal));\n }\n\n this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open\n modal.trigger('open').trigger('open.fndtn.reveal');\n\n if (open_modal.length < 1) {\n this.toggle_bg(modal, true);\n }\n\n if (typeof ajax_settings === 'string') {\n ajax_settings = {\n url: ajax_settings\n };\n }\n\n if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {\n if (open_modal.length > 0) {\n this.hide(open_modal, settings.css.close);\n }\n\n this.show(modal, settings.css.open);\n } else {\n var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;\n\n $.extend(ajax_settings, {\n success: function (data, textStatus, jqXHR) {\n if ( $.isFunction(old_success) ) {\n old_success(data, textStatus, jqXHR);\n }\n\n modal.html(data);\n self.S(modal).foundation('section', 'reflow');\n self.S(modal).children().foundation();\n\n if (open_modal.length > 0) {\n self.hide(open_modal, settings.css.close);\n }\n self.show(modal, settings.css.open);\n }\n });\n\n $.ajax(ajax_settings);\n }\n }\n self.S(window).trigger('resize');\n },\n\n close : function (modal) {\n var modal = modal && modal.length ? modal : this.S(this.scope),\n open_modals = this.S('[' + this.attr_name() + '].open'),\n settings = modal.data(this.attr_name(true) + '-init') || this.settings;\n\n if (open_modals.length > 0) {\n this.locked = true;\n this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open\n modal.trigger('close').trigger('close.fndtn.reveal');\n this.toggle_bg(modal, false);\n this.hide(open_modals, settings.css.close, settings);\n }\n },\n\n close_targets : function () {\n var base = '.' + this.settings.dismiss_modal_class;\n\n if (this.settings.close_on_background_click) {\n return base + ', .' + this.settings.bg_class;\n }\n\n return base;\n },\n\n toggle_bg : function (modal, state) {\n if (this.S('.' + this.settings.bg_class).length === 0) {\n this.settings.bg = $('
    ', {'class': this.settings.bg_class})\n .appendTo('body').hide();\n }\n\n var visible = this.settings.bg.filter(':visible').length > 0;\n if ( state != visible ) {\n if ( state == undefined ? visible : !state ) {\n this.hide(this.settings.bg);\n } else {\n this.show(this.settings.bg);\n }\n }\n },\n\n show : function (el, css) {\n // is modal\n if (css) {\n var settings = el.data(this.attr_name(true) + '-init') || this.settings,\n root_element = settings.root_element;\n\n if (el.parent(root_element).length === 0) {\n var placeholder = el.wrap('
    ').parent();\n\n el.on('closed.fndtn.reveal.wrapped', function() {\n el.detach().appendTo(placeholder);\n el.unwrap().unbind('closed.fndtn.reveal.wrapped');\n });\n\n el.detach().appendTo(root_element);\n }\n\n var animData = getAnimationData(settings.animation);\n if (!animData.animate) {\n this.locked = false;\n }\n if (animData.pop) {\n css.top = $(window).scrollTop() - el.data('offset') + 'px';\n var end_css = {\n top: $(window).scrollTop() + el.data('css-top') + 'px',\n opacity: 1\n };\n\n return setTimeout(function () {\n return el\n .css(css)\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.trigger('opened').trigger('opened.fndtn.reveal');\n }.bind(this))\n .addClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n if (animData.fade) {\n css.top = $(window).scrollTop() + el.data('css-top') + 'px';\n var end_css = {opacity: 1};\n\n return setTimeout(function () {\n return el\n .css(css)\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.trigger('opened').trigger('opened.fndtn.reveal');\n }.bind(this))\n .addClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');\n }\n\n var settings = this.settings;\n\n // should we animate the background?\n if (getAnimationData(settings.animation).fade) {\n return el.fadeIn(settings.animation_speed / 2);\n }\n\n this.locked = false;\n\n return el.show();\n },\n\n hide : function (el, css) {\n // is modal\n if (css) {\n var settings = el.data(this.attr_name(true) + '-init');\n settings = settings || this.settings;\n\n var animData = getAnimationData(settings.animation);\n if (!animData.animate) {\n this.locked = false;\n }\n if (animData.pop) {\n var end_css = {\n top: - $(window).scrollTop() - el.data('offset') + 'px',\n opacity: 0\n };\n\n return setTimeout(function () {\n return el\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n }.bind(this))\n .removeClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n if (animData.fade) {\n var end_css = {opacity: 0};\n\n return setTimeout(function () {\n return el\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n }.bind(this))\n .removeClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');\n }\n\n var settings = this.settings;\n\n // should we animate the background?\n if (getAnimationData(settings.animation).fade) {\n return el.fadeOut(settings.animation_speed / 2);\n }\n\n return el.hide();\n },\n\n close_video : function (e) {\n var video = $('.flex-video', e.target),\n iframe = $('iframe', video);\n\n if (iframe.length > 0) {\n iframe.attr('data-src', iframe[0].src);\n iframe.attr('src', iframe.attr('src'));\n video.hide();\n }\n },\n\n open_video : function (e) {\n var video = $('.flex-video', e.target),\n iframe = video.find('iframe');\n\n if (iframe.length > 0) {\n var data_src = iframe.attr('data-src');\n if (typeof data_src === 'string') {\n iframe[0].src = iframe.attr('data-src');\n } else {\n var src = iframe[0].src;\n iframe[0].src = undefined;\n iframe[0].src = src;\n }\n video.show();\n }\n },\n\n data_attr: function (str) {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + str;\n }\n\n return str;\n },\n\n cache_offset : function (modal) {\n var offset = modal.show().height() + parseInt(modal.css('top'), 10);\n\n modal.hide();\n\n return offset;\n },\n\n off : function () {\n $(this.scope).off('.fndtn.reveal');\n },\n\n reflow : function () {}\n };\n\n /*\n * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}\n * getAnimationData('fade') // {animate: true, pop: false, fade: true}\n * getAnimationData('pop') // {animate: true, pop: true, fade: false}\n * getAnimationData('foo') // {animate: false, pop: false, fade: false}\n * getAnimationData(null) // {animate: false, pop: false, fade: false}\n */\n function getAnimationData(str) {\n var fade = /fade/i.test(str);\n var pop = /pop/i.test(str);\n return {\n animate: fade || pop,\n pop: pop,\n fade: fade\n };\n }\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.slider = {\n name : 'slider',\n\n version : '5.4.7',\n\n settings: {\n start: 0,\n end: 100,\n step: 1,\n initial: null,\n display_selector: '',\n vertical: false,\n on_change: function(){}\n },\n\n cache : {},\n\n init : function (scope, method, options) {\n Foundation.inherit(this,'throttle');\n this.bindings(method, options);\n this.reflow();\n },\n\n events : function() {\n var self = this;\n\n $(this.scope)\n .off('.slider')\n .on('mousedown.fndtn.slider touchstart.fndtn.slider pointerdown.fndtn.slider',\n '[' + self.attr_name() + ']:not(.disabled, [disabled]) .range-slider-handle', function(e) {\n if (!self.cache.active) {\n e.preventDefault();\n self.set_active_slider($(e.target));\n }\n })\n .on('mousemove.fndtn.slider touchmove.fndtn.slider pointermove.fndtn.slider', function(e) {\n if (!!self.cache.active) {\n e.preventDefault();\n if ($.data(self.cache.active[0], 'settings').vertical) {\n var scroll_offset = 0;\n if (!e.pageY) {\n scroll_offset = window.scrollY;\n }\n self.calculate_position(self.cache.active, (e.pageY || \n e.originalEvent.clientY || \n e.originalEvent.touches[0].clientY || \n e.currentPoint.y) \n + scroll_offset);\n } else {\n self.calculate_position(self.cache.active, e.pageX || \n e.originalEvent.clientX || \n e.originalEvent.touches[0].clientX || \n e.currentPoint.x);\n }\n }\n })\n .on('mouseup.fndtn.slider touchend.fndtn.slider pointerup.fndtn.slider', function(e) {\n self.remove_active_slider();\n })\n .on('change.fndtn.slider', function(e) {\n self.settings.on_change();\n });\n\n self.S(window)\n .on('resize.fndtn.slider', self.throttle(function(e) {\n self.reflow();\n }, 300));\n },\n\n set_active_slider : function($handle) {\n this.cache.active = $handle;\n },\n\n remove_active_slider : function() {\n this.cache.active = null;\n },\n\n calculate_position : function($handle, cursor_x) {\n var self = this,\n settings = $.data($handle[0], 'settings'),\n handle_l = $.data($handle[0], 'handle_l'),\n handle_o = $.data($handle[0], 'handle_o'),\n bar_l = $.data($handle[0], 'bar_l'),\n bar_o = $.data($handle[0], 'bar_o');\n\n requestAnimationFrame(function(){\n var pct;\n\n if (Foundation.rtl && !settings.vertical) {\n pct = self.limit_to(((bar_o+bar_l-cursor_x)/bar_l),0,1);\n } else {\n pct = self.limit_to(((cursor_x-bar_o)/bar_l),0,1);\n }\n\n pct = settings.vertical ? 1-pct : pct;\n\n var norm = self.normalized_value(pct, settings.start, settings.end, settings.step);\n\n self.set_ui($handle, norm);\n });\n },\n\n set_ui : function($handle, value) {\n var settings = $.data($handle[0], 'settings'),\n handle_l = $.data($handle[0], 'handle_l'),\n bar_l = $.data($handle[0], 'bar_l'),\n norm_pct = this.normalized_percentage(value, settings.start, settings.end),\n handle_offset = norm_pct*(bar_l-handle_l)-1,\n progress_bar_length = norm_pct*100;\n\n if (Foundation.rtl && !settings.vertical) {\n handle_offset = -handle_offset;\n }\n\n handle_offset = settings.vertical ? -handle_offset + bar_l - handle_l + 1 : handle_offset;\n this.set_translate($handle, handle_offset, settings.vertical);\n\n if (settings.vertical) {\n $handle.siblings('.range-slider-active-segment').css('height', progress_bar_length + '%');\n } else {\n $handle.siblings('.range-slider-active-segment').css('width', progress_bar_length + '%');\n }\n\n $handle.parent().attr(this.attr_name(), value).trigger('change').trigger('change.fndtn.slider');\n\n $handle.parent().children('input[type=hidden]').val(value);\n\n if (!$handle[0].hasAttribute('aria-valuemin')) {\n $handle.attr({\n 'aria-valuemin': settings.start,\n 'aria-valuemax': settings.end,\n });\n }\n $handle.attr('aria-valuenow', value);\n\n if (settings.display_selector != '') {\n $(settings.display_selector).each(function(){\n if (this.hasOwnProperty('value')) {\n $(this).val(value);\n } else {\n $(this).text(value);\n }\n });\n }\n\n },\n\n normalized_percentage : function(val, start, end) {\n return Math.min(1, (val - start)/(end - start));\n },\n\n normalized_value : function(val, start, end, step) {\n var range = end - start,\n point = val*range,\n mod = (point-(point%step)) / step,\n rem = point % step,\n round = ( rem >= step*0.5 ? step : 0);\n return (mod*step + round) + start;\n },\n\n set_translate : function(ele, offset, vertical) {\n if (vertical) {\n $(ele)\n .css('-webkit-transform', 'translateY('+offset+'px)')\n .css('-moz-transform', 'translateY('+offset+'px)')\n .css('-ms-transform', 'translateY('+offset+'px)')\n .css('-o-transform', 'translateY('+offset+'px)')\n .css('transform', 'translateY('+offset+'px)');\n } else {\n $(ele)\n .css('-webkit-transform', 'translateX('+offset+'px)')\n .css('-moz-transform', 'translateX('+offset+'px)')\n .css('-ms-transform', 'translateX('+offset+'px)')\n .css('-o-transform', 'translateX('+offset+'px)')\n .css('transform', 'translateX('+offset+'px)');\n }\n },\n\n limit_to : function(val, min, max) {\n return Math.min(Math.max(val, min), max);\n },\n\n initialize_settings : function(handle) {\n var settings = $.extend({}, this.settings, this.data_options($(handle).parent()));\n\n if (settings.vertical) {\n $.data(handle, 'bar_o', $(handle).parent().offset().top);\n $.data(handle, 'bar_l', $(handle).parent().outerHeight());\n $.data(handle, 'handle_o', $(handle).offset().top);\n $.data(handle, 'handle_l', $(handle).outerHeight());\n } else {\n $.data(handle, 'bar_o', $(handle).parent().offset().left);\n $.data(handle, 'bar_l', $(handle).parent().outerWidth());\n $.data(handle, 'handle_o', $(handle).offset().left);\n $.data(handle, 'handle_l', $(handle).outerWidth());\n }\n\n $.data(handle, 'bar', $(handle).parent());\n $.data(handle, 'settings', settings);\n },\n\n set_initial_position : function($ele) {\n var settings = $.data($ele.children('.range-slider-handle')[0], 'settings'),\n initial = (!!settings.initial ? settings.initial : Math.floor((settings.end-settings.start)*0.5/settings.step)*settings.step+settings.start),\n $handle = $ele.children('.range-slider-handle');\n this.set_ui($handle, initial);\n },\n\n set_value : function(value) {\n var self = this;\n $('[' + self.attr_name() + ']', this.scope).each(function(){\n $(this).attr(self.attr_name(), value);\n });\n if (!!$(this.scope).attr(self.attr_name())) {\n $(this.scope).attr(self.attr_name(), value);\n }\n self.reflow();\n },\n\n reflow : function() {\n var self = this;\n self.S('[' + this.attr_name() + ']').each(function() {\n var handle = $(this).children('.range-slider-handle')[0],\n val = $(this).attr(self.attr_name());\n self.initialize_settings(handle);\n\n if (val) {\n self.set_ui($(handle), parseFloat(val));\n } else {\n self.set_initial_position($(this));\n }\n });\n }\n };\n\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.tab = {\n name : 'tab',\n\n version : '5.4.7',\n\n settings : {\n active_class: 'active',\n callback : function () {},\n deep_linking: false,\n scroll_to_content: true,\n is_hover: false\n },\n\n default_tab_hashes: [],\n\n init : function (scope, method, options) {\n var self = this,\n S = this.S;\n\n this.bindings(method, options);\n this.handle_location_hash_change();\n\n // Store the default active tabs which will be referenced when the\n // location hash is absent, as in the case of navigating the tabs and\n // returning to the first viewing via the browser Back button.\n S('[' + this.attr_name() + '] > .active > a', this.scope).each(function () {\n self.default_tab_hashes.push(this.hash);\n });\n },\n\n events : function () {\n var self = this,\n S = this.S;\n\n var usual_tab_behavior = function (e) {\n var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');\n if (!settings.is_hover || Modernizr.touch) {\n e.preventDefault();\n e.stopPropagation();\n self.toggle_active_tab(S(this).parent());\n }\n };\n\n S(this.scope)\n .off('.tab')\n // Click event: tab title\n .on('focus.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )\n .on('click.fndtn.tab', '[' + this.attr_name() + '] > * > a', usual_tab_behavior )\n // Hover event: tab title\n .on('mouseenter.fndtn.tab', '[' + this.attr_name() + '] > * > a', function (e) {\n var settings = S(this).closest('[' + self.attr_name() +']').data(self.attr_name(true) + '-init');\n if (settings.is_hover) self.toggle_active_tab(S(this).parent());\n });\n\n // Location hash change event\n S(window).on('hashchange.fndtn.tab', function (e) {\n e.preventDefault();\n self.handle_location_hash_change();\n });\n },\n\n handle_location_hash_change : function () {\n\n var self = this,\n S = this.S;\n\n S('[' + this.attr_name() + ']', this.scope).each(function () {\n var settings = S(this).data(self.attr_name(true) + '-init');\n if (settings.deep_linking) {\n // Match the location hash to a label\n var hash;\n if (settings.scroll_to_content) {\n hash = self.scope.location.hash;\n } else {\n // prefix the hash to prevent anchor scrolling\n hash = self.scope.location.hash.replace('fndtn-', '');\n }\n if (hash != '') {\n // Check whether the location hash references a tab content div or\n // another element on the page (inside or outside the tab content div)\n var hash_element = S(hash);\n if (hash_element.hasClass('content') && hash_element.parent().hasClass('tabs-content')) {\n // Tab content div\n self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + hash + ']').parent());\n } else {\n // Not the tab content div. If inside the tab content, find the\n // containing tab and toggle it as active.\n var hash_tab_container_id = hash_element.closest('.content').attr('id');\n if (hash_tab_container_id != undefined) {\n self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=#' + hash_tab_container_id + ']').parent(), hash);\n }\n }\n } else {\n // Reference the default tab hashes which were initialized in the init function\n for (var ind = 0; ind < self.default_tab_hashes.length; ind++) {\n self.toggle_active_tab($('[' + self.attr_name() + '] > * > a[href=' + self.default_tab_hashes[ind] + ']').parent());\n }\n }\n }\n });\n },\n\n toggle_active_tab: function (tab, location_hash) {\n var S = this.S,\n tabs = tab.closest('[' + this.attr_name() + ']'),\n tab_link = tab.find('a'),\n anchor = tab.children('a').first(),\n target_hash = '#' + anchor.attr('href').split('#')[1],\n target = S(target_hash),\n siblings = tab.siblings(),\n settings = tabs.data(this.attr_name(true) + '-init'),\n interpret_keyup_action = function(e) {\n // Light modification of Heydon Pickering's Practical ARIA Examples: http://heydonworks.com/practical_aria_examples/js/a11y.js\n\n // define current, previous and next (possible) tabs\n\n var $original = $(this);\n var $prev = $(this).parents('li').prev().children('[role=\"tab\"]');\n var $next = $(this).parents('li').next().children('[role=\"tab\"]');\n var $target;\n\n // find the direction (prev or next)\n\n switch (e.keyCode) {\n case 37:\n $target = $prev;\n break;\n case 39:\n $target = $next;\n break;\n default:\n $target = false\n break;\n }\n\n if ($target.length) {\n $original.attr({\n 'tabindex' : '-1',\n 'aria-selected' : null\n });\n $target.attr({\n 'tabindex' : '0',\n 'aria-selected' : true\n }).focus();\n }\n\n // Hide panels\n\n $('[role=\"tabpanel\"]')\n .attr('aria-hidden', 'true');\n\n // Show panel which corresponds to target\n\n $('#' + $(document.activeElement).attr('href').substring(1))\n .attr('aria-hidden', null);\n\n };\n\n // allow usage of data-tab-content attribute instead of href\n if (S(this).data(this.data_attr('tab-content'))) {\n target_hash = '#' + S(this).data(this.data_attr('tab-content')).split('#')[1];\n target = S(target_hash);\n }\n\n if (settings.deep_linking) {\n\n if (settings.scroll_to_content) {\n // retain current hash to scroll to content\n window.location.hash = location_hash || target_hash;\n if (location_hash == undefined || location_hash == target_hash) {\n tab.parent()[0].scrollIntoView();\n } else {\n S(target_hash)[0].scrollIntoView();\n }\n } else {\n // prefix the hashes so that the browser doesn't scroll down\n if (location_hash != undefined) {\n window.location.hash = 'fndtn-' + location_hash.replace('#', '');\n } else {\n window.location.hash = 'fndtn-' + target_hash.replace('#', '');\n }\n }\n }\n\n // WARNING: The activation and deactivation of the tab content must\n // occur after the deep linking in order to properly refresh the browser\n // window (notably in Chrome).\n // Clean up multiple attr instances to done once\n tab.addClass(settings.active_class).triggerHandler('opened');\n tab_link.attr({\"aria-selected\": \"true\", tabindex: 0});\n siblings.removeClass(settings.active_class)\n siblings.find('a').attr({\"aria-selected\": \"false\", tabindex: -1});\n target.siblings().removeClass(settings.active_class).attr({\"aria-hidden\": \"true\", tabindex: -1});\n target.addClass(settings.active_class).attr('aria-hidden', 'false').removeAttr(\"tabindex\");\n settings.callback(tab);\n target.triggerHandler('toggled', [tab]);\n tabs.triggerHandler('toggled', [target]);\n\n tab_link.off('keydown').on('keydown', interpret_keyup_action );\n },\n\n data_attr: function (str) {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + str;\n }\n\n return str;\n },\n\n off : function () {},\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.tooltip = {\n name : 'tooltip',\n\n version : '5.4.7',\n\n settings : {\n additional_inheritable_classes : [],\n tooltip_class : '.tooltip',\n append_to: 'body',\n touch_close_text: 'Tap To Close',\n disable_for_touch: false,\n hover_delay: 200,\n show_on : 'all',\n tip_template : function (selector, content) {\n return '' + content + '';\n }\n },\n\n cache : {},\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'random_str');\n this.bindings(method, options);\n },\n\n should_show: function (target, tip) {\n var settings = $.extend({}, this.settings, this.data_options(target));\n\n if (settings.show_on === 'all') {\n return true;\n } else if (this.small() && settings.show_on === 'small') {\n return true;\n } else if (this.medium() && settings.show_on === 'medium') {\n return true;\n } else if (this.large() && settings.show_on === 'large') {\n return true;\n }\n return false;\n },\n\n medium : function () {\n return matchMedia(Foundation.media_queries['medium']).matches;\n },\n\n large : function () {\n return matchMedia(Foundation.media_queries['large']).matches;\n },\n\n events : function (instance) {\n var self = this,\n S = self.S;\n\n self.create(this.S(instance));\n\n $(this.scope)\n .off('.tooltip')\n .on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip',\n '[' + this.attr_name() + ']', function (e) {\n var $this = S(this),\n settings = $.extend({}, self.settings, self.data_options($this)),\n is_touch = false;\n\n if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type) && S(e.target).is('a')) {\n return false;\n }\n\n if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;\n\n if ($this.hasClass('open')) {\n if (Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) e.preventDefault();\n self.hide($this);\n } else {\n if (settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {\n return;\n } else if(!settings.disable_for_touch && Modernizr.touch && /touchstart|MSPointerDown/i.test(e.type)) {\n e.preventDefault();\n S(settings.tooltip_class + '.open').hide();\n is_touch = true;\n }\n\n if (/enter|over/i.test(e.type)) {\n this.timer = setTimeout(function () {\n var tip = self.showTip($this);\n }.bind(this), self.settings.hover_delay);\n } else if (e.type === 'mouseout' || e.type === 'mouseleave') {\n clearTimeout(this.timer);\n self.hide($this);\n } else {\n self.showTip($this);\n }\n }\n })\n .on('mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', '[' + this.attr_name() + '].open', function (e) {\n if (/mouse/i.test(e.type) && self.ie_touch(e)) return false;\n\n if($(this).data('tooltip-open-event-type') == 'touch' && e.type == 'mouseleave') {\n return;\n }\n else if($(this).data('tooltip-open-event-type') == 'mouse' && /MSPointerDown|touchstart/i.test(e.type)) {\n self.convert_to_touch($(this));\n } else {\n self.hide($(this));\n }\n })\n .on('DOMNodeRemoved DOMAttrModified', '[' + this.attr_name() + ']:not(a)', function (e) {\n self.hide(S(this));\n });\n },\n\n ie_touch : function (e) {\n // How do I distinguish between IE11 and Windows Phone 8?????\n return false;\n },\n\n showTip : function ($target) {\n var $tip = this.getTip($target);\n if (this.should_show($target, $tip)){\n return this.show($target);\n }\n return;\n },\n\n getTip : function ($target) {\n var selector = this.selector($target),\n settings = $.extend({}, this.settings, this.data_options($target)),\n tip = null;\n\n if (selector) {\n tip = this.S('span[data-selector=\"' + selector + '\"]' + settings.tooltip_class);\n }\n\n return (typeof tip === 'object') ? tip : false;\n },\n\n selector : function ($target) {\n var id = $target.attr('id'),\n dataSelector = $target.attr(this.attr_name()) || $target.attr('data-selector');\n\n if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {\n dataSelector = this.random_str(6);\n $target\n .attr('data-selector', dataSelector)\n .attr('aria-describedby', dataSelector);\n }\n\n return (id && id.length > 0) ? id : dataSelector;\n },\n\n create : function ($target) {\n var self = this,\n settings = $.extend({}, this.settings, this.data_options($target)),\n tip_template = this.settings.tip_template;\n\n if (typeof settings.tip_template === 'string' && window.hasOwnProperty(settings.tip_template)) {\n tip_template = window[settings.tip_template];\n }\n\n var $tip = $(tip_template(this.selector($target), $('
    ').html($target.attr('title')).html())),\n classes = this.inheritable_classes($target);\n\n $tip.addClass(classes).appendTo(settings.append_to);\n\n if (Modernizr.touch) {\n $tip.append(''+settings.touch_close_text+'');\n $tip.on('touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip', function(e) {\n self.hide($target);\n });\n }\n\n $target.removeAttr('title').attr('title','');\n },\n\n reposition : function (target, tip, classes) {\n var width, nub, nubHeight, nubWidth, column, objPos;\n\n tip.css('visibility', 'hidden').show();\n\n width = target.data('width');\n nub = tip.children('.nub');\n nubHeight = nub.outerHeight();\n nubWidth = nub.outerHeight();\n\n if (this.small()) {\n tip.css({'width' : '100%' });\n } else {\n tip.css({'width' : (width) ? width : 'auto'});\n }\n\n objPos = function (obj, top, right, bottom, left, width) {\n return obj.css({\n 'top' : (top) ? top : 'auto',\n 'bottom' : (bottom) ? bottom : 'auto',\n 'left' : (left) ? left : 'auto',\n 'right' : (right) ? right : 'auto'\n }).end();\n };\n\n objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', target.offset().left);\n\n if (this.small()) {\n objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', 12.5, $(this.scope).width());\n tip.addClass('tip-override');\n objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);\n } else {\n var left = target.offset().left;\n if (Foundation.rtl) {\n nub.addClass('rtl');\n left = target.offset().left + target.outerWidth() - tip.outerWidth();\n }\n objPos(tip, (target.offset().top + target.outerHeight() + 10), 'auto', 'auto', left);\n tip.removeClass('tip-override');\n if (classes && classes.indexOf('tip-top') > -1) {\n if (Foundation.rtl) nub.addClass('rtl');\n objPos(tip, (target.offset().top - tip.outerHeight()), 'auto', 'auto', left)\n .removeClass('tip-override');\n } else if (classes && classes.indexOf('tip-left') > -1) {\n objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left - tip.outerWidth() - nubHeight))\n .removeClass('tip-override');\n nub.removeClass('rtl');\n } else if (classes && classes.indexOf('tip-right') > -1) {\n objPos(tip, (target.offset().top + (target.outerHeight() / 2) - (tip.outerHeight() / 2)), 'auto', 'auto', (target.offset().left + target.outerWidth() + nubHeight))\n .removeClass('tip-override');\n nub.removeClass('rtl');\n }\n }\n\n tip.css('visibility', 'visible').hide();\n },\n\n small : function () {\n return matchMedia(Foundation.media_queries.small).matches &&\n !matchMedia(Foundation.media_queries.medium).matches;\n },\n\n inheritable_classes : function ($target) {\n var settings = $.extend({}, this.settings, this.data_options($target)),\n inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'radius', 'round'].concat(settings.additional_inheritable_classes),\n classes = $target.attr('class'),\n filtered = classes ? $.map(classes.split(' '), function (el, i) {\n if ($.inArray(el, inheritables) !== -1) {\n return el;\n }\n }).join(' ') : '';\n\n return $.trim(filtered);\n },\n\n convert_to_touch : function($target) {\n var self = this,\n $tip = self.getTip($target),\n settings = $.extend({}, self.settings, self.data_options($target));\n\n if ($tip.find('.tap-to-close').length === 0) {\n $tip.append(''+settings.touch_close_text+'');\n $tip.on('click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose', function(e) {\n self.hide($target);\n });\n }\n\n $target.data('tooltip-open-event-type', 'touch');\n },\n\n show : function ($target) {\n var $tip = this.getTip($target);\n\n if ($target.data('tooltip-open-event-type') == 'touch') {\n this.convert_to_touch($target);\n }\n\n this.reposition($target, $tip, $target.attr('class'));\n $target.addClass('open');\n $tip.fadeIn(150);\n },\n\n hide : function ($target) {\n var $tip = this.getTip($target);\n\n $tip.fadeOut(150, function() {\n $tip.find('.tap-to-close').remove();\n $tip.off('click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose');\n $target.removeClass('open');\n });\n },\n\n off : function () {\n var self = this;\n this.S(this.scope).off('.fndtn.tooltip');\n this.S(this.settings.tooltip_class).each(function (i) {\n $('[' + self.attr_name() + ']').eq(i).attr('title', $(this).text());\n }).remove();\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n\n;(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.topbar = {\n name : 'topbar',\n\n version: '5.4.7',\n\n settings : {\n index : 0,\n sticky_class : 'sticky',\n custom_back_text: true,\n back_text: 'Back',\n mobile_show_parent_link: true,\n is_hover: true,\n scrolltop : true, // jump to top when sticky nav menu toggle is clicked\n sticky_on : 'all'\n },\n\n init : function (section, method, options) {\n Foundation.inherit(this, 'add_custom_rule register_media throttle');\n var self = this;\n\n self.register_media('topbar', 'foundation-mq-topbar');\n\n this.bindings(method, options);\n\n self.S('[' + this.attr_name() + ']', this.scope).each(function () {\n var topbar = $(this),\n settings = topbar.data(self.attr_name(true) + '-init'),\n section = self.S('section, .top-bar-section', this);\n topbar.data('index', 0);\n var topbarContainer = topbar.parent();\n if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {\n self.settings.sticky_class = settings.sticky_class;\n self.settings.sticky_topbar = topbar;\n topbar.data('height', topbarContainer.outerHeight());\n topbar.data('stickyoffset', topbarContainer.offset().top);\n } else {\n topbar.data('height', topbar.outerHeight());\n }\n\n if (!settings.assembled) {\n self.assemble(topbar);\n }\n\n if (settings.is_hover) {\n self.S('.has-dropdown', topbar).addClass('not-click');\n } else {\n self.S('.has-dropdown', topbar).removeClass('not-click');\n }\n\n // Pad body when sticky (scrolled) or fixed.\n self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');\n\n if (topbarContainer.hasClass('fixed')) {\n self.S('body').addClass('f-topbar-fixed');\n }\n });\n\n },\n\n is_sticky: function (topbar, topbarContainer, settings) {\n var sticky = topbarContainer.hasClass(settings.sticky_class);\n\n if (sticky && settings.sticky_on === 'all') {\n return true;\n } else if (sticky && this.small() && settings.sticky_on === 'small') {\n return (matchMedia(Foundation.media_queries.small).matches && !matchMedia(Foundation.media_queries.medium).matches &&\n !matchMedia(Foundation.media_queries.large).matches);\n //return true;\n } else if (sticky && this.medium() && settings.sticky_on === 'medium') {\n return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&\n !matchMedia(Foundation.media_queries.large).matches);\n //return true;\n } else if(sticky && this.large() && settings.sticky_on === 'large') {\n return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&\n matchMedia(Foundation.media_queries.large).matches);\n //return true;\n }\n\n return false;\n },\n\n toggle: function (toggleEl) {\n var self = this,\n topbar;\n\n if (toggleEl) {\n topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');\n } else {\n topbar = self.S('[' + this.attr_name() + ']');\n }\n\n var settings = topbar.data(this.attr_name(true) + '-init');\n\n var section = self.S('section, .top-bar-section', topbar);\n\n if (self.breakpoint()) {\n if (!self.rtl) {\n section.css({left: '0%'});\n $('>.name', section).css({left: '100%'});\n } else {\n section.css({right: '0%'});\n $('>.name', section).css({right: '100%'});\n }\n\n self.S('li.moved', section).removeClass('moved');\n topbar.data('index', 0);\n\n topbar\n .toggleClass('expanded')\n .css('height', '');\n }\n\n if (settings.scrolltop) {\n if (!topbar.hasClass('expanded')) {\n if (topbar.hasClass('fixed')) {\n topbar.parent().addClass('fixed');\n topbar.removeClass('fixed');\n self.S('body').addClass('f-topbar-fixed');\n }\n } else if (topbar.parent().hasClass('fixed')) {\n if (settings.scrolltop) {\n topbar.parent().removeClass('fixed');\n topbar.addClass('fixed');\n self.S('body').removeClass('f-topbar-fixed');\n\n window.scrollTo(0,0);\n } else {\n topbar.parent().removeClass('expanded');\n }\n }\n } else {\n if (self.is_sticky(topbar, topbar.parent(), settings)) {\n topbar.parent().addClass('fixed');\n }\n\n if (topbar.parent().hasClass('fixed')) {\n if (!topbar.hasClass('expanded')) {\n topbar.removeClass('fixed');\n topbar.parent().removeClass('expanded');\n self.update_sticky_positioning();\n } else {\n topbar.addClass('fixed');\n topbar.parent().addClass('expanded');\n self.S('body').addClass('f-topbar-fixed');\n }\n }\n }\n },\n\n timer : null,\n\n events : function (bar) {\n var self = this,\n S = this.S;\n\n S(this.scope)\n .off('.topbar')\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {\n e.preventDefault();\n self.toggle(this);\n })\n .on('click.fndtn.topbar','.top-bar .top-bar-section li a[href^=\"#\"],[' + this.attr_name() + '] .top-bar-section li a[href^=\"#\"]',function (e) {\n var li = $(this).closest('li');\n if(self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown'))\n {\n self.toggle();\n }\n })\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {\n var li = S(this),\n target = S(e.target),\n topbar = li.closest('[' + self.attr_name() + ']'),\n settings = topbar.data(self.attr_name(true) + '-init');\n\n if(target.data('revealId')) {\n self.toggle();\n return;\n }\n\n if (self.breakpoint()) return;\n if (settings.is_hover && !Modernizr.touch) return;\n\n e.stopImmediatePropagation();\n\n if (li.hasClass('hover')) {\n li\n .removeClass('hover')\n .find('li')\n .removeClass('hover');\n\n li.parents('li.hover')\n .removeClass('hover');\n } else {\n li.addClass('hover');\n\n $(li).siblings().removeClass('hover');\n\n if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {\n e.preventDefault();\n }\n }\n })\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {\n if (self.breakpoint()) {\n\n e.preventDefault();\n\n var $this = S(this),\n topbar = $this.closest('[' + self.attr_name() + ']'),\n section = topbar.find('section, .top-bar-section'),\n dropdownHeight = $this.next('.dropdown').outerHeight(),\n $selectedLi = $this.closest('li');\n\n topbar.data('index', topbar.data('index') + 1);\n $selectedLi.addClass('moved');\n\n if (!self.rtl) {\n section.css({left: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({left: 100 * topbar.data('index') + '%'});\n } else {\n section.css({right: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({right: 100 * topbar.data('index') + '%'});\n }\n\n topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));\n }\n });\n\n S(window).off(\".topbar\").on(\"resize.fndtn.topbar\", self.throttle(function() {\n self.resize.call(self);\n }, 50)).trigger(\"resize\").trigger(\"resize.fndtn.topbar\").load(function(){\n // Ensure that the offset is calculated after all of the pages resources have loaded\n S(this).trigger(\"resize.fndtn.topbar\");\n });\n\n S('body').off('.topbar').on('click.fndtn.topbar', function (e) {\n var parent = S(e.target).closest('li').closest('li.hover');\n\n if (parent.length > 0) {\n return;\n }\n\n S('[' + self.attr_name() + '] li.hover').removeClass('hover');\n });\n\n // Go up a level on Click\n S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {\n e.preventDefault();\n\n var $this = S(this),\n topbar = $this.closest('[' + self.attr_name() + ']'),\n section = topbar.find('section, .top-bar-section'),\n settings = topbar.data(self.attr_name(true) + '-init'),\n $movedLi = $this.closest('li.moved'),\n $previousLevelUl = $movedLi.parent();\n\n topbar.data('index', topbar.data('index') - 1);\n\n if (!self.rtl) {\n section.css({left: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({left: 100 * topbar.data('index') + '%'});\n } else {\n section.css({right: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({right: 100 * topbar.data('index') + '%'});\n }\n\n if (topbar.data('index') === 0) {\n topbar.css('height', '');\n } else {\n topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));\n }\n\n setTimeout(function () {\n $movedLi.removeClass('moved');\n }, 300);\n });\n\n // Show dropdown menus when their items are focused\n S(this.scope).find('.dropdown a')\n .focus(function() {\n $(this).parents('.has-dropdown').addClass('hover');\n })\n .blur(function() {\n $(this).parents('.has-dropdown').removeClass('hover');\n });\n },\n\n resize : function () {\n var self = this;\n self.S('[' + this.attr_name() + ']').each(function () {\n var topbar = self.S(this),\n settings = topbar.data(self.attr_name(true) + '-init');\n\n var stickyContainer = topbar.parent('.' + self.settings.sticky_class);\n var stickyOffset;\n\n if (!self.breakpoint()) {\n var doToggle = topbar.hasClass('expanded');\n topbar\n .css('height', '')\n .removeClass('expanded')\n .find('li')\n .removeClass('hover');\n\n if(doToggle) {\n self.toggle(topbar);\n }\n }\n\n if(self.is_sticky(topbar, stickyContainer, settings)) {\n if(stickyContainer.hasClass('fixed')) {\n // Remove the fixed to allow for correct calculation of the offset.\n stickyContainer.removeClass('fixed');\n\n stickyOffset = stickyContainer.offset().top;\n if(self.S(document.body).hasClass('f-topbar-fixed')) {\n stickyOffset -= topbar.data('height');\n }\n\n topbar.data('stickyoffset', stickyOffset);\n stickyContainer.addClass('fixed');\n } else {\n stickyOffset = stickyContainer.offset().top;\n topbar.data('stickyoffset', stickyOffset);\n }\n }\n\n });\n },\n\n breakpoint : function () {\n return !matchMedia(Foundation.media_queries['topbar']).matches;\n },\n\n small : function () {\n return matchMedia(Foundation.media_queries['small']).matches;\n },\n\n medium : function () {\n return matchMedia(Foundation.media_queries['medium']).matches;\n },\n\n large : function () {\n return matchMedia(Foundation.media_queries['large']).matches;\n },\n\n assemble : function (topbar) {\n var self = this,\n settings = topbar.data(this.attr_name(true) + '-init'),\n section = self.S('section, .top-bar-section', topbar);\n\n // Pull element out of the DOM for manipulation\n section.detach();\n\n self.S('.has-dropdown>a', section).each(function () {\n var $link = self.S(this),\n $dropdown = $link.siblings('.dropdown'),\n url = $link.attr('href'),\n $titleLi;\n\n\n if (!$dropdown.find('.title.back').length) {\n\n if (settings.mobile_show_parent_link == true && url) {\n $titleLi = $('
  2. ');\n } else {\n $titleLi = $('
  3. ');\n }\n\n // Copy link to subnav\n if (settings.custom_back_text == true) {\n $('h5>a', $titleLi).html(settings.back_text);\n } else {\n $('h5>a', $titleLi).html('« ' + $link.html());\n }\n $dropdown.prepend($titleLi);\n }\n });\n\n // Put element back in the DOM\n section.appendTo(topbar);\n\n // check for sticky\n this.sticky();\n\n this.assembled(topbar);\n },\n\n assembled : function (topbar) {\n topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled: true}));\n },\n\n height : function (ul) {\n var total = 0,\n self = this;\n\n $('> li', ul).each(function () {\n total += self.S(this).outerHeight(true);\n });\n\n return total;\n },\n\n sticky : function () {\n var self = this;\n\n this.S(window).on('scroll', function() {\n self.update_sticky_positioning();\n });\n },\n\n update_sticky_positioning: function() {\n var klass = '.' + this.settings.sticky_class,\n $window = this.S(window),\n self = this;\n\n if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {\n var distance = this.settings.sticky_topbar.data('stickyoffset');\n if (!self.S(klass).hasClass('expanded')) {\n if ($window.scrollTop() > (distance)) {\n if (!self.S(klass).hasClass('fixed')) {\n self.S(klass).addClass('fixed');\n self.S('body').addClass('f-topbar-fixed');\n }\n } else if ($window.scrollTop() <= distance) {\n if (self.S(klass).hasClass('fixed')) {\n self.S(klass).removeClass('fixed');\n self.S('body').removeClass('f-topbar-fixed');\n }\n }\n }\n }\n },\n\n off : function () {\n this.S(this.scope).off('.fndtn.topbar');\n this.S(window).off('.fndtn.topbar');\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n",";(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.equalizer = {\n name : 'equalizer',\n\n version : '5.4.7',\n\n settings : {\n use_tallest: true,\n before_height_change: $.noop,\n after_height_change: $.noop,\n equalize_on_stack: false\n },\n\n init : function (scope, method, options) {\n Foundation.inherit(this, 'image_loaded');\n this.bindings(method, options);\n this.reflow();\n },\n\n events : function () {\n this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function(e){\n this.reflow();\n }.bind(this));\n },\n\n equalize: function(equalizer) {\n var isStacked = false,\n vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),\n settings = equalizer.data(this.attr_name(true)+'-init');\n\n if (vals.length === 0) return;\n var firstTopOffset = vals.first().offset().top;\n settings.before_height_change();\n equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');\n vals.height('inherit');\n vals.each(function(){\n var el = $(this);\n if (el.offset().top !== firstTopOffset) {\n isStacked = true;\n }\n });\n\n if (settings.equalize_on_stack === false) {\n if (isStacked) return;\n };\n\n var heights = vals.map(function(){ return $(this).outerHeight(false) }).get();\n\n if (settings.use_tallest) {\n var max = Math.max.apply(null, heights);\n vals.css('height', max);\n } else {\n var min = Math.min.apply(null, heights);\n vals.css('height', min);\n }\n settings.after_height_change();\n equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');\n },\n\n reflow : function () {\n var self = this;\n\n this.S('[' + this.attr_name() + ']', this.scope).each(function(){\n var $eq_target = $(this);\n self.image_loaded(self.S('img', this), function(){\n self.equalize($eq_target)\n });\n });\n }\n };\n})(jQuery, window, window.document);\n\n",";(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.reveal = {\n name : 'reveal',\n\n version : '5.4.7',\n\n locked : false,\n\n settings : {\n animation: 'fadeAndPop',\n animation_speed: 250,\n close_on_background_click: true,\n close_on_esc: true,\n dismiss_modal_class: 'close-reveal-modal',\n bg_class: 'reveal-modal-bg',\n root_element: 'body',\n open: function(){},\n opened: function(){},\n close: function(){},\n closed: function(){},\n bg : $('.reveal-modal-bg'),\n css : {\n open : {\n 'opacity': 0,\n 'visibility': 'visible',\n 'display' : 'block'\n },\n close : {\n 'opacity': 1,\n 'visibility': 'hidden',\n 'display': 'none'\n }\n }\n },\n\n init : function (scope, method, options) {\n $.extend(true, this.settings, method, options);\n this.bindings(method, options);\n },\n\n events : function (scope) {\n var self = this,\n S = self.S;\n\n S(this.scope)\n .off('.reveal')\n .on('click.fndtn.reveal', '[' + this.add_namespace('data-reveal-id') + ']:not([disabled])', function (e) {\n e.preventDefault();\n \n if (!self.locked) {\n var element = S(this),\n ajax = element.data(self.data_attr('reveal-ajax'));\n\n self.locked = true;\n\n if (typeof ajax === 'undefined') {\n self.open.call(self, element);\n } else {\n var url = ajax === true ? element.attr('href') : ajax;\n\n self.open.call(self, element, {url: url});\n }\n }\n });\n\n S(document)\n .on('click.fndtn.reveal', this.close_targets(), function (e) {\n\n e.preventDefault();\n\n if (!self.locked) {\n var settings = S('[' + self.attr_name() + '].open').data(self.attr_name(true) + '-init') || self.settings,\n bg_clicked = S(e.target)[0] === S('.' + settings.bg_class)[0];\n\n if (bg_clicked) {\n if (settings.close_on_background_click) {\n e.stopPropagation();\n } else {\n return;\n }\n }\n\n self.locked = true;\n self.close.call(self, bg_clicked ? S('[' + self.attr_name() + '].open') : S(this).closest('[' + self.attr_name() + ']'));\n }\n });\n\n if(S('[' + self.attr_name() + ']', this.scope).length > 0) {\n S(this.scope)\n // .off('.reveal')\n .on('open.fndtn.reveal', this.settings.open)\n .on('opened.fndtn.reveal', this.settings.opened)\n .on('opened.fndtn.reveal', this.open_video)\n .on('close.fndtn.reveal', this.settings.close)\n .on('closed.fndtn.reveal', this.settings.closed)\n .on('closed.fndtn.reveal', this.close_video);\n } else {\n S(this.scope)\n // .off('.reveal')\n .on('open.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.open)\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.opened)\n .on('opened.fndtn.reveal', '[' + self.attr_name() + ']', this.open_video)\n .on('close.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.close)\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.settings.closed)\n .on('closed.fndtn.reveal', '[' + self.attr_name() + ']', this.close_video);\n }\n\n return true;\n },\n\n // PATCH #3: turning on key up capture only when a reveal window is open\n key_up_on : function (scope) {\n var self = this;\n\n // PATCH #1: fixing multiple keyup event trigger from single key press\n self.S('body').off('keyup.fndtn.reveal').on('keyup.fndtn.reveal', function ( event ) {\n var open_modal = self.S('[' + self.attr_name() + '].open'),\n settings = open_modal.data(self.attr_name(true) + '-init') || self.settings ;\n // PATCH #2: making sure that the close event can be called only while unlocked,\n // so that multiple keyup.fndtn.reveal events don't prevent clean closing of the reveal window.\n if ( settings && event.which === 27 && settings.close_on_esc && !self.locked) { // 27 is the keycode for the Escape key\n self.close.call(self, open_modal);\n }\n });\n\n return true;\n },\n\n // PATCH #3: turning on key up capture only when a reveal window is open\n key_up_off : function (scope) {\n this.S('body').off('keyup.fndtn.reveal');\n return true;\n },\n\n\n open : function (target, ajax_settings) {\n var self = this,\n modal;\n\n if (target) {\n if (typeof target.selector !== 'undefined') {\n // Find the named node; only use the first one found, since the rest of the code assumes there's only one node\n modal = self.S('#' + target.data(self.data_attr('reveal-id'))).first();\n } else {\n modal = self.S(this.scope);\n\n ajax_settings = target;\n }\n } else {\n modal = self.S(this.scope);\n }\n\n var settings = modal.data(self.attr_name(true) + '-init');\n settings = settings || this.settings;\n\n\n if (modal.hasClass('open') && target.attr('data-reveal-id') == modal.attr('id')) {\n return self.close(modal);\n }\n\n if (!modal.hasClass('open')) {\n var open_modal = self.S('[' + self.attr_name() + '].open');\n\n if (typeof modal.data('css-top') === 'undefined') {\n modal.data('css-top', parseInt(modal.css('top'), 10))\n .data('offset', this.cache_offset(modal));\n }\n\n this.key_up_on(modal); // PATCH #3: turning on key up capture only when a reveal window is open\n modal.trigger('open').trigger('open.fndtn.reveal');\n\n if (open_modal.length < 1) {\n this.toggle_bg(modal, true);\n }\n\n if (typeof ajax_settings === 'string') {\n ajax_settings = {\n url: ajax_settings\n };\n }\n\n if (typeof ajax_settings === 'undefined' || !ajax_settings.url) {\n if (open_modal.length > 0) {\n this.hide(open_modal, settings.css.close);\n }\n\n this.show(modal, settings.css.open);\n } else {\n var old_success = typeof ajax_settings.success !== 'undefined' ? ajax_settings.success : null;\n\n $.extend(ajax_settings, {\n success: function (data, textStatus, jqXHR) {\n if ( $.isFunction(old_success) ) {\n old_success(data, textStatus, jqXHR);\n }\n\n modal.html(data);\n self.S(modal).foundation('section', 'reflow');\n self.S(modal).children().foundation();\n\n if (open_modal.length > 0) {\n self.hide(open_modal, settings.css.close);\n }\n self.show(modal, settings.css.open);\n }\n });\n\n $.ajax(ajax_settings);\n }\n }\n self.S(window).trigger('resize');\n },\n\n close : function (modal) {\n var modal = modal && modal.length ? modal : this.S(this.scope),\n open_modals = this.S('[' + this.attr_name() + '].open'),\n settings = modal.data(this.attr_name(true) + '-init') || this.settings;\n\n if (open_modals.length > 0) {\n this.locked = true;\n this.key_up_off(modal); // PATCH #3: turning on key up capture only when a reveal window is open\n modal.trigger('close').trigger('close.fndtn.reveal');\n this.toggle_bg(modal, false);\n this.hide(open_modals, settings.css.close, settings);\n }\n },\n\n close_targets : function () {\n var base = '.' + this.settings.dismiss_modal_class;\n\n if (this.settings.close_on_background_click) {\n return base + ', .' + this.settings.bg_class;\n }\n\n return base;\n },\n\n toggle_bg : function (modal, state) {\n if (this.S('.' + this.settings.bg_class).length === 0) {\n this.settings.bg = $('
    ', {'class': this.settings.bg_class})\n .appendTo('body').hide();\n }\n\n var visible = this.settings.bg.filter(':visible').length > 0;\n if ( state != visible ) {\n if ( state == undefined ? visible : !state ) {\n this.hide(this.settings.bg);\n } else {\n this.show(this.settings.bg);\n }\n }\n },\n\n show : function (el, css) {\n // is modal\n if (css) {\n var settings = el.data(this.attr_name(true) + '-init') || this.settings,\n root_element = settings.root_element;\n\n if (el.parent(root_element).length === 0) {\n var placeholder = el.wrap('
    ').parent();\n\n el.on('closed.fndtn.reveal.wrapped', function() {\n el.detach().appendTo(placeholder);\n el.unwrap().unbind('closed.fndtn.reveal.wrapped');\n });\n\n el.detach().appendTo(root_element);\n }\n\n var animData = getAnimationData(settings.animation);\n if (!animData.animate) {\n this.locked = false;\n }\n if (animData.pop) {\n css.top = $(window).scrollTop() - el.data('offset') + 'px';\n var end_css = {\n top: $(window).scrollTop() + el.data('css-top') + 'px',\n opacity: 1\n };\n\n return setTimeout(function () {\n return el\n .css(css)\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.trigger('opened').trigger('opened.fndtn.reveal');\n }.bind(this))\n .addClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n if (animData.fade) {\n css.top = $(window).scrollTop() + el.data('css-top') + 'px';\n var end_css = {opacity: 1};\n\n return setTimeout(function () {\n return el\n .css(css)\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.trigger('opened').trigger('opened.fndtn.reveal');\n }.bind(this))\n .addClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened').trigger('opened.fndtn.reveal');\n }\n\n var settings = this.settings;\n\n // should we animate the background?\n if (getAnimationData(settings.animation).fade) {\n return el.fadeIn(settings.animation_speed / 2);\n }\n\n this.locked = false;\n\n return el.show();\n },\n\n hide : function (el, css) {\n // is modal\n if (css) {\n var settings = el.data(this.attr_name(true) + '-init');\n settings = settings || this.settings;\n\n var animData = getAnimationData(settings.animation);\n if (!animData.animate) {\n this.locked = false;\n }\n if (animData.pop) {\n var end_css = {\n top: - $(window).scrollTop() - el.data('offset') + 'px',\n opacity: 0\n };\n\n return setTimeout(function () {\n return el\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n }.bind(this))\n .removeClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n if (animData.fade) {\n var end_css = {opacity: 0};\n\n return setTimeout(function () {\n return el\n .animate(end_css, settings.animation_speed, 'linear', function () {\n this.locked = false;\n el.css(css).trigger('closed').trigger('closed.fndtn.reveal');\n }.bind(this))\n .removeClass('open');\n }.bind(this), settings.animation_speed / 2);\n }\n\n return el.hide().css(css).removeClass('open').trigger('closed').trigger('closed.fndtn.reveal');\n }\n\n var settings = this.settings;\n\n // should we animate the background?\n if (getAnimationData(settings.animation).fade) {\n return el.fadeOut(settings.animation_speed / 2);\n }\n\n return el.hide();\n },\n\n close_video : function (e) {\n var video = $('.flex-video', e.target),\n iframe = $('iframe', video);\n\n if (iframe.length > 0) {\n iframe.attr('data-src', iframe[0].src);\n iframe.attr('src', iframe.attr('src'));\n video.hide();\n }\n },\n\n open_video : function (e) {\n var video = $('.flex-video', e.target),\n iframe = video.find('iframe');\n\n if (iframe.length > 0) {\n var data_src = iframe.attr('data-src');\n if (typeof data_src === 'string') {\n iframe[0].src = iframe.attr('data-src');\n } else {\n var src = iframe[0].src;\n iframe[0].src = undefined;\n iframe[0].src = src;\n }\n video.show();\n }\n },\n\n data_attr: function (str) {\n if (this.namespace.length > 0) {\n return this.namespace + '-' + str;\n }\n\n return str;\n },\n\n cache_offset : function (modal) {\n var offset = modal.show().height() + parseInt(modal.css('top'), 10);\n\n modal.hide();\n\n return offset;\n },\n\n off : function () {\n $(this.scope).off('.fndtn.reveal');\n },\n\n reflow : function () {}\n };\n\n /*\n * getAnimationData('popAndFade') // {animate: true, pop: true, fade: true}\n * getAnimationData('fade') // {animate: true, pop: false, fade: true}\n * getAnimationData('pop') // {animate: true, pop: true, fade: false}\n * getAnimationData('foo') // {animate: false, pop: false, fade: false}\n * getAnimationData(null) // {animate: false, pop: false, fade: false}\n */\n function getAnimationData(str) {\n var fade = /fade/i.test(str);\n var pop = /pop/i.test(str);\n return {\n animate: fade || pop,\n pop: pop,\n fade: fade\n };\n }\n}(jQuery, window, window.document));\n",";(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.topbar = {\n name : 'topbar',\n\n version: '5.4.7',\n\n settings : {\n index : 0,\n sticky_class : 'sticky',\n custom_back_text: true,\n back_text: 'Back',\n mobile_show_parent_link: true,\n is_hover: true,\n scrolltop : true, // jump to top when sticky nav menu toggle is clicked\n sticky_on : 'all'\n },\n\n init : function (section, method, options) {\n Foundation.inherit(this, 'add_custom_rule register_media throttle');\n var self = this;\n\n self.register_media('topbar', 'foundation-mq-topbar');\n\n this.bindings(method, options);\n\n self.S('[' + this.attr_name() + ']', this.scope).each(function () {\n var topbar = $(this),\n settings = topbar.data(self.attr_name(true) + '-init'),\n section = self.S('section, .top-bar-section', this);\n topbar.data('index', 0);\n var topbarContainer = topbar.parent();\n if (topbarContainer.hasClass('fixed') || self.is_sticky(topbar, topbarContainer, settings) ) {\n self.settings.sticky_class = settings.sticky_class;\n self.settings.sticky_topbar = topbar;\n topbar.data('height', topbarContainer.outerHeight());\n topbar.data('stickyoffset', topbarContainer.offset().top);\n } else {\n topbar.data('height', topbar.outerHeight());\n }\n\n if (!settings.assembled) {\n self.assemble(topbar);\n }\n\n if (settings.is_hover) {\n self.S('.has-dropdown', topbar).addClass('not-click');\n } else {\n self.S('.has-dropdown', topbar).removeClass('not-click');\n }\n\n // Pad body when sticky (scrolled) or fixed.\n self.add_custom_rule('.f-topbar-fixed { padding-top: ' + topbar.data('height') + 'px }');\n\n if (topbarContainer.hasClass('fixed')) {\n self.S('body').addClass('f-topbar-fixed');\n }\n });\n\n },\n\n is_sticky: function (topbar, topbarContainer, settings) {\n var sticky = topbarContainer.hasClass(settings.sticky_class);\n\n if (sticky && settings.sticky_on === 'all') {\n return true;\n } else if (sticky && this.small() && settings.sticky_on === 'small') {\n return (matchMedia(Foundation.media_queries.small).matches && !matchMedia(Foundation.media_queries.medium).matches &&\n !matchMedia(Foundation.media_queries.large).matches);\n //return true;\n } else if (sticky && this.medium() && settings.sticky_on === 'medium') {\n return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&\n !matchMedia(Foundation.media_queries.large).matches);\n //return true;\n } else if(sticky && this.large() && settings.sticky_on === 'large') {\n return (matchMedia(Foundation.media_queries.small).matches && matchMedia(Foundation.media_queries.medium).matches &&\n matchMedia(Foundation.media_queries.large).matches);\n //return true;\n }\n\n return false;\n },\n\n toggle: function (toggleEl) {\n var self = this,\n topbar;\n\n if (toggleEl) {\n topbar = self.S(toggleEl).closest('[' + this.attr_name() + ']');\n } else {\n topbar = self.S('[' + this.attr_name() + ']');\n }\n\n var settings = topbar.data(this.attr_name(true) + '-init');\n\n var section = self.S('section, .top-bar-section', topbar);\n\n if (self.breakpoint()) {\n if (!self.rtl) {\n section.css({left: '0%'});\n $('>.name', section).css({left: '100%'});\n } else {\n section.css({right: '0%'});\n $('>.name', section).css({right: '100%'});\n }\n\n self.S('li.moved', section).removeClass('moved');\n topbar.data('index', 0);\n\n topbar\n .toggleClass('expanded')\n .css('height', '');\n }\n\n if (settings.scrolltop) {\n if (!topbar.hasClass('expanded')) {\n if (topbar.hasClass('fixed')) {\n topbar.parent().addClass('fixed');\n topbar.removeClass('fixed');\n self.S('body').addClass('f-topbar-fixed');\n }\n } else if (topbar.parent().hasClass('fixed')) {\n if (settings.scrolltop) {\n topbar.parent().removeClass('fixed');\n topbar.addClass('fixed');\n self.S('body').removeClass('f-topbar-fixed');\n\n window.scrollTo(0,0);\n } else {\n topbar.parent().removeClass('expanded');\n }\n }\n } else {\n if (self.is_sticky(topbar, topbar.parent(), settings)) {\n topbar.parent().addClass('fixed');\n }\n\n if (topbar.parent().hasClass('fixed')) {\n if (!topbar.hasClass('expanded')) {\n topbar.removeClass('fixed');\n topbar.parent().removeClass('expanded');\n self.update_sticky_positioning();\n } else {\n topbar.addClass('fixed');\n topbar.parent().addClass('expanded');\n self.S('body').addClass('f-topbar-fixed');\n }\n }\n }\n },\n\n timer : null,\n\n events : function (bar) {\n var self = this,\n S = this.S;\n\n S(this.scope)\n .off('.topbar')\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] .toggle-topbar', function (e) {\n e.preventDefault();\n self.toggle(this);\n })\n .on('click.fndtn.topbar','.top-bar .top-bar-section li a[href^=\"#\"],[' + this.attr_name() + '] .top-bar-section li a[href^=\"#\"]',function (e) {\n var li = $(this).closest('li');\n if(self.breakpoint() && !li.hasClass('back') && !li.hasClass('has-dropdown'))\n {\n self.toggle();\n }\n })\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] li.has-dropdown', function (e) {\n var li = S(this),\n target = S(e.target),\n topbar = li.closest('[' + self.attr_name() + ']'),\n settings = topbar.data(self.attr_name(true) + '-init');\n\n if(target.data('revealId')) {\n self.toggle();\n return;\n }\n\n if (self.breakpoint()) return;\n if (settings.is_hover && !Modernizr.touch) return;\n\n e.stopImmediatePropagation();\n\n if (li.hasClass('hover')) {\n li\n .removeClass('hover')\n .find('li')\n .removeClass('hover');\n\n li.parents('li.hover')\n .removeClass('hover');\n } else {\n li.addClass('hover');\n\n $(li).siblings().removeClass('hover');\n\n if (target[0].nodeName === 'A' && target.parent().hasClass('has-dropdown')) {\n e.preventDefault();\n }\n }\n })\n .on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown>a', function (e) {\n if (self.breakpoint()) {\n\n e.preventDefault();\n\n var $this = S(this),\n topbar = $this.closest('[' + self.attr_name() + ']'),\n section = topbar.find('section, .top-bar-section'),\n dropdownHeight = $this.next('.dropdown').outerHeight(),\n $selectedLi = $this.closest('li');\n\n topbar.data('index', topbar.data('index') + 1);\n $selectedLi.addClass('moved');\n\n if (!self.rtl) {\n section.css({left: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({left: 100 * topbar.data('index') + '%'});\n } else {\n section.css({right: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({right: 100 * topbar.data('index') + '%'});\n }\n\n topbar.css('height', $this.siblings('ul').outerHeight(true) + topbar.data('height'));\n }\n });\n\n S(window).off(\".topbar\").on(\"resize.fndtn.topbar\", self.throttle(function() {\n self.resize.call(self);\n }, 50)).trigger(\"resize\").trigger(\"resize.fndtn.topbar\").load(function(){\n // Ensure that the offset is calculated after all of the pages resources have loaded\n S(this).trigger(\"resize.fndtn.topbar\");\n });\n\n S('body').off('.topbar').on('click.fndtn.topbar', function (e) {\n var parent = S(e.target).closest('li').closest('li.hover');\n\n if (parent.length > 0) {\n return;\n }\n\n S('[' + self.attr_name() + '] li.hover').removeClass('hover');\n });\n\n // Go up a level on Click\n S(this.scope).on('click.fndtn.topbar', '[' + this.attr_name() + '] .has-dropdown .back', function (e) {\n e.preventDefault();\n\n var $this = S(this),\n topbar = $this.closest('[' + self.attr_name() + ']'),\n section = topbar.find('section, .top-bar-section'),\n settings = topbar.data(self.attr_name(true) + '-init'),\n $movedLi = $this.closest('li.moved'),\n $previousLevelUl = $movedLi.parent();\n\n topbar.data('index', topbar.data('index') - 1);\n\n if (!self.rtl) {\n section.css({left: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({left: 100 * topbar.data('index') + '%'});\n } else {\n section.css({right: -(100 * topbar.data('index')) + '%'});\n section.find('>.name').css({right: 100 * topbar.data('index') + '%'});\n }\n\n if (topbar.data('index') === 0) {\n topbar.css('height', '');\n } else {\n topbar.css('height', $previousLevelUl.outerHeight(true) + topbar.data('height'));\n }\n\n setTimeout(function () {\n $movedLi.removeClass('moved');\n }, 300);\n });\n\n // Show dropdown menus when their items are focused\n S(this.scope).find('.dropdown a')\n .focus(function() {\n $(this).parents('.has-dropdown').addClass('hover');\n })\n .blur(function() {\n $(this).parents('.has-dropdown').removeClass('hover');\n });\n },\n\n resize : function () {\n var self = this;\n self.S('[' + this.attr_name() + ']').each(function () {\n var topbar = self.S(this),\n settings = topbar.data(self.attr_name(true) + '-init');\n\n var stickyContainer = topbar.parent('.' + self.settings.sticky_class);\n var stickyOffset;\n\n if (!self.breakpoint()) {\n var doToggle = topbar.hasClass('expanded');\n topbar\n .css('height', '')\n .removeClass('expanded')\n .find('li')\n .removeClass('hover');\n\n if(doToggle) {\n self.toggle(topbar);\n }\n }\n\n if(self.is_sticky(topbar, stickyContainer, settings)) {\n if(stickyContainer.hasClass('fixed')) {\n // Remove the fixed to allow for correct calculation of the offset.\n stickyContainer.removeClass('fixed');\n\n stickyOffset = stickyContainer.offset().top;\n if(self.S(document.body).hasClass('f-topbar-fixed')) {\n stickyOffset -= topbar.data('height');\n }\n\n topbar.data('stickyoffset', stickyOffset);\n stickyContainer.addClass('fixed');\n } else {\n stickyOffset = stickyContainer.offset().top;\n topbar.data('stickyoffset', stickyOffset);\n }\n }\n\n });\n },\n\n breakpoint : function () {\n return !matchMedia(Foundation.media_queries['topbar']).matches;\n },\n\n small : function () {\n return matchMedia(Foundation.media_queries['small']).matches;\n },\n\n medium : function () {\n return matchMedia(Foundation.media_queries['medium']).matches;\n },\n\n large : function () {\n return matchMedia(Foundation.media_queries['large']).matches;\n },\n\n assemble : function (topbar) {\n var self = this,\n settings = topbar.data(this.attr_name(true) + '-init'),\n section = self.S('section, .top-bar-section', topbar);\n\n // Pull element out of the DOM for manipulation\n section.detach();\n\n self.S('.has-dropdown>a', section).each(function () {\n var $link = self.S(this),\n $dropdown = $link.siblings('.dropdown'),\n url = $link.attr('href'),\n $titleLi;\n\n\n if (!$dropdown.find('.title.back').length) {\n\n if (settings.mobile_show_parent_link == true && url) {\n $titleLi = $('
  4. ');\n } else {\n $titleLi = $('
  5. ');\n }\n\n // Copy link to subnav\n if (settings.custom_back_text == true) {\n $('h5>a', $titleLi).html(settings.back_text);\n } else {\n $('h5>a', $titleLi).html('« ' + $link.html());\n }\n $dropdown.prepend($titleLi);\n }\n });\n\n // Put element back in the DOM\n section.appendTo(topbar);\n\n // check for sticky\n this.sticky();\n\n this.assembled(topbar);\n },\n\n assembled : function (topbar) {\n topbar.data(this.attr_name(true), $.extend({}, topbar.data(this.attr_name(true)), {assembled: true}));\n },\n\n height : function (ul) {\n var total = 0,\n self = this;\n\n $('> li', ul).each(function () {\n total += self.S(this).outerHeight(true);\n });\n\n return total;\n },\n\n sticky : function () {\n var self = this;\n\n this.S(window).on('scroll', function() {\n self.update_sticky_positioning();\n });\n },\n\n update_sticky_positioning: function() {\n var klass = '.' + this.settings.sticky_class,\n $window = this.S(window),\n self = this;\n\n if (self.settings.sticky_topbar && self.is_sticky(this.settings.sticky_topbar,this.settings.sticky_topbar.parent(), this.settings)) {\n var distance = this.settings.sticky_topbar.data('stickyoffset');\n if (!self.S(klass).hasClass('expanded')) {\n if ($window.scrollTop() > (distance)) {\n if (!self.S(klass).hasClass('fixed')) {\n self.S(klass).addClass('fixed');\n self.S('body').addClass('f-topbar-fixed');\n }\n } else if ($window.scrollTop() <= distance) {\n if (self.S(klass).hasClass('fixed')) {\n self.S(klass).removeClass('fixed');\n self.S('body').removeClass('f-topbar-fixed');\n }\n }\n }\n }\n },\n\n off : function () {\n this.S(this.scope).off('.fndtn.topbar');\n this.S(window).off('.fndtn.topbar');\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"