{"version":3,"sources":["webpack:///../src/$_lazy_route_resource lazy namespace object","webpack:///../src/app/app-routing.module.ts","webpack:///../src/app/app.component.html","webpack:///../src/app/app.component.scss","webpack:///../src/app/app.component.ts","webpack:///../src/app/app.module.ts","webpack:///../src/app/components/manufacturer-syndication/manufacturer-syndication.component.html","webpack:///../src/app/components/manufacturer-syndication/manufacturer-syndication.component.scss","webpack:///../src/app/components/manufacturer-syndication/manufacturer-syndication.component.ts","webpack:///../src/app/components/page-not-found/page-not-found.component.css","webpack:///../src/app/components/page-not-found/page-not-found.component.html","webpack:///../src/app/components/page-not-found/page-not-found.component.ts","webpack:///../src/app/components/product-detail/product-detail.component.html","webpack:///../src/app/components/product-detail/product-detail.component.scss","webpack:///../src/app/components/product-detail/product-detail.component.ts","webpack:///../src/app/components/product/product.component.html","webpack:///../src/app/components/product/product.component.scss","webpack:///../src/app/components/product/product.component.ts","webpack:///../src/app/reuse-strategy.ts","webpack:///../src/app/services/config/config.service.ts","webpack:///../src/app/services/stats/google-analytics.service.ts","webpack:///../src/app/services/style-options/style-options.service.ts","webpack:///../src/app/services/syndication/syndication.service.ts","webpack:///../src/app/shared/response-models/product.ts","webpack:///../src/app/shared/style-options.ts","webpack:///../src/environments/environment.ts","webpack:///../src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,6E;;;;;;;;;;;;;;;;;;;;;ACZyC;AACc;AAEqE;AAC9B;AACD;AAE7F,IAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,wIAAgC,EAAE;IAC3E,EAAE,IAAI,EAAE,+BAA+B,EAAE,SAAS,EAAE,0GAAsB,EAAE;IAC5E,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,yGAAqB,EAAE;CACjD,CAAC;AAMF;IAAA;IAAgC,CAAC;IAApB,gBAAgB;QAJ5B,8DAAQ,CAAC;YACR,OAAO,EAAE,CAAC,4DAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC,4DAAY,CAAC;SACxB,CAAC;OACW,gBAAgB,CAAI;IAAD,uBAAC;CAAA;AAAJ;;;;;;;;;;;;ACjB7B,kD;;;;;;;;;;;ACAA,+DAA+D,+H;;;;;;;;;;;;;;;;;ACArB;AAO1C;IALA;QAME,UAAK,GAAG,mBAAmB,CAAC;IAC9B,CAAC;IAFY,YAAY;QALxB,+DAAS,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,0FAAmC;;SAEpC,CAAC;OACW,YAAY,CAExB;IAAD,mBAAC;CAAA;AAFwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPiC;AACA;AAEF;AACT;AAC6E;AACpE;AACS;AACpB;AAC6B;AACoB;AACrD;AACY;AACE;AACmE;AACpE;AACK;AAG0B;AACQ;AAItF,SAAS,aAAa,CAAC,SAAwB;IACpD,OAAO,cAAM,gBAAS,CAAC,IAAI,EAAE,EAAhB,CAAgB,CAAC;AAChC,CAAC;AAED,IAAM,gCAAgC,GAAoC;IACxE,eAAe,EAAE,IAAI;CACtB,CAAC;AA2CF;IAAA;IAAyB,CAAC;IAAb,SAAS;QAzCrB,8DAAQ,CAAC;YACR,YAAY,EAAE;gBACZ,2DAAY;gBACZ,2GAAsB;gBACtB,wIAAgC;gBAChC,sFAAgB;gBAChB,0GAAqB;aACtB;YACD,OAAO,EAAE;gBACP,uEAAa;gBACb,oEAAgB;gBAChB,qEAAgB;gBAChB,0DAAW;gBACX,sEAAmB,CAAC,OAAO,CAAC;oBAC1B,MAAM,EAAE,6EAA0B;iBACnC,CAAC;gBACF,6EAAsB;gBACtB,oEAAc;gBACd,yEAAoB;aACrB;YACD,SAAS,EAAE;gBACT,qEAAgB;gBAChB,6EAAa;gBACb,uDAAS;gBACT;oBACE,OAAO,EAAE,6DAAe;oBACxB,UAAU,EAAE,aAAa;oBACzB,IAAI,EAAE,CAAC,6EAAa,CAAC;oBACrB,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,OAAO,EAAE,+EAAwB;oBACjC,QAAQ,EAAE,gCAAgC;iBAAC;gBAE7C;oBACE,OAAO,EAAE,mEAAkB;oBAC3B,QAAQ,EAAE,oEAAmB;iBAC9B;aACF;YACD,SAAS,EAAE,CAAC,2DAAY,CAAC;SAC1B,CAAC;OACW,SAAS,CAAI;IAAD,gBAAC;CAAA;AAAJ;;;;;;;;;;;;ACzEtB,siFAAsiF,aAAa,6F;;;;;;;;;;;ACAnjF,+DAA+D,2M;;;;;;;;;;;;;;;;;;;;;ACAD;AACwB;AAG7B;AAGgC;AAGE;AAe3F;IAmBE,0CAAoB,kBAAsC,EAChD,KAAqB,EACrB,UAAkC,EAClC,YAAiC;QAHvB,uBAAkB,GAAlB,kBAAkB,CAAoB;QAChD,UAAK,GAAL,KAAK,CAAgB;QACrB,eAAU,GAAV,UAAU,CAAwB;QAClC,iBAAY,GAAZ,YAAY,CAAqB;QAlBpC,aAAQ,GAAc,EAAE,CAAC;QACzB,kBAAa,GAAa,EAAE,CAAC;QAE7B,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAW,IAAI,CAAC;QAOlC,kCAA6B,GAAG,CAAC,CAAC;IAKa,CAAC;IAEhD,mDAAQ,GAAR;QAAA,iBAqBC;QApBC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAM;YACrC,KAAI,CAAC,SAAS,GAAG,KAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE7D,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE;gBAClB,KAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;gBAC3C,OAAO;aACR;YAED,IAAI,KAAI,CAAC,SAAS,EAAE;gBAClB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,SAAS,CAAC;gBAClC,KAAI,CAAC,qBAAqB,CAAC,KAAI,CAAC,QAAQ,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC;aAC3D;iBAAM;gBACL,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,kBAAkB;IAElB,gEAAqB,GAArB,UAAsB,QAAgB;QAAtC,iBASC;QARC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC;aACxC,SAAS,CAAC,gBAAM;YACf,IAAI,MAAM,EAAE;gBACV,KAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/E;QACH,CAAC,EAAE,eAAK;QACV,CAAC,EAAE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,kBAAkB;IAElB,wDAAa,GAAb,UAAc,MAAc;QAC1B,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SACnD;IACH,CAAC;IAGD,gEAAqB,GAArB,UAAsB,QAAgB,EAAE,SAAiB;QAAzD,iBAaC;QAZC,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC;YACrD,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC,SAAS,CAAC,gBAAM;YACjB,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,KAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,KAAI,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;QACzC,CAAC,EAAE,eAAK;YACN,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE;YACD,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IAEb,+DAAoB,GAApB,UAAqB,QAAgB;QAArC,iBAiBC;QAhBC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC;YAC9C,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,IAAI,CAAC,6BAA6B;SACzC,CAAC,CAAC,SAAS,CAAC,gBAAM;YACjB,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,MAAM,EAAE;gBACV,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtD,KAAI,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;aACxC;QACH,CAAC,EAAE,eAAK;YACN,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE;YACD,KAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,KAAI,CAAC,6BAA6B,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2DAAgB,GAAhB,UAAiB,KAAK;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1C;IACH,CAAC;IAID,eAAe;IAEf,4DAAiB,GAAjB,UAAkB,MAAM,EAAE,SAAiB;QACzC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;IAED,sDAAW,GAAX,UAAY,KAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;SAC9C;IACH,CAAC;IAED,2DAAgB,GAAhB;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;SAC1C;IACH,CAAC;IAED,uDAAY,GAAZ,UAAa,MAAc;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,4DAAiB,GAAjB,UAAkB,SAAiB;QACjC,IAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAC5B,MAAM,EAAE,OAAO,CAAC,IAAI;YACpB,OAAO,EAAE,IAAI,CAAC,cAAc;YAC5B,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,sDAAW,GAAX;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,6BAA6B,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAjKU,gCAAgC;QAV5C,+DAAS,CAAC;YACT,QAAQ,EAAE,8BAA8B;YACxC,wKAAwD;;SAEzD,CAAC;QAED,gEAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;+EAqBwC,mGAAkB;YACzC,8DAAc;YACT,sGAAsB;YACpB,wGAAmB;OAtBhC,gCAAgC,CAkK5C;IAAD,uCAAC;CAAA;AAlK4C;;;;;;;;;;;;ACzB7C,wBAAwB,mBAAmB,kBAAkB,qEAAqE,yBAAyB,KAAK,WAAW,uBAAuB,8BAA8B,KAAK,iBAAiB,mCAAmC,KAAK,kBAAkB,yBAAyB,0BAA0B,2BAA2B,2BAA2B,KAAK,eAAe,uBAAuB,yBAAyB,yBAAyB,+BAA+B,KAAK,aAAa,oBAAoB,qBAAqB,uBAAuB,KAAK,mBAAmB,uBAAuB,4BAA4B,wBAAwB,yBAAyB,KAAK,kBAAkB,uBAAuB,KAAK,mCAAmC,2BAA2B,kBAAkB,iBAAiB,oBAAoB,oBAAoB,qBAAqB,sBAAsB,KAAK,cAAc,sBAAsB,KAAK,8CAA8C,eAAe,mCAAmC,SAAS,KAAK,8CAA8C,cAAc,6BAA6B,SAAS,kBAAkB,4BAA4B,aAAa,SAAS,kBAAkB,4BAA4B,SAAS,KAAK,+CAA+C,mxF;;;;;;;;;;;ACAv3C,0oBAA0oB,q0D;;;;;;;;;;;;;;;;;ACAxlB;AAOlD;IAEE;IAAgB,CAAC;IAEjB,wCAAQ,GAAR;IACA,CAAC;IALU,qBAAqB;QALjC,+DAAS,CAAC;YACT,QAAQ,EAAE,oBAAoB;YAC9B,0IAA8C;;SAE/C,CAAC;;OACW,qBAAqB,CAOjC;IAAD,4BAAC;CAAA;AAPiC;;;;;;;;;;;;ACPlC,4kCAA4kC,mBAAmB,aAAa,mBAAmB,kEAAkE,0BAA0B,sGAAsG,gCAAgC,kKAAkK,cAAc,oCAAoC,iBAAiB,+NAA+N,eAAe,8LAA8L,uBAAuB,oQAAoQ,oCAAoC,yDAAyD,uCAAuC,mYAAmY,eAAe,4CAA4C,kBAAkB,+XAA+X,cAAc,QAAQ,mBAAmB,ssBAAssB,mBAAmB,kEAAkE,0BAA0B,uHAAuH,4BAA4B,WAAW,cAAc,gDAAgD,4BAA4B,6GAA6G,gCAAgC,mGAAmG,0BAA0B,uNAAuN,mBAAmB,m1EAAm1E,aAAa,W;;;;;;;;;;;ACA1oO,sBAAsB,cAAc,EAAE,+CAA+C,+f;;;;;;;;;;;;;;;;;;;;;;;;;ACAnC;AACoC;AAC7B;AACd;AAC6C;AACC;AAChD;AACgD;AAQzF;IAeE,gCACU,kBAAsC,EACtC,KAAqB,EACrB,MAAc,EACd,sBAA8C,EAC9C,QAAkB,EAClB,YAAiC;QAN3C,iBAeC;QAdS,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAQ;QACd,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,aAAQ,GAAR,QAAQ,CAAU;QAClB,iBAAY,GAAZ,YAAY,CAAqB;QAhB3C,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,gBAAW,GAAG,EAAE,CAAC;QACjB,mBAAc,GAAG,UAAU,CAAC;QAG5B,WAAM,GAAG,KAAK,CAAC;QAER,eAAU,GAAG,wBAAwB,CAAC;QAU3C,IAAI,CAAC,OAAO,GAAG,IAAI,8EAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,mFAAY,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,8EAAO,EAAE,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAM;YACrC,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gDAAe,GAAf;QACE,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;YAC/C,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;SACtC;QAED,OAAO,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;IACnD,CAAC;IAED,yCAAQ,GAAR;QAAA,iBAwBC;QAvBC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;YACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;SACnD,CAAC,CAAC,SAAS,CAAC,gBAAM;YACjB,oEAAoE;YACpE,iFAAiF;YACjF,KAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,8EAAO,EAAE,CAAC;YACvE,KAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,mFAAY,EAAE,CAAC;YAC3F,KAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;gBACpC,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,KAAK,EAAE,KAAI,CAAC,YAAY,CAAC,SAAS;gBAClC,QAAQ,EAAE,EAAE;gBACZ,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,aAAa;aAC1B,CAAC,CAAC;QACL,CAAC,EAAE,eAAK;YACN,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE;YACD,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4CAAW,GAAX,UAAY,KAAK;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,iDAAgB,GAAhB;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,6CAAY,GAAZ,UAAa,MAAc;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAEK,sCAAK,GAAX,UAAY,EAAU;;;;4BACpB,qBAAM,IAAI,OAAO,CAAC,iBAAO,IAAI,iBAAU,CAAC,cAAM,cAAO,EAAE,EAAT,CAAS,EAAE,EAAE,CAAC,EAA/B,CAA+B,CAAC,CAAC,IAAI,EAAE;;wBAApE,SAAoE,CAAC;;;;;KACtE;IAED,8CAAa,GAAb;QAAA,iBAsCC;QArCC,qGAAqG;QACrG,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE;YACzC,OAAO;SACR;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,wBAAwB,EAAE;YAChD,IAAI,CAAC,UAAU,GAAG,6BAA6B,GAAG,SAAS,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAG;gBACzB,KAAI,CAAC,UAAU,GAAG,wBAAwB,CAAC;YAC3C,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;YAClC,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,aAAa;YACzB,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAEjC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,QAAQ,IAAI,KAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAI,CAAC;SAChD;QAED,gIAAgI;QAChI,wHAAwH;QACxH,0HAA0H;QAE1H,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;SAChD;QAED,sDAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IAnIU,sBAAsB;QANlC,+DAAS,CAAC;YACT,QAAQ,EAAE,oBAAoB;YAC9B,0IAA8C;;SAE/C,CAAC;+EAkB8B,mGAAkB;YAC/B,8DAAc;YACb,sDAAM;YACU,sGAAsB;YACpC,wDAAQ;YACJ,iGAAmB;OArBhC,sBAAsB,CAoIlC;IAAD,6BAAC;CAAA;AApIkC;;;;;;;;;;;;ACfnC,+gBAA+gB,gBAAgB,8FAA8F,iBAAiB,uB;;;;;;;;;;;ACA9oB,+DAA+D,+J;;;;;;;;;;;;;;;;;;;;ACAgB;AACd;AACL;AAC+B;AAO3F;IAWE,0BAAmB,YAAiC;QAAjC,iBAAY,GAAZ,YAAY,CAAqB;QAHpD,iBAAY,GAAG,IAAI,0DAAY,EAAU,CAAC;IAGc,CAAC;IAEzD,mCAAQ,GAAR;IACA,CAAC;IAED,sCAAW,GAAX;QACE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAjBQ;QAAR,2DAAK,EAAE;wEAAU,8EAAO;qDAAC;IAEjB;QAAR,2DAAK,EAAE;;sDAAkB;IACjB;QAAR,2DAAK,EAAE;wEAAe,yEAAY;0DAAC;IAIpC;QADC,4DAAM,EAAE;;0DACiC;IAR/B,gBAAgB;QAL5B,+DAAS,CAAC;YACT,QAAQ,EAAE,aAAa;YACvB,qHAAuC;;SAExC,CAAC;+EAYiC,wGAAmB;OAXzC,gBAAgB,CAmB5B;IAAD,uBAAC;CAAA;AAnB4B;;;;;;;;;;;;;ACH7B;AAAA;AAAA;IAAA;QAEI;;;;WAIG;QACH,iBAAY,GAA0C,EAAE,CAAC;IAiI7D,CAAC;IA/HG;;;;;;;;OAQG;IACH,0CAAY,GAAZ,UAAa,KAA6B;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,mCAAK,GAAL,UAAM,KAA6B,EAAE,MAA2B;QAC5D,IAAM,WAAW,GAAuB;YACpC,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,MAAM;SACjB,CAAC;QAEF,+GAA+G;QAC/G,gDAAgD;QAChD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,0CAAY,GAAZ,UAAa,KAA6B;QAEtC,wDAAwD;QACxD,IAAM,SAAS,GAAY,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE9F,4HAA4H;QAC5H,iHAAiH;QACjH,+FAA+F;QAC/F,IAAI,SAAS,EAAE;YACX,IAAM,WAAW,GAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1H,IAAM,gBAAgB,GAAY,IAAI,CAAC,cAAc,CACjD,KAAK,CAAC,WAAW,EACjB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEpE,OAAO,WAAW,IAAI,gBAAgB,CAAC;SAC1C;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED;;;;OAIG;IACH,sCAAQ,GAAR,UAAS,KAA6B;QAElC,4GAA4G;QAC5G,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAClE,OAAO,IAAI,CAAC;SACf;QAED,uEAAuE;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,8CAAgB,GAAhB,UAAiB,MAA8B,EAAE,IAA4B;QACzE,OAAO,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACK,4CAAc,GAAtB,UAAuB,IAAS,EAAE,OAAY;QAE1C,6CAA6C;QAC7C,KAAK,IAAM,YAAY,IAAI,IAAI,EAAE;YAE7B,0EAA0E;YAC1E,IAAI,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;gBACtC,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;oBAC/B,kDAAkD;oBAClD,sEAAsE;oBACtE,KAAK,QAAQ;wBACT,IAAI,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,QAAQ;4BACzC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE;4BACjE,OAAO,KAAK,CAAC;yBAChB;wBACD,MAAM;oBACV,oDAAoD;oBACpD,6DAA6D;oBAC7D,KAAK,UAAU;wBACX,IAAI,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,UAAU;4BAC3C,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,EAAG;4BACrE,OAAO,KAAK,CAAC;yBAChB;wBACD,MAAM;oBACV,6DAA6D;oBAC7D;wBACI,IAAK,IAAI,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,EAAG;4BAChD,OAAO,KAAK,CAAC;yBAChB;iBACR;aACJ;iBAAM;gBACH,OAAO,KAAK,CAAC;aAChB;SACJ;QAED,wEAAwE;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,0BAAC;AAAD,CAAC;;;;;;;;;;;;;;;;;;;;;AC/I0C;AAEO;AACc;AAMhE;IAGE,uBAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAEzC,4BAAI,GAAJ;QAAA,iBASC;QARC,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;YACvC,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qEAAW,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAC,QAAoB;gBAC1E,KAAI,CAAC,QAAQ,GAAe,QAAQ,CAAC;gBACrC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAC,QAAa;gBACrB,MAAM,CAAC,0BAAwB,qEAAW,CAAC,UAAU,WAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAG,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAdU,aAAa;QAJzB,gEAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;+EAK0B,+DAAU;OAHzB,aAAa,CAezB;IAAD,oBAAC;CAAA;AAfyB;;;;;;;;;;;;;;;;;;;;ACTiB;AAIJ;AAOvC;IAGE;QAAA,iBAqBC;QAED,oBAAe,GAAU,EAAE,CAAC;QArB1B,IAAI,CAAC,sBAAsB,GAAG,4DAAQ,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,SAAS,CAAC;YACd,IAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE;gBAC9D,SAAS,GAAG,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;gBACrD,SAAS,CAAC,IAAI,CAAC;oBACb,OAAO,EAAE,YAAY;oBACrB,WAAW,EAAE;wBACX,aAAa,EAAE,KAAI,CAAC,eAAe;qBACpC;iBACF,CAAC,CAAC;aACJ;YACD,yBAAyB;YACzB,KAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC5B,CAAC,EAAE,IAAI,CAAC,CAAC;IAEX,CAAC;IAID,8CAAa,GAAb,UAAc,cAA8B;QAC1C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,0CAAS,GAAT,UAAU,UAAsB;QAC9B,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,YAAY;YACrB,WAAW,EAAE;gBACX,QAAQ,EAAE;oBACR,aAAa,EAAE,EAAE;oBACjB,UAAU,EAAE,CAAC,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,mDAAkB,GAAlB,UAAmB,mBAAwC;QACzD,SAAS,CAAC,IAAI,CAAC;YACb,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE;gBACX,UAAU,EAAE;oBACV,aAAa,EAAE;wBACb,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;wBACvB,aAAa,EAAE,aAAa;wBAC5B,SAAS,EAAE,CAAC;wBACZ,KAAK,EAAE,CAAC;wBACR,UAAU,EAAE,CAAC;qBACd;oBACD,UAAU,EAAE,CAAC,mBAAmB,CAAC;iBAClC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,2CAAU,GAAV;QACE,SAAS,EAAE;YACT,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC;iBAC7C,QAAQ,CAAC,EAAE,CAAC;iBACZ,SAAS,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE;YAC9B,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;IAC9B,CAAC;IAxEU,sBAAsB;QAHlC,gEAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;;OACW,sBAAsB,CAyElC;IAAD,6BAAC;CAAA;AAzEkC;;;;;;;;;;;;;;;;;;;;ACXQ;AACiB;AACH;AAKzD;IAGE,6BAAoB,cAA8B;QAAlD,iBAIC;QAJmB,mBAAc,GAAd,cAAc,CAAgB;QAF1C,iBAAY,GAAiB,IAAI,yEAAY,EAAE,CAAC;QAGtD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAM;YAC9C,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6CAAe,GAAf;QACE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,gDAAkB,GAA1B,UAA2B,MAAc;QACvC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,MAAM;eACxF,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,MAAM;eACrF,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEM,+CAAiB,GAAzB,UAA0B,MAAM,EAAE,SAAiB;QACjD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;IAED,2CAAa,GAAb;QACE,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;YACrC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI;YAC9C,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU;YAC3C,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB;YAC5D,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY;SACrD,CAAC;IACJ,CAAC;IACD,2CAAa,GAAb;QACE,OAAO;YACL,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI;YAC3E,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU;SAC5C,CAAC;IACJ,CAAC;IAED,6CAAe,GAAf;QACE,OAAO;YACL,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY;YACxD,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB;SAClD,CAAC;IACJ,CAAC;IACD,0CAAY,GAAZ;QACE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAC,CAAC;IAClD,CAAC;IACD,yCAAW,GAAX;QACE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,EAAC,CAAC;IAC3D,CAAC;IACD,2CAAa,GAAb;QACE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAC,CAAC;IACxD,CAAC;IACD,iDAAmB,GAAnB;QACE,OAAO,EAAE,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAC,CAAC;IACzE,CAAC;IACD,2CAAa,GAAb;QACE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAC,CAAC;IACxD,CAAC;IACD,iDAAmB,GAAnB;QACE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAC,CAAC;IAC9D,CAAC;IACD,6CAAe,GAAf;QACE,OAAO,EAAE,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAC,CAAC;IACrE,CAAC;IACD,6CAAe,GAAf;QACE,OAAO,EAAE,cAAc,EAAE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAC,CAAC;IACjE,CAAC;IA9EU,mBAAmB;QAH/B,gEAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;+EAIoC,8DAAc;OAHvC,mBAAmB,CA+E/B;IAAD,0BAAC;CAAA;AA/E+B;;;;;;;;;;;;;;;;;;;;;;ACPW;AACO;AAEb;AACoB;AAGc;AAQvE;IAEE,4BAAoB,IAAgB,EAAU,MAAqB;QAA/C,SAAI,GAAJ,IAAI,CAAY;QAAU,WAAM,GAAN,MAAM,CAAe;IAAM,CAAC;IAE1E,oDAAuB,GAAvB,UAAwB,WAAuB;QAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;QAElE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,OAAO,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/E,CAAC;IAED,2DAA8B,GAA9B,UAA+B,WAAuB;QACpD,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAEzE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,OAAO,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/E,CAAC;IAED,6CAAgB,GAAhB,UAAiB,WAA8B;QAC7C,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAEvE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,OAAO,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,0DAAG,CAAC,gBAAM;YACpF,OAAO,IAAI,oFAAa,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,sCAAS,GAAT,UAAU,QAAgB;QACxB,IAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;QAEpE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC;IACzF,CAAC;IAhCU,kBAAkB;QAH9B,gEAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;+EAG0B,+DAAU,EAAkB,oEAAa;OAFxD,kBAAkB,CAiC9B;IAAD,yBAAC;CAAA;AAjC8B;;;;;;;;;;;;;ACf/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAOI,yBAAY,eAAiC;QACzC,IAAI,eAAe,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;YACzC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;SACxD;IACL,CAAC;IAED,yCAAe,GAAf;QACI,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,gFAAgF;QAChF,qDAAqD;QACrD,IAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAI,IAAI,CAAC,IAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAoB,UAAmB,EAAnB,SAAI,CAAC,cAAc,EAAnB,cAAmB,EAAnB,IAAmB,EAAE;YAApC,IAAM,KAAK;YACZ,cAAc,EAAE,CAAC;YACjB,IAAI,cAAc,GAAG,CAAC,EAAE;gBACpB,YAAY,IAAI,OAAK,KAAK,CAAC,KAAK,GAAG,QAAU,CAAC;aACjD;iBAAM;gBACH,YAAY,IAAI,KAAG,KAAK,CAAC,KAAK,GAAG,QAAU,CAAC;aAC/C;SACJ;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IACL,sBAAC;AAAD,CAAC;;AAED;IAcI,iBAAY,OAAiB;QACzB,IAAI,OAAO,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAC/C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;gBAC5B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,UAAS,QAAyB;oBACzD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC/D,IAAI,CAAC,UAAU,GAAG,CAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAE,CAAC;qBACvD;yBAAM;wBACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACvD;gBACL,CAAC,EAAE,IAAI,CAAC,CAAC;aACZ;SACJ;IACL,CAAC;IAEM,qCAAmB,GAA1B;QACI,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAC,IAAI,QAAC,CAAC,QAAQ,IAAI,IAAI,EAAlB,CAAkB,CAAC,CAAC;gCAEhE,QAAQ;YACf,iDAAiD;YACjD,YAAY,IAAI,gBAAc,QAAQ,CAAC,IAAI,UAAK,QAAQ,CAAC,eAAe,EAAI,CAAC;YAC7E,KAA+B,UAAuD,EAAvD,YAAK,UAAU,CAAC,MAAM,CAAC,WAAC,IAAI,QAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,EAA1B,CAA0B,CAAC,EAAvD,cAAuD,EAAvD,IAAuD,EAAE;gBAAnF,IAAM,gBAAgB;gBACvB,YAAY,IAAI,aAAW,gBAAgB,CAAC,IAAI,UAAK,gBAAgB,CAAC,eAAe,EAAI,CAAC;aAC7F;;;QALL,KAAuB,UAAkB,EAAlB,yCAAkB,EAAlB,gCAAkB,EAAlB,IAAkB;YAApC,IAAM,QAAQ;oBAAR,QAAQ;SAMlB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IACL,cAAC;AAAD,CAAC;;AAED;IAYI,iBAAY,OAAiB;QACzB,IAAI,OAAO,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;SAC1B;IACL,CAAC;IAED,2BAAS,GAAT;QACI,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;YAClB,YAAY,IAAI,kBAAgB,IAAI,CAAC,GAAK,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,YAAY,IAAI,oBAAkB,IAAI,CAAC,KAAO,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YACxB,YAAY,IAAI,kBAAgB,IAAI,CAAC,SAAW,CAAC;SACpD;QACD,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;YAClB,YAAY,IAAI,kBAAgB,IAAI,CAAC,GAAK,CAAC;SAC9C;QACD,IAAM,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC3D,IAAI,oBAAoB,IAAI,IAAI,EAAE;YAC9B,YAAY,IAAI,oBAAoB,CAAC;SACxC;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,wCAAsB,GAAtB;QACI,IAAM,yBAAyB,GAAa,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;YACvD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;YACvD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;YACvD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;YACvD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,EAAE;YACvD,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;YAC/C,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjD;QAED,kIAAkI;QAClI,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,yBAAyB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,EAAE;gBACT,cAAc,GAAG,sBAAoB,yBAAyB,CAAC,CAAC,CAAG,CAAC;aACvE;iBAAM;gBACH,cAAc,IAAI,OAAK,yBAAyB,CAAC,CAAC,CAAG,CAAC;aACzD;SACJ;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IACL,cAAC;AAAD,CAAC;;AAED;IAKI,sBAAY,YAA2B;QACnC,IAAI,YAAY,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;SAC3C;IACL,CAAC;IAED,gCAAS,GAAT;QACI,IAAI,YAAY,GAAG,8BAA4B,IAAI,CAAC,IAAM,CAAC;QAC3D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;YAC5B,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;SAC5C;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IACL,mBAAC;AAAD,CAAC;;AAED;IAII,+FAA+F;IAC/F,qGAAqG;IACrG,uBAAY,aAA6B;QACrC,IAAI,aAAa,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;SACpE;IACL,CAAC;IACL,oBAAC;AAAD,CAAC;;AAED;IAAA;IAGA,CAAC;IAAD,2BAAC;AAAD,CAAC;;;;;;;;;;;;;;ACrND;AAAA;AAAA;IAAA;QACE,SAAI,GAAG,OAAO,CAAC;QACf,qBAAgB,GAAG,SAAS,CAAC;QAC7B,aAAQ,GAAI,EAAE,CAAC;QACf,eAAU,GAAG,QAAQ,CAAC;QACtB,eAAU,GAAG,QAAQ,CAAC;QACtB,iBAAY,GAAG,QAAQ,CAAC;QACxB,iBAAY,GAAG,IAAI,CAAC;QACpB,gBAAW,GAAG,IAAI,CAAC;QACnB,WAAM,GAAG,OAAO,CAAC;QACjB,iBAAY,GAAG,QAAQ,CAAC;QACxB,qBAAgB,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAAD,mBAAC;AAAD,CAAC;;;;;;;;;;;;;;ACZD;AAAA;AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,gEAAgE;AAEzD,IAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,2BAA2B;CAExC,CAAC;AAEF;;;;;;GAMG;AACH,mEAAmE;;;;;;;;;;;;;ACjBnE;AAAA;AAAA;AAAA;AAAA;AAA+C;AAC4B;AAE9B;AACY;AAEzD,IAAI,qEAAW,CAAC,UAAU,EAAE;IAC1B,oEAAc,EAAE,CAAC;CAClB;AAED,gGAAsB,EAAE,CAAC,eAAe,CAAC,yDAAS,CAAC;KAChD,KAAK,CAAC,aAAG,IAAI,cAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"../src/$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { ManufacturerSyndicationComponent } from './components/manufacturer-syndication/manufacturer-syndication.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';\r\n\r\nconst routes: Routes = [\r\n { path: 'products/:accessId', component: ManufacturerSyndicationComponent },\r\n { path: 'products/:accessId/:productId', component: ProductDetailComponent },\r\n { path: '**', component: PageNotFoundComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","module.exports = \"\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n title = 'SyndicationPortal';\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { ManufacturerSyndicationComponent } from './components/manufacturer-syndication/manufacturer-syndication.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ConfigService } from './services/config/config.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ProductComponent } from './components/product/product.component';\r\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\r\nimport { Clipboard } from 'ts-clipboard';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { CustomReuseStrategy } from './reuse-strategy';\r\nimport { PerfectScrollbarModule, PerfectScrollbarConfigInterface, PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { LazyLoadImageModule, intersectionObserverPreset } from 'ng-lazyload-image';\r\nimport { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';\r\nimport { IntersectionObserver } from 'node_modules/intersection-observer';\r\n\r\n\r\nexport function initializeApp(appConfig: ConfigService) {\r\n return () => appConfig.load();\r\n}\r\n\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n suppressScrollX: true\r\n};\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ProductDetailComponent,\r\n ManufacturerSyndicationComponent,\r\n ProductComponent,\r\n PageNotFoundComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n FormsModule,\r\n LazyLoadImageModule.forRoot({\r\n preset: intersectionObserverPreset\r\n }),\r\n PerfectScrollbarModule,\r\n NgSelectModule,\r\n InfiniteScrollModule\r\n ],\r\n providers: [\r\n HttpClientModule,\r\n ConfigService,\r\n Clipboard,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeApp,\r\n deps: [ConfigService],\r\n multi: true,\r\n },\r\n {\r\n provide: PERFECT_SCROLLBAR_CONFIG,\r\n useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG}\r\n ,\r\n {\r\n provide: RouteReuseStrategy,\r\n useClass: CustomReuseStrategy\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","module.exports = \"
0)\\\" [ngStyle]=\\\"styleService.getBodyStyles()\\\">\\r\\n
\\r\\n
0)\\\">\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n {{errorReason}}\\r\\n
\\r\\n
\\r\\n Loading NBS Plus products\\r\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvbWFudWZhY3R1cmVyLXN5bmRpY2F0aW9uL21hbnVmYWN0dXJlci1zeW5kaWNhdGlvbi5jb21wb25lbnQuc2NzcyJ9 */\"","import { Component, OnInit, Injectable } from '@angular/core';\r\nimport { SyndicationService } from 'src/app/services/syndication/syndication.service';\r\nimport { JsonPipe } from '@angular/common';\r\nimport { Product } from 'src/app/shared/response-models/product';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ProductRangeRespose } from 'src/app/shared/response-models/product-range-response';\r\nimport { jsonpCallbackContext } from '@angular/common/http/src/module';\r\nimport { GoogleAnalyticsService } from 'src/app/services/stats/google-analytics.service';\r\nimport { Params } from '@angular/router';\r\nimport { StyleOptions } from 'src/app/shared/style-options';\r\nimport { StyleOptionsService } from 'src/app/services/style-options/style-options.service';\r\nimport { debounce } from 'ts-debounce';\r\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\r\nimport { PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';\r\nimport { PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar';\r\n@Component({\r\n selector: 'app-manufacturer-syndication',\r\n templateUrl: './manufacturer-syndication.component.html',\r\n styleUrls: ['./manufacturer-syndication.component.scss']\r\n})\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ManufacturerSyndicationComponent implements OnInit {\r\n\r\n // Populated from response.\r\n public manufacturerId: number;\r\n public products: Product[] = [];\r\n public productRanges: string[] = [];\r\n\r\n public dataLoaded = false;\r\n public dataError = false;\r\n public errorReason = '';\r\n public rangeFilter: string = null;\r\n\r\n // Populated from url\r\n public accessId: string;\r\n public rangeName: string;\r\n public styleOptions: StyleOptions;\r\n\r\n currentNumberOfLoadedProducts = 0;\r\n\r\n constructor(private syndicationService: SyndicationService,\r\n private route: ActivatedRoute,\r\n private statLogger: GoogleAnalyticsService,\r\n private styleService: StyleOptionsService) { }\r\n\r\n ngOnInit() {\r\n this.styleOptions = this.styleService.getStyleOptions();\r\n this.accessId = this.route.snapshot.params['accessId'];\r\n\r\n this.route.queryParams.subscribe(params => {\r\n this.rangeName = this.GetValueOrDefault(params, 'rangeName');\r\n\r\n if (!this.accessId) {\r\n this.SetPageError('No widget ID supplied');\r\n return;\r\n }\r\n\r\n if (this.rangeName) {\r\n this.rangeFilter = this.rangeName;\r\n this.CreateForProductRange(this.accessId, this.rangeName);\r\n } else {\r\n this.CreateForAllProducts(this.accessId);\r\n }\r\n });\r\n\r\n this.populateProductRanges(this.accessId);\r\n }\r\n\r\n // Range drop down\r\n\r\n populateProductRanges(accessId: string): any {\r\n this.syndicationService.getRanges(accessId)\r\n .subscribe(result => {\r\n if (result) {\r\n this.productRanges = result.productRanges.map(function(e) { return e.name; });\r\n }\r\n }, error => {\r\n }, () => {\r\n });\r\n }\r\n\r\n\r\n // Search by range\r\n\r\n searchByRange(filter: string) {\r\n if (filter != null) {\r\n this.CreateForProductRange(this.accessId, filter);\r\n }\r\n }\r\n\r\n\r\n CreateForProductRange(accessId: string, rangeName: string): any {\r\n this.syndicationService.getManufacturerProductsByRange({\r\n accessId: accessId,\r\n rangeName: rangeName,\r\n }).subscribe(result => {\r\n this.dataLoaded = true;\r\n this.products = result.products;\r\n this.manufacturerId = result.rpsNumber;\r\n }, error => {\r\n this.handleError(error);\r\n }, () => {\r\n this.handleOnComplete();\r\n });\r\n }\r\n\r\n // Search all\r\n\r\n CreateForAllProducts(accessId: string): any {\r\n this.syndicationService.getManufacturerProducts({\r\n accessId: accessId,\r\n take: 100,\r\n skip: this.currentNumberOfLoadedProducts\r\n }).subscribe(result => {\r\n this.dataLoaded = true;\r\n if (result) {\r\n this.products = this.products.concat(result.products);\r\n this.manufacturerId = result.rpsNumber;\r\n }\r\n }, error => {\r\n this.handleError(error);\r\n }, () => {\r\n this.handleOnComplete();\r\n this.currentNumberOfLoadedProducts = this.products.length;\r\n });\r\n }\r\n\r\n loadMoreProducts(event) {\r\n if (this.rangeFilter == null) {\r\n this.CreateForAllProducts(this.accessId);\r\n }\r\n }\r\n\r\n\r\n\r\n // Form helpers\r\n\r\n GetValueOrDefault(params, paramName: string) {\r\n return params[paramName] || params[paramName.toLowerCase()] || this.styleOptions[paramName];\r\n }\r\n\r\n handleError(error) {\r\n this.dataLoaded = true;\r\n\r\n if (error.status === 400) {\r\n this.SetPageError('Bad request');\r\n } else {\r\n this.SetPageError('Failed to load products');\r\n }\r\n }\r\n\r\n handleOnComplete() {\r\n this.dataLoaded = true;\r\n\r\n if (this.products.length === 0) {\r\n this.SetPageError('No products to show');\r\n }\r\n }\r\n\r\n SetPageError(reason: string) {\r\n this.dataError = true;\r\n this.errorReason = reason;\r\n }\r\n\r\n childProductShown(eventData: string) {\r\n const product: Product = JSON.parse(eventData);\r\n\r\n this.statLogger.LogImpression({\r\n 'name': product.name,\r\n 'brand': this.manufacturerId,\r\n 'list': 'Syndication',\r\n 'category': '',\r\n 'dimension1': 'Product',\r\n 'dimension3': 'Syndication'\r\n });\r\n }\r\n\r\n clearFilter() {\r\n this.rangeFilter = null;\r\n this.products = [];\r\n this.currentNumberOfLoadedProducts = 0;\r\n this.CreateForAllProducts(this.accessId);\r\n }\r\n}\r\n","module.exports = \"body {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n font-family: \\\"azo-sans-web\\\", 'Azo Sans', Arial, sans-serif;\\r\\n font-size: 1.1em;\\r\\n}\\r\\n\\r\\na {\\r\\n color: #2fb1cb;\\r\\n text-decoration: none;\\r\\n}\\r\\n\\r\\na:hover {\\r\\n text-decoration: underline;\\r\\n}\\r\\n\\r\\n.wrapper {\\r\\n max-width: 960px;\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.logo {\\r\\n margin: 0 auto;\\r\\n max-width: 201px;\\r\\n padding: 100px 0;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\nimg {\\r\\n width: 100%;\\r\\n height: auto;\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.error h1 {\\r\\n color: #592d5e;\\r\\n margin-bottom: 30px;\\r\\n font-size: 180%;\\r\\n font-weight: 500;\\r\\n}\\r\\n\\r\\n.error p {\\r\\n color: #323333;\\r\\n}\\r\\n\\r\\n.NBS-pattern-bottom-right {\\r\\n position: absolute;\\r\\n bottom: 0;\\r\\n right: 0;\\r\\n opacity: .7;\\r\\n width: auto;\\r\\n width: 573px;\\r\\n height: 405px;\\r\\n}\\r\\n\\r\\n.st0 {\\r\\n fill: #592B5E;\\r\\n}\\r\\n\\r\\n@media screen and (max-width: 999px) {\\r\\n .logo {\\r\\n padding: 50px 0 30px 0;\\r\\n }\\r\\n}\\r\\n\\r\\n@media screen and (max-width: 768px) {\\r\\n body {\\r\\n font-size: 0.9em;\\r\\n }\\r\\n .error p {\\r\\n font-size: 110%;\\r\\n ;\\r\\n }\\r\\n .wrapper {\\r\\n padding: 0 20px;\\r\\n }\\r\\n}\\r\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9wYWdlLW5vdC1mb3VuZC9wYWdlLW5vdC1mb3VuZC5jb21wb25lbnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0lBQ0ksVUFBVTtJQUNWLFNBQVM7SUFDVCwwREFBMEQ7SUFDMUQsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksY0FBYztJQUNkLHFCQUFxQjtBQUN6Qjs7QUFFQTtJQUNJLDBCQUEwQjtBQUM5Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHNCQUFzQjtBQUMxQjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osY0FBYztBQUNsQjs7QUFFQTtJQUNJLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGdCQUFnQjtBQUNwQjs7QUFFQTtJQUNJLGNBQWM7QUFDbEI7O0FBRUE7SUFDSSxrQkFBa0I7SUFDbEIsU0FBUztJQUNULFFBQVE7SUFDUixXQUFXO0lBQ1gsV0FBVztJQUNYLFlBQVk7SUFDWixhQUFhO0FBQ2pCOztBQUVBO0lBQ0ksYUFBYTtBQUNqQjs7QUFFQTtJQUNJO1FBQ0ksc0JBQXNCO0lBQzFCO0FBQ0o7O0FBRUE7SUFDSTtRQUNJLGdCQUFnQjtJQUNwQjtJQUNBO1FBQ0ksZUFBZTs7SUFFbkI7SUFDQTtRQUNJLGVBQWU7SUFDbkI7QUFDSiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50LmNzcyIsInNvdXJjZXNDb250ZW50IjpbImJvZHkge1xyXG4gICAgcGFkZGluZzogMDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGZvbnQtZmFtaWx5OiBcImF6by1zYW5zLXdlYlwiLCAnQXpvIFNhbnMnLCBBcmlhbCwgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtc2l6ZTogMS4xZW07XHJcbn1cclxuXHJcbmEge1xyXG4gICAgY29sb3I6ICMyZmIxY2I7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxuXHJcbmE6aG92ZXIge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcbn1cclxuXHJcbi53cmFwcGVyIHtcclxuICAgIG1heC13aWR0aDogOTYwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuLmxvZ28ge1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBtYXgtd2lkdGg6IDIwMXB4O1xyXG4gICAgcGFkZGluZzogMTAwcHggMDtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmltZyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogYXV0bztcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4uZXJyb3IgaDEge1xyXG4gICAgY29sb3I6ICM1OTJkNWU7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xyXG4gICAgZm9udC1zaXplOiAxODAlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmVycm9yIHAge1xyXG4gICAgY29sb3I6ICMzMjMzMzM7XHJcbn1cclxuXHJcbi5OQlMtcGF0dGVybi1ib3R0b20tcmlnaHQge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBvcGFjaXR5OiAuNztcclxuICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgd2lkdGg6IDU3M3B4O1xyXG4gICAgaGVpZ2h0OiA0MDVweDtcclxufVxyXG5cclxuLnN0MCB7XHJcbiAgICBmaWxsOiAjNTkyQjVFO1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTlweCkge1xyXG4gICAgLmxvZ28ge1xyXG4gICAgICAgIHBhZGRpbmc6IDUwcHggMCAzMHB4IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XHJcbiAgICBib2R5IHtcclxuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xyXG4gICAgfVxyXG4gICAgLmVycm9yIHAge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTEwJTtcclxuICAgICAgICA7XHJcbiAgICB9XHJcbiAgICAud3JhcHBlciB7XHJcbiAgICAgICAgcGFkZGluZzogMCAyMHB4O1xyXG4gICAgfVxyXG59Il19 */\"","module.exports = \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n NBS Plus Syndication - Page not found\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Page not found

\\r\\n

The page or resource you're looking for cannot be located. If this problem persists, please contact the website administrator.

\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.css']\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n
\\r\\n Back to list\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

{{product.name}}

\\r\\n
{{product.summary}}
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

{{property.name}}:

\\r\\n
\\r\\n
    \\r\\n
  • {{ this.userToComplete }}
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • {{ property.propertyValues[0].value }} - {{ property.propertyValues[0].guidance }}
  • \\r\\n
\\r\\n
\\r\\n
= 2\\\">\\r\\n
    \\r\\n
  • \\r\\n [{{ value.value }}] - {{ value.guidance }}\\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Guidance for {{product.name}} from {{manufacturer.name}}

\\r\\n\\r\\n
\\r\\n

As standard

\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

Options

\\r\\n
\\r\\n
\\r\\n\\r\\n

Contacts:

\\r\\n

{{manufacturer.address.url}}

\\r\\n

{{manufacturer.address.email}}

\\r\\n

T: {{manufacturer.address.telephone}}

\\r\\n

F: {{manufacturer.address.fax}}

\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

The content provided on this page is supplied by {{manufacturer.name}} and also features on the NBS Plus. NBS is a trading name of RIBA Enterprises Limited (RIBAE). RIBAE excludes liability to the fullest extent possible by law for any\\r\\n loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising out of, or in connection with, the use of content on this page. RIBAE makes no representations or warranties\\r\\n of any kind, express or implied, about the completeness, accuracy, reliability, suitability of the content on this page. The user may copy and reproduce the content on this page however any reliance the user places on such content\\r\\n is therefore strictly at their own risk. The user is responsible for ensuring the contents are suitable for the intended purpose.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n {{errorReason}}\\r\\n
\"","module.exports = \"h4 {\\n margin: 0; }\\n\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvY29tcG9uZW50cy9wcm9kdWN0LWRldGFpbC9kOlxcYWdlbnRzXFw3XFxfd29ya1xcMzRcXHNcXHNyY1xcdGhlTkJTLlN5bmRpY2F0aW9uU2VydmljZS5TeW5kaWNhdGlvblBvcnRhbC9zcmNcXGFwcFxcY29tcG9uZW50c1xccHJvZHVjdC1kZXRhaWxcXHByb2R1Y3QtZGV0YWlsLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksU0FBUyxFQUFBIiwiZmlsZSI6InNyYy9hcHAvY29tcG9uZW50cy9wcm9kdWN0LWRldGFpbC9wcm9kdWN0LWRldGFpbC5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImg0IHtcclxuICAgIG1hcmdpbjogMDtcclxufSJdfQ== */\"","import { Component, OnInit } from '@angular/core';\r\nimport { SyndicationService } from 'src/app/services/syndication/syndication.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport { Product, Manufacturer, Address } from 'src/app/shared/response-models/product';\r\nimport { GoogleAnalyticsService } from 'src/app/services/stats/google-analytics.service';\r\nimport { Clipboard } from 'ts-clipboard';\r\nimport { StyleOptionsService } from '../../services/style-options/style-options.service';\r\n\r\n@Component({\r\n selector: 'app-product-detail',\r\n templateUrl: './product-detail.component.html',\r\n styleUrls: ['./product-detail.component.scss']\r\n})\r\n\r\nexport class ProductDetailComponent implements OnInit {\r\n\r\n product: Product;\r\n manufacturer: Manufacturer;\r\n\r\n dataLoaded = false;\r\n dataError = false;\r\n errorReason = '';\r\n userToComplete = '[______]';\r\n accessId: string;\r\n\r\n isRoot = false;\r\n\r\n public copiedText = 'Copy spec to clipboard';\r\n\r\n constructor(\r\n private syndicationService: SyndicationService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private googleAnalyticsService: GoogleAnalyticsService,\r\n private location: Location,\r\n private styleService: StyleOptionsService\r\n ) {\r\n this.product = new Product();\r\n this.manufacturer = new Manufacturer();\r\n this.manufacturer.address = new Address();\r\n\r\n this.route.queryParams.subscribe(params => {\r\n this.isRoot = params['root'] === '1';\r\n });\r\n }\r\n\r\n getFormattedUrl(): string {\r\n if (this.manufacturer.address.url === undefined) {\r\n return '';\r\n }\r\n\r\n if (this.manufacturer.address.url.startsWith('http')) {\r\n return this.manufacturer.address.url;\r\n }\r\n\r\n return 'http://' + this.manufacturer.address.url;\r\n }\r\n\r\n ngOnInit() {\r\n this.accessId = this.route.snapshot.params['accessId'];\r\n\r\n this.syndicationService.getProductDetail({\r\n accessId: this.accessId,\r\n referrer: this.router.url,\r\n productId: this.route.snapshot.params['productId']\r\n }).subscribe(result => {\r\n // Have intermittently seen a product null error during development.\r\n // Not sure what caused it, but this null check should stop it breaking anything.\r\n this.product = result.product != null ? result.product : new Product();\r\n this.manufacturer = result.manufacturer != null ? result.manufacturer : new Manufacturer();\r\n this.googleAnalyticsService.LogDetail({\r\n name: this.product.name,\r\n brand: this.manufacturer.rpsNumber,\r\n category: '',\r\n dimension1: 'Product',\r\n dimension3: 'Syndication',\r\n });\r\n }, error => {\r\n this.handleError(error);\r\n }, () => {\r\n this.handleOnComplete();\r\n });\r\n }\r\n\r\n handleError(error) {\r\n this.dataLoaded = true;\r\n\r\n if (error.status === 400) {\r\n this.SetPageError('Bad request');\r\n } else {\r\n this.SetPageError(error);\r\n }\r\n }\r\n\r\n handleOnComplete() {\r\n this.dataLoaded = true;\r\n }\r\n\r\n SetPageError(reason: string) {\r\n this.dataError = true;\r\n this.errorReason = reason;\r\n }\r\n\r\n async delay(ms: number) {\r\n await new Promise(resolve => setTimeout(() => resolve(), ms)).then();\r\n }\r\n\r\n copySpecClick(): void {\r\n // Catches cases of this being run before product has loaded, or run on a product that failed to load\r\n if (this.product.properties === undefined) {\r\n return;\r\n }\r\n if (this.copiedText === 'Copy spec to clipboard') {\r\n this.copiedText = '' + ' Copied';\r\n this.delay(2000).then(any => {\r\n this.copiedText = 'Copy spec to clipboard';\r\n });\r\n }\r\n\r\n this.googleAnalyticsService.LogCopyToClipboard({\r\n name: this.product.name,\r\n brand: this.manufacturer.rpsNumber,\r\n category: '',\r\n dimension1: 'Product',\r\n dimension3: 'Syndication',\r\n price: 1,\r\n variant: '',\r\n quantity: 1\r\n });\r\n\r\n let specText = this.product.name;\r\n\r\n if (this.manufacturer !== undefined) {\r\n specText += `${this.manufacturer.stringify()}`;\r\n }\r\n\r\n // In v1 of NBS Plus Syndication, Product Reference came under Manufacturer. It comes through from the Product Properties rather\r\n // than the Manufacturer, so it sits a level higher. As far as we know only Building needs this, and it works correctly.\r\n // If anything isn't showing the product reference properly, consider working out a way to move it under the manufacturer.\r\n\r\n if (this.product.properties.length > 0) {\r\n specText += this.product.stringifyProperties();\r\n }\r\n\r\n Clipboard.copy(specText);\r\n }\r\n}\r\n","module.exports = \"
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n {{ product.name }}\\r\\n \\r\\n

\\r\\n {{product.summary}}\\r\\n

\\r\\n
\"","module.exports = \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2NvbXBvbmVudHMvcHJvZHVjdC9wcm9kdWN0LmNvbXBvbmVudC5zY3NzIn0= */\"","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { Product } from 'src/app/shared/response-models/product';\r\nimport { StyleOptions } from 'src/app/shared/style-options';\r\nimport { StyleOptionsService } from 'src/app/services/style-options/style-options.service';\r\n\r\n@Component({\r\n selector: 'app-product',\r\n templateUrl: './product.component.html',\r\n styleUrls: ['./product.component.scss']\r\n})\r\nexport class ProductComponent implements OnInit {\r\n @Input() product: Product;\r\n\r\n @Input() accessId: string;\r\n @Input() styleOptions: StyleOptions;\r\n\r\n\r\n @Output()\r\n productShown = new EventEmitter();\r\n\r\n\r\n constructor(public styleService: StyleOptionsService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n statTrigger() {\r\n this.productShown.emit(JSON.stringify(this.product));\r\n }\r\n}\r\n","import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n\r\ninterface RouteStorageObject {\r\n snapshot: ActivatedRouteSnapshot;\r\n handle: DetachedRouteHandle;\r\n}\r\n\r\nexport class CustomReuseStrategy implements RouteReuseStrategy {\r\n\r\n /**\r\n * Object which will store RouteStorageObjects indexed by keys\r\n * The keys will all be a path (as in route.routeConfig.path)\r\n * This allows us to see if we've got a route stored for the requested path\r\n */\r\n storedRoutes: { [key: string]: RouteStorageObject } = {};\r\n\r\n /**\r\n * Decides when the route should be stored\r\n * If the route should be stored, I believe the boolean is indicating to a controller whether or not to fire this.store\r\n * _When_ it is called though does not particularly matter, just know that this determines whether or not we store the route\r\n * An idea of what to do here: check the route.routeConfig.path to see if it is a path you would like to store\r\n * @param route This is, at least as I understand it, the route that the user is currently on, and we would like to know\r\n * if we want to store it\r\n * @returns boolean indicating that we want to (true) or do not want to (false) store that route\r\n */\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Constructs object of type `RouteStorageObject` to store, and then stores it for later attachment\r\n * @param route This is stored for later comparison to requested routes, see `this.shouldAttach`\r\n * @param handle Later to be retrieved by this.retrieve, and offered up to whatever controller is using this class\r\n */\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n const storedRoute: RouteStorageObject = {\r\n snapshot: route,\r\n handle: handle\r\n };\r\n\r\n // routes are stored by path - the key is the path name, and the handle is stored under it so that you can only\r\n // ever have one object stored for a single path\r\n this.storedRoutes[route.routeConfig.path] = storedRoute;\r\n }\r\n\r\n /**\r\n * Determines whether or not there is a stored route and, if there is, whether or not it should be rendered in place of requested route\r\n * @param route The route the user requested\r\n * @returns boolean indicating whether or not to render the stored route\r\n */\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n\r\n // this will be true if the route has been stored before\r\n const canAttach: boolean = !!route.routeConfig && !!this.storedRoutes[route.routeConfig.path];\r\n\r\n // this decides whether the route already stored should be rendered in place of the requested route, and is the return value\r\n // at this point we already know that the paths match because the storedResults key is the route.routeConfig.path\r\n // so, if the route.params and route.queryParams also match, then we should reuse the component\r\n if (canAttach) {\r\n const paramsMatch: boolean = this.compareObjects(route.params, this.storedRoutes[route.routeConfig.path].snapshot.params);\r\n const queryParamsMatch: boolean = this.compareObjects(\r\n route.queryParams,\r\n this.storedRoutes[route.routeConfig.path].snapshot.queryParams);\r\n\r\n return paramsMatch && queryParamsMatch;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Finds the locally stored instance of the requested route, if it exists, and returns it\r\n * @param route New route the user has requested\r\n * @returns DetachedRouteHandle object which can be used to render the component\r\n */\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n\r\n // return null if the path does not have a routerConfig OR if there is no stored route for that routerConfig\r\n if (!route.routeConfig || !this.storedRoutes[route.routeConfig.path]) {\r\n return null;\r\n }\r\n\r\n /** returns handle when the route.routeConfig.path is already stored */\r\n return this.storedRoutes[route.routeConfig.path].handle;\r\n }\r\n\r\n /**\r\n * Determines whether or not the current route should be reused\r\n * @param future The route the user is going to, as triggered by the router\r\n * @param curr The route the user is currently on\r\n * @returns boolean basically indicating true if the user intends to leave the current route\r\n */\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return future.routeConfig === curr.routeConfig;\r\n }\r\n\r\n /**\r\n * This nasty bugger finds out whether the objects are _traditionally_ equal to each other, like you might assume\r\n * someone else would have put this function in vanilla JS already\r\n * One thing to note is that it uses coercive comparison (==) on properties which both objects have, not strict comparison (===)\r\n * Another important note is that the method only tells you if `compare` has all equal parameters to `base`, not the other way around\r\n * @param base The base object which you would like to compare another object to\r\n * @param compare The object to compare to base\r\n * @returns boolean indicating whether or not the objects have all the same properties and those properties are ==\r\n */\r\n private compareObjects(base: any, compare: any): boolean {\r\n\r\n // loop through all properties in base object\r\n for (const baseProperty in base) {\r\n\r\n // determine if comparrison object has that property, if not: return false\r\n if (compare.hasOwnProperty(baseProperty)) {\r\n switch (typeof base[baseProperty]) {\r\n // if one is object and other is not: return false\r\n // if they are both objects, recursively call this comparison function\r\n case 'object':\r\n if (typeof compare[baseProperty] !== 'object' ||\r\n !this.compareObjects(base[baseProperty], compare[baseProperty])) {\r\n return false;\r\n }\r\n break;\r\n // if one is function and other is not: return false\r\n // if both are functions, compare function.toString() results\r\n case 'function':\r\n if (typeof compare[baseProperty] !== 'function' ||\r\n base[baseProperty].toString() !== compare[baseProperty].toString() ) {\r\n return false;\r\n }\r\n break;\r\n // otherwise, see if they are equal using coercive comparison\r\n default:\r\n if ( base[baseProperty] !== compare[baseProperty] ) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // returns true only after false HAS NOT BEEN returned through all loops\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IAppConfig } from '../../interfaces/app-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from '../../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ConfigService {\r\n public settings: IAppConfig;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n load() {\r\n return new Promise((resolve, reject) => {\r\n this.http.get(environment.configFile).toPromise().then((response: IAppConfig) => {\r\n this.settings = response;\r\n resolve();\r\n }).catch((response: any) => {\r\n reject(`Could not load file '${environment.configFile}': ${JSON.stringify(response)}`);\r\n });\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ImpressionStat } from 'src/app/shared/stat-models/impression-stat';\r\nimport { DetailStat } from 'src/app/shared/stat-models/detail-stat';\r\nimport { CopyToClipboardStat } from 'src/app/shared/stat-models/copy-to-clipboard-stat';\r\nimport { debounce } from 'ts-debounce';\r\n\r\ndeclare let dataLayer: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GoogleAnalyticsService {\r\n LogImpressionDebounced: any;\r\n\r\n constructor() {\r\n\r\n this.LogImpressionDebounced = debounce(() => {\r\n let i = 0;\r\n let j = 0;\r\n let temparray;\r\n const chunk = 15;\r\n\r\n for (i = 0, j = this.impressionStats.length; i < j; i += chunk) {\r\n temparray = this.impressionStats.slice(i, i + chunk);\r\n dataLayer.push({\r\n 'event': 'Impression',\r\n 'ecommerce': {\r\n 'impressions': this.impressionStats\r\n }\r\n });\r\n }\r\n // Delete all impressions\r\n this.impressionStats = [];\r\n }, 1000);\r\n\r\n }\r\n\r\n impressionStats: any[] = [];\r\n\r\n LogImpression(impressionStat: ImpressionStat) {\r\n this.impressionStats.push(impressionStat);\r\n this.LogImpressionDebounced();\r\n }\r\n\r\n LogDetail(detailStat: DetailStat) {\r\n dataLayer.push({\r\n 'event': 'DetailView',\r\n 'ecommerce': {\r\n 'detail': {\r\n 'actionField': {},\r\n 'products': [detailStat]\r\n }\r\n }\r\n });\r\n }\r\n\r\n LogCopyToClipboard(copyToClipboardStat: CopyToClipboardStat) {\r\n dataLayer.push({\r\n 'event': 'Purchase',\r\n 'ecommerce': {\r\n 'purchase': {\r\n 'actionField': {\r\n 'id': this.createGuid(),\r\n 'affiliation': 'syndication',\r\n 'revenue': 1,\r\n 'tax': 0,\r\n 'shipping': 0\r\n },\r\n 'products': [copyToClipboardStat]\r\n }\r\n }\r\n });\r\n }\r\n\r\n createGuid(): string {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n\r\n return s4() + s4() + s4() + s4() +\r\n s4() + s4() + s4() + s4();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StyleOptions } from 'src/app/shared/style-options';\r\nimport { Params, ActivatedRoute } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StyleOptionsService {\r\n private styleOptions: StyleOptions = new StyleOptions();\r\n\r\n constructor(private activatedRoute: ActivatedRoute) {\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.updateSetupFromUrl(params);\r\n });\r\n }\r\n\r\n getStyleOptions(): StyleOptions {\r\n return this.styleOptions;\r\n }\r\n\r\n private updateSetupFromUrl(params: Params): any {\r\n this.styleOptions.font = this.GetValueOrDefault(params, 'font');\r\n this.styleOptions.fontSize = this.GetValueOrDefault(params, 'fontSize');\r\n this.styleOptions.fontColour = this.GetValueOrDefault(params, 'fontColour');\r\n this.styleOptions.borderColour = this.GetValueOrDefault(params, 'borderColour');\r\n this.styleOptions.backgroundColour = this.GetValueOrDefault(params, 'backgroundColour');\r\n this.styleOptions.linkColour = this.GetValueOrDefault(params, 'linkColour');\r\n this.styleOptions.buttonColour = this.GetValueOrDefault(params, 'buttonColour');\r\n this.styleOptions.buttonTextColour = this.GetValueOrDefault(params, 'buttonTextColour');\r\n this.styleOptions.height = this.GetValueOrDefault(params, 'height');\r\n this.styleOptions.displayImage = (this.GetValueOrDefault(params, 'displayImage') === 'true'\r\n || this.GetValueOrDefault(params, 'displayImage') === true);\r\n this.styleOptions.displayText = (this.GetValueOrDefault(params, 'displayText') === 'true'\r\n || this.GetValueOrDefault(params, 'displayText') === true);\r\n }\r\n\r\n private GetValueOrDefault(params, paramName: string) {\r\n return params[paramName] || params[paramName.toLowerCase()] || this.styleOptions[paramName];\r\n }\r\n\r\n getBodyStyles() {\r\n return {\r\n 'font-family': this.styleOptions.font,\r\n 'font-size': this.styleOptions.fontSize + 'px',\r\n 'color': '#' + this.styleOptions.fontColour,\r\n 'background-color': '#' + this.styleOptions.backgroundColour,\r\n 'border-color': '#' + this.styleOptions.borderColour\r\n };\r\n }\r\n getLinkStyles() {\r\n return {\r\n 'font-size': parseInt(this.styleOptions.fontSize.toString(), 10) + 2 + 'px',\r\n 'color': '#' + this.styleOptions.linkColour\r\n };\r\n }\r\n\r\n getButtonStyles() {\r\n return {\r\n 'background-color': '#' + this.styleOptions.buttonColour,\r\n 'color': '#' + this.styleOptions.buttonTextColour\r\n };\r\n }\r\n getFontStyle() {\r\n return { 'font-family': this.styleOptions.font};\r\n }\r\n getFontSize() {\r\n return { 'font-size': this.styleOptions.fontSize + 'px'};\r\n }\r\n getFontColour() {\r\n return { 'color': '#' + this.styleOptions.fontColour};\r\n }\r\n getBackgroundColour() {\r\n return { 'background-color': '#' + this.styleOptions.backgroundColour};\r\n }\r\n getLinkColour() {\r\n return { 'color': '#' + this.styleOptions.linkColour};\r\n }\r\n getbuttonTextColour() {\r\n return { 'color': '#' + this.styleOptions.buttonTextColour};\r\n }\r\n getButtonColour() {\r\n return { 'background-color': '#' + this.styleOptions.buttonColour};\r\n }\r\n getBorderColour() {\r\n return { 'border-color': '#' + this.styleOptions.borderColour};\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ConfigService } from '../config/config.service';\r\nimport { ProductRangeRespose } from 'src/app/shared/response-models/product-range-response';\r\nimport { AllProductsResponse } from 'src/app/shared/response-models/all-products-response';\r\nimport { ProductDetail } from 'src/app/shared/response-models/product';\r\nimport { WidgetData } from '../../shared/post-models/widget-data';\r\nimport { WidgetProductData } from 'src/app/shared/post-models/widget-product-data';\r\nimport { RangeInfoResponse } from 'src/app/shared/response-models/range-info-response';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SyndicationService {\r\n\r\n constructor(private http: HttpClient, private config: ConfigService) { }\r\n\r\n getManufacturerProducts(requestData: WidgetData): Observable {\r\n const baseUrl = this.config.settings.syndicationApi.baseUrl;\r\n const queryPath = this.config.settings.syndicationApi.productsUrl;\r\n\r\n return this.http.post(baseUrl + queryPath, requestData);\r\n }\r\n\r\n getManufacturerProductsByRange(requestData: WidgetData): Observable {\r\n const baseUrl = this.config.settings.syndicationApi.baseUrl;\r\n const queryPath = this.config.settings.syndicationApi.productsByRangeUrl;\r\n\r\n return this.http.post(baseUrl + queryPath, requestData);\r\n }\r\n\r\n getProductDetail(requestData: WidgetProductData): Observable {\r\n const baseUrl = this.config.settings.syndicationApi.baseUrl;\r\n const queryPath = this.config.settings.syndicationApi.productDetailUrl;\r\n\r\n return this.http.post(baseUrl + queryPath, requestData).pipe(map(result => {\r\n return new ProductDetail(result);\r\n }));\r\n }\r\n\r\n getRanges(accessId: string): Observable {\r\n const baseUrl = this.config.settings.syndicationApi.baseUrl;\r\n const queryPath = this.config.settings.syndicationApi.productRanges;\r\n\r\n return this.http.get(baseUrl + queryPath + '?accessId=' + accessId);\r\n }\r\n}\r\n","export class ProductProperty {\r\n id: string;\r\n parentId: string;\r\n name: string;\r\n unit: string;\r\n propertyValues: ProductPropertyValue[];\r\n\r\n constructor(productProperty?: ProductProperty) {\r\n if (productProperty !== undefined) {\r\n this.id = productProperty.id;\r\n this.parentId = productProperty.parentId;\r\n this.name = productProperty.name;\r\n this.unit = productProperty.unit;\r\n this.propertyValues = productProperty.propertyValues;\r\n }\r\n }\r\n\r\n stringifyValues(): string {\r\n let returnString = '';\r\n\r\n // Units (mm, m, v) don't have nulls in the database, they're in as '[no unit]'.\r\n // If a unit exists, it needs appending to the value.\r\n const unitText = this.unit !== '[no unit]' ? ` ${this.unit}` : '';\r\n\r\n let iterationCount = 0;\r\n for (const value of this.propertyValues) {\r\n iterationCount++;\r\n if (iterationCount > 1) {\r\n returnString += `/ ${value.value}${unitText}`;\r\n } else {\r\n returnString += `${value.value}${unitText}`;\r\n }\r\n }\r\n return returnString;\r\n }\r\n}\r\n\r\nexport class Product {\r\n name: string;\r\n imageUrl: string;\r\n description: string;\r\n productId: string;\r\n\r\n productRef: string;\r\n visible: boolean;\r\n defaultGuidance: string;\r\n generalGuidance: string;\r\n optionGuidance: string;\r\n lastModified: Date;\r\n properties: ProductProperty[];\r\n\r\n constructor(product?: Product) {\r\n if (product !== undefined) {\r\n this.name = product.name;\r\n this.imageUrl = product.imageUrl;\r\n this.description = product.description;\r\n this.productId = product.productId;\r\n this.productRef = product.productRef;\r\n this.visible = product.visible;\r\n this.defaultGuidance = product.defaultGuidance;\r\n this.generalGuidance = product.generalGuidance;\r\n this.optionGuidance = product.optionGuidance;\r\n this.lastModified = product.lastModified;\r\n if (product.properties != null) {\r\n product.properties.forEach(function(property: ProductProperty) {\r\n if (this.properties === undefined || this.properties.length === 0) {\r\n this.properties = [ new ProductProperty(property) ];\r\n } else {\r\n this.properties.push(new ProductProperty(property));\r\n }\r\n }, this);\r\n }\r\n }\r\n }\r\n\r\n public stringifyProperties(): string {\r\n let returnString = '';\r\n const levelOneProperties = this.properties.filter(x => x.parentId == null);\r\n\r\n for (const property of levelOneProperties) {\r\n // \\n = new line, \\t = tab, \\u2022 = bullet point\r\n returnString += `\\n\\t\\u2022 ${property.name}: ${property.stringifyValues()}`;\r\n for (const levelTwoProperty of this.properties.filter(x => x.parentId === property.id)) {\r\n returnString += `\\n\\t\\t- ${levelTwoProperty.name}: ${levelTwoProperty.stringifyValues()}`;\r\n }\r\n }\r\n return returnString;\r\n }\r\n}\r\n\r\nexport class Address {\r\n addressLine1: string;\r\n addressLine2: string;\r\n addressLine3: string;\r\n addressLine4: string;\r\n addressLine5: string;\r\n postcode: string;\r\n email: string;\r\n url: string;\r\n telephone: string;\r\n fax: string;\r\n\r\n constructor(address?: Address) {\r\n if (address !== undefined) {\r\n this.addressLine1 = address.addressLine1;\r\n this.addressLine2 = address.addressLine2;\r\n this.addressLine3 = address.addressLine3;\r\n this.addressLine4 = address.addressLine4;\r\n this.addressLine5 = address.addressLine5;\r\n this.postcode = address.postcode;\r\n this.email = address.email;\r\n this.url = address.url;\r\n this.telephone = address.telephone;\r\n this.fax = address.fax;\r\n }\r\n }\r\n\r\n stringify(): string {\r\n let returnString = '';\r\n if (this.url != null) {\r\n returnString += `\\n\\t\\t- Web: ${this.url}`;\r\n }\r\n if (this.email != null) {\r\n returnString += `\\n\\t\\t- Email: ${this.email}`;\r\n }\r\n if (this.telephone != null) {\r\n returnString += `\\n\\t\\t- Tel: ${this.telephone}`;\r\n }\r\n if (this.fax != null) {\r\n returnString += `\\n\\t\\t- Fax: ${this.fax}`;\r\n }\r\n const stringyPostalAddress = this.stringifyPostalAddress();\r\n if (stringyPostalAddress != null) {\r\n returnString += stringyPostalAddress;\r\n }\r\n return returnString;\r\n }\r\n\r\n stringifyPostalAddress(): string {\r\n const addressComponentsWithData: string[] = [];\r\n\r\n if (this.addressLine1 != null && this.addressLine1 !== '') {\r\n addressComponentsWithData.push(this.addressLine1);\r\n }\r\n if (this.addressLine2 != null && this.addressLine2 !== '') {\r\n addressComponentsWithData.push(this.addressLine2);\r\n }\r\n if (this.addressLine3 != null && this.addressLine3 !== '') {\r\n addressComponentsWithData.push(this.addressLine3);\r\n }\r\n if (this.addressLine4 != null && this.addressLine4 !== '') {\r\n addressComponentsWithData.push(this.addressLine4);\r\n }\r\n if (this.addressLine5 != null && this.addressLine5 !== '') {\r\n addressComponentsWithData.push(this.addressLine5);\r\n }\r\n if (this.postcode != null && this.postcode !== '') {\r\n addressComponentsWithData.push(this.postcode);\r\n }\r\n\r\n // This is null so that if no address properties exist, the address as a whole will be null and the calling method can exclude it.\r\n let stringyAddress = null;\r\n for (let i = 0; i < addressComponentsWithData.length; i++) {\r\n if (i === 0) {\r\n stringyAddress = `\\n\\t\\t- Address: ${addressComponentsWithData[i]}`;\r\n } else {\r\n stringyAddress += `, ${addressComponentsWithData[i]}`;\r\n }\r\n }\r\n\r\n return stringyAddress;\r\n }\r\n}\r\n\r\nexport class Manufacturer {\r\n name: string;\r\n address: Address;\r\n rpsNumber: number;\r\n\r\n constructor(manufacturer?: Manufacturer) {\r\n if (manufacturer !== undefined) {\r\n this.name = manufacturer.name;\r\n this.address = new Address(manufacturer.address);\r\n this.rpsNumber = manufacturer.rpsNumber;\r\n }\r\n }\r\n\r\n stringify(): string {\r\n let returnString = `\\n\\t\\u2022 Manufacturer: ${this.name}`;\r\n if (this.address !== undefined) {\r\n returnString += this.address.stringify();\r\n }\r\n return returnString;\r\n }\r\n}\r\n\r\nexport class ProductDetail {\r\n product: Product;\r\n manufacturer: Manufacturer;\r\n\r\n // Constructor exists like this so that we can create a new typed object from an HTTP response.\r\n // Without this the http response is just a plain object, and we can't use any methods on the object.\r\n constructor(productDetail?: ProductDetail) {\r\n if (productDetail !== undefined) {\r\n this.product = new Product(productDetail.product);\r\n this.manufacturer = new Manufacturer(productDetail.manufacturer);\r\n }\r\n }\r\n}\r\n\r\nexport class ProductPropertyValue {\r\n guidance: string;\r\n value: string;\r\n}\r\n","export class StyleOptions {\r\n font = 'Arial';\r\n backgroundColour = 'FFFFFFF';\r\n fontSize = 14;\r\n fontColour = '333333';\r\n linkColour = '39B1CB';\r\n buttonColour = '39B1CB';\r\n displayImage = true;\r\n displayText = true;\r\n height = '700px';\r\n borderColour = 'dbe0de';\r\n buttonTextColour = 'ffffff';\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n configFile: 'assets/config/config.json'\r\n\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n"],"sourceRoot":""}