@optable/web-sdk 0.12.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -586,8 +586,9 @@ The above example uses various personalization tags as documented in [Braze's us
586
586
 
587
587
  ### Call tryIdentifyFromParams SDK API
588
588
 
589
- On your website destination page, you can call a helper method provided by the SDK which will attempt to parse and validate any **oeid** parameters passed to the page via query string and, when found, automatically trigger a call to Optable's **identify** API. For example:
589
+ On your website destination page, you can call a helper method provided by the SDK which will attempt to parse and validate a given query string parameter as EID (defaults to **oeid**), when found, it will automatically trigger a call to Optable's **identify** API.
590
590
 
591
+ For example:
591
592
  ```html
592
593
  <!-- Optable SDK async load: -->
593
594
  <script async src="https://cdn.optable.co/web-sdk/v0/sdk.js"></script>
@@ -595,7 +596,13 @@ On your website destination page, you can call a helper method provided by the S
595
596
  window.optable = window.optable || { cmd: [] };
596
597
  optable.cmd.push(function () {
597
598
  optable.instance = new optable.SDK({ host: "dcn.customer.com", site: "my-site" });
599
+
600
+ // Identify using a valid EID (email SHA256) "oeid" query string parameter.
598
601
  optable.instance.tryIdentifyFromParams();
602
+
603
+ // Or if the EID is being passed through a "email_sha" query string
604
+ // like https://www.mysite.com?origin=newsletter&email_sha=abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789&foo=bar
605
+ // optable.instance.tryIdentifyFromParams("email_sha");
599
606
  });
600
607
  </script>
601
608
  ```
@@ -614,6 +621,6 @@ $ cd path/to/optable-web-sdk
614
621
  $ make
615
622
  $ docker-compose up
616
623
  ```
617
- Then head to [http://localhost:8180/](localhost:8180) to see the demo pages. You can modify the code in each demo, then run `make build` and finally refresh the demo pages to see your changes take effect. If you want to test the demos with your own DCN, make sure to update the configuration (hostname and site slug) given to the OptableSDK (see `webpack.config.js` for the react example).
624
+ Then head to [https://localhost:8180/](localhost:8180) to see the demo pages. You can modify the code in each demo, then run `make build` and finally refresh the demo pages to see your changes take effect. If you want to test the demos with your own DCN, make sure to update the configuration (hostname and site slug) given to the OptableSDK (see `webpack.config.js` for the react example).
618
625
 
619
- Note that using HTTP first-party cookies with a local instance of the demos pages pointing to an Optable DCN will not work because [http://localhost:8180/](localhost:8180) does not share the same top-level domain name `.optable.co`. We recommend using [LocalStorage](https://github.com/Optable/optable-web-sdk#localstorage) instead.
626
+ Note that using HTTP first-party cookies with a local instance of the demos pages pointing to an Optable DCN will not work because [https://localhost:8180/](localhost:8180) does not share the same top-level domain name `.optable.co`. We recommend using [LocalStorage](https://github.com/Optable/optable-web-sdk#localstorage) instead.
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see sdk.js.LICENSE.txt */
2
- (()=>{var __webpack_modules__={228:t=>{t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}},858:t=>{t.exports=function(t){if(Array.isArray(t))return t}},646:(t,e,r)=>{var n=r(228);t.exports=function(t){if(Array.isArray(t))return n(t)}},926:t=>{function e(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function s(t){e(a,o,i,s,c,"next",t)}function c(t){e(a,o,i,s,c,"throw",t)}s(void 0)}))}}},575:t=>{t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},913:t=>{function e(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}},713:t=>{t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}},860:t=>{t.exports=function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}},884:t=>{t.exports=function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var r=[],n=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){o=!0,i=t}finally{try{n||null==s.return||s.return()}finally{if(o)throw i}}return r}}},521:t=>{t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},206:t=>{t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},38:(t,e,r)=>{var n=r(858),o=r(884),i=r(379),a=r(521);t.exports=function(t,e){return n(t)||o(t,e)||i(t,e)||a()}},319:(t,e,r)=>{var n=r(646),o=r(860),i=r(379),a=r(206);t.exports=function(t){return n(t)||o(t)||i(t)||a()}},379:(t,e,r)=>{var n=r(228);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}},757:(t,e,r)=>{t.exports=r(666)},820:(t,e,r)=>{"use strict";var n=r(575),o=r.n(n),i=r(913),a=r.n(i);function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}const c=function(){function t(e){if(o()(this,t),this.cmds=e,Array.isArray(this.cmds)){var r,n=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}(this.cmds);try{for(n.s();!(r=n.n()).done;){var i=r.value;"function"==typeof i&&i()}}catch(t){n.e(t)}finally{n.f()}}}return a()(t,[{key:"push",value:function(t){t()}}]),t}();var u=r(757),h=r.n(u),f=r(926),l=r.n(f),p=r(713),y=r.n(p);function d(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function v(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?d(Object(r),!0).forEach((function(e){y()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var _={insecure:!1,cookies:!0};const g="v0.12.2";var b,w=r(38),m=r.n(w),S=r(319),A=r.n(S),E=function(){function t(e){o()(this,t),this.Config=e,y()(this,"passportKey",void 0),y()(this,"targetingV1Key",void 0),y()(this,"targetingKey",void 0);var r=btoa(function(t){for(var e=new Uint16Array(t.length),r=0;r<e.length;r++)e[r]=t.charCodeAt(r);return String.fromCharCode.apply(String,A()(new Uint8Array(e.buffer)))}("".concat(this.Config.host,"/").concat(this.Config.site)));this.targetingV1Key="OPTABLE_TGT_"+r,this.passportKey="OPTABLE_PASS_"+r,this.targetingKey="OPTABLE_V2_TGT_"+r}return a()(t,[{key:"getPassport",value:function(){return window.localStorage.getItem(this.passportKey)}},{key:"getV1Targeting",value:function(){var t=window.localStorage.getItem(this.targetingV1Key),e=t?JSON.parse(t):null;return e?{user:[],audience:Object.entries(e).map((function(t){var e,r=m()(t,2),n=r[0],o=r[1];return{provider:"optable.co",keyspace:n,rtb_segtax:5001,ids:(e=[]).concat.apply(e,[o]).map((function(t){return{id:String(t)}}))}}))}:null}},{key:"getTargeting",value:function(){var t=window.localStorage.getItem(this.targetingKey);return(t?JSON.parse(t):null)||this.getV1Targeting()}},{key:"setPassport",value:function(t){t&&t.length>0&&window.localStorage.setItem(this.passportKey,t)}},{key:"setTargeting",value:function(t){t&&window.localStorage.setItem(this.targetingKey,JSON.stringify(t))}},{key:"clearPassport",value:function(){window.localStorage.removeItem(this.passportKey)}},{key:"clearTargeting",value:function(){window.localStorage.removeItem(this.targetingKey)}}]),t}();function H(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function R(t,e,r){var n=function(t){return v(v({},_),t)}(e),o=n.site,i=n.host,a=n.insecure,s=n.cookies,c=a?"http":"https",u=new URL("".concat(o).concat(t),"".concat(c,"://").concat(i));if(s)u.search=new URLSearchParams({cookies:"yes",osdk:"web-".concat(g)}).toString();else{var h=new E(e).getPassport();u.search=new URLSearchParams({cookies:"no",passport:h||"",osdk:"web-".concat(g)}).toString()}var f=function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?H(Object(r),!0).forEach((function(e){y()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):H(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},r);return f.credentials="include",new Request(u.toString(),f)}function O(t,e,r){return k.apply(this,arguments)}function k(){return(k=l()(h().mark((function t(e,r,n){var o,i,a;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,window.fetch(R(e,r,n));case 2:if(o=t.sent,!(null==(i=o.headers.get("Content-Type"))?void 0:i.startsWith("application/json"))){t.next=10;break}return t.next=7,o.json();case 7:t.t0=t.sent,t.next=13;break;case 10:return t.next=12,o.text();case 12:t.t0=t.sent;case 13:if(a=t.t0,o.ok){t.next=16;break}throw new Error(a.error);case 16:return a.passport&&(new E(r).setPassport(a.passport),delete a.passport),t.abrupt("return",a);case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function C(t,e){return O("/identify",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function I(){return(I=l()(h().mark((function t(e){var r;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,O("/v2/targeting",e,{method:"GET",headers:{"Content-Type":"application/json"}});case 2:return(r=t.sent)&&new E(e).setTargeting(r),t.abrupt("return",r);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function T(t){var e,r;return{user:{data:(null!==(e=null==t?void 0:t.audience)&&void 0!==e?e:[]).map((function(t){return{name:t.provider,segment:t.ids,ext:{segtax:t.rtb_segtax}}})),ext:{eids:(null!==(r=null==t?void 0:t.user)&&void 0!==r?r:[]).map((function(t){return{source:t.provider,uids:t.ids.map((function(t){return{id:t.id,atype:b.PersonID}}))}}))}}}}function j(t){var e,r={};if(!t)return r;var n,o=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return x(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?x(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(null!==(e=t.audience)&&void 0!==e?e:[]);try{for(o.s();!(n=o.n()).done;){var i,a=n.value;a.keyspace&&(a.keyspace in r||(r[a.keyspace]=[]),(i=r[a.keyspace]).push.apply(i,A()(a.ids.map((function(t){return t.id})))))}}catch(t){o.e(t)}finally{o.f()}return r}function X(t,e,r){var n={event:e,properties:r};return O("/witness",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}!function(t){t[t.DeviceID=1]="DeviceID",t[t.InAppImpression=2]="InAppImpression",t[t.PersonID=3]="PersonID"}(b||(b={}));var P=r(23);const L=function(){function t(e){o()(this,t),this.dcn=e,y()(this,"sandbox",void 0),this.sandbox=e}var e,r;return a()(t,[{key:"identify",value:function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return C(this.dcn,e.filter((function(t){return t})))}},{key:"targeting",value:function(){return function(t){return I.apply(this,arguments)}(this.dcn)}},{key:"targetingFromCache",value:function(){return t=this.dcn,new E(t).getTargeting();var t}},{key:"targetingClearCache",value:function(){var t;t=this.dcn,new E(t).clearTargeting()}},{key:"prebidORTB2",value:(r=l()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=T,t.next=3,this.targeting();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)}))),function(){return r.apply(this,arguments)})},{key:"prebidORTB2FromCache",value:function(){return T(this.targetingFromCache())}},{key:"targetingKeyValues",value:(e=l()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=j,t.next=3,this.targeting();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)}))),function(){return e.apply(this,arguments)})},{key:"targetingKeyValuesFromCache",value:function(){return j(this.targetingFromCache())}},{key:"witness",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return X(this.dcn,t,e)}},{key:"profile",value:function(t){return function(t,e){var r={traits:e};return O("/profile",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}(this.dcn,t)}}],[{key:"eid",value:function(t){return t?"e:"+P.sha256.hex(t.toLowerCase().trim()):""}},{key:"cid",value:function(t){return t?"c:"+t.trim():""}},{key:"TargetingKeyValues",value:function(t){return j(t)}},{key:"PrebidORTB2",value:function(t){return T(t)}}]),t}();function F(t){var e,r,n,o,i,a,s,c,u,h;return{advertiserId:null===(e=t.advertiserId)||void 0===e?void 0:e.toString(),campaignId:null===(r=t.campaignId)||void 0===r?void 0:r.toString(),creativeId:null===(n=t.creativeId)||void 0===n?void 0:n.toString(),isEmpty:null===(o=t.isEmpty)||void 0===o?void 0:o.toString(),lineItemId:null===(i=t.lineItemId)||void 0===i?void 0:i.toString(),serviceName:null===(a=t.serviceName)||void 0===a?void 0:a.toString(),size:null===(s=t.size)||void 0===s?void 0:s.toString(),slotElementId:null===(c=t.slot)||void 0===c?void 0:c.getSlotElementId(),sourceAgnosticCreativeId:null===(u=t.sourceAgnosticCreativeId)||void 0===u?void 0:u.toString(),sourceAgnosticLineItemId:null===(h=t.sourceAgnosticLineItemId)||void 0===h?void 0:h.toString()}}function U(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}L.prototype.installGPTEventListeners=function(){var t=this;t.installGPTEventListeners=function(){},window.googletag=window.googletag||{cmd:[]};var e=window.googletag;e.cmd.push((function(){e.pubads().addEventListener("slotRenderEnded",(function(e){t.witness("googletag.events.slotRenderEnded",F(e))})),e.pubads().addEventListener("impressionViewable",(function(e){t.witness("googletag.events.impressionViewable",F(e))}))}))},L.prototype.tryIdentifyFromParams=function(){var t,e=new URLSearchParams(window.location.search),r="",n=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return U(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?U(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e.keys());try{for(n.s();!(t=n.n()).done;){var o=t.value;if(o.match(/^oeid$/i)){r=e.get(o);break}}}catch(t){n.e(t)}finally{n.f()}(function(t){return null!==t.match(/^[a-f0-9]{64}$/i)})(r=r||"")&&this.identify("e:"+r.toLowerCase())},window.optable=window.optable||{},window.optable.SDK=L,window.optable.cmd=new c(window.optable.cmd||[])},23:(module,exports,__webpack_require__)=>{var __WEBPACK_AMD_DEFINE_RESULT__;(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=__webpack_require__.g:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&module.exports,AMD=__webpack_require__.amdO,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];!root.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!ARRAY_BUFFER||!root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t,e){return function(r){return new Sha256(e,!0).update(r)[t]()}},createMethod=function(t){var e=createOutputMethod("hex",t);NODE_JS&&(e=nodeWrap(e,t)),e.create=function(){return new Sha256(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<OUTPUT_TYPES.length;++r){var n=OUTPUT_TYPES[r];e[n]=createOutputMethod(n,t)}return e},nodeWrap=function(method,is224){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),algorithm=is224?"sha224":"sha256",nodeMethod=function(t){if("string"==typeof t)return crypto.createHash(algorithm).update(t,"utf8").digest("hex");if(null==t)throw new Error(ERROR);return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),Array.isArray(t)||ArrayBuffer.isView(t)||t.constructor===Buffer?crypto.createHash(algorithm).update(new Buffer(t)).digest("hex"):method(t)};return nodeMethod},createHmacOutputMethod=function(t,e){return function(r,n){return new HmacSha256(r,e,!0).update(n)[t]()}},createHmacMethod=function(t){var e=createHmacOutputMethod("hex",t);e.create=function(e){return new HmacSha256(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<OUTPUT_TYPES.length;++r){var n=OUTPUT_TYPES[r];e[n]=createHmacOutputMethod(n,t)}return e};function Sha256(t,e){e?(blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t}function HmacSha256(t,e,r){var n,o=typeof t;if("string"===o){var i,a=[],s=t.length,c=0;for(n=0;n<s;++n)(i=t.charCodeAt(n))<128?a[c++]=i:i<2048?(a[c++]=192|i>>6,a[c++]=128|63&i):i<55296||i>=57344?(a[c++]=224|i>>12,a[c++]=128|i>>6&63,a[c++]=128|63&i):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++n)),a[c++]=240|i>>18,a[c++]=128|i>>12&63,a[c++]=128|i>>6&63,a[c++]=128|63&i);t=a}else{if("object"!==o)throw new Error(ERROR);if(null===t)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw new Error(ERROR)}t.length>64&&(t=new Sha256(e,!0).update(t).array());var u=[],h=[];for(n=0;n<64;++n){var f=t[n]||0;u[n]=92^f,h[n]=54^f}Sha256.call(this,e,r),this.update(h),this.oKeyPad=u,this.inner=!0,this.sharedMemory=r}Sha256.prototype.update=function(t){if(!this.finalized){var e,r=typeof t;if("string"!==r){if("object"!==r)throw new Error(ERROR);if(null===t)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw new Error(ERROR);e=!0}for(var n,o,i=0,a=t.length,s=this.blocks;i<a;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,s[16]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=0),e)for(o=this.start;i<a&&o<64;++i)s[o>>2]|=t[i]<<SHIFT[3&o++];else for(o=this.start;i<a&&o<64;++i)(n=t.charCodeAt(i))<128?s[o>>2]|=n<<SHIFT[3&o++]:n<2048?(s[o>>2]|=(192|n>>6)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]):n<55296||n>=57344?(s[o>>2]|=(224|n>>12)<<SHIFT[3&o++],s[o>>2]|=(128|n>>6&63)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]):(n=65536+((1023&n)<<10|1023&t.charCodeAt(++i)),s[o>>2]|=(240|n>>18)<<SHIFT[3&o++],s[o>>2]|=(128|n>>12&63)<<SHIFT[3&o++],s[o>>2]|=(128|n>>6&63)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]);this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.block=s[16],this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var t,e,r,n,o,i,a,s,c,u=this.h0,h=this.h1,f=this.h2,l=this.h3,p=this.h4,y=this.h5,d=this.h6,v=this.h7,_=this.blocks;for(t=16;t<64;++t)e=((o=_[t-15])>>>7|o<<25)^(o>>>18|o<<14)^o>>>3,r=((o=_[t-2])>>>17|o<<15)^(o>>>19|o<<13)^o>>>10,_[t]=_[t-16]+e+_[t-7]+r<<0;for(c=h&f,t=0;t<64;t+=4)this.first?(this.is224?(i=300032,v=(o=_[0]-1413257819)-150054599<<0,l=o+24177077<<0):(i=704751109,v=(o=_[0]-210244248)-1521486534<<0,l=o+143694565<<0),this.first=!1):(e=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),n=(i=u&h)^u&f^c,v=l+(o=v+(r=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7))+(p&y^~p&d)+K[t]+_[t])<<0,l=o+(e+n)<<0),e=(l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),n=(a=l&u)^l&h^i,d=f+(o=d+(r=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&p^~v&y)+K[t+1]+_[t+1])<<0,e=((f=o+(e+n)<<0)>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),n=(s=f&l)^f&u^a,y=h+(o=y+(r=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&v^~d&p)+K[t+2]+_[t+2])<<0,e=((h=o+(e+n)<<0)>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),n=(c=h&f)^h&l^s,p=u+(o=p+(r=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7))+(y&d^~y&v)+K[t+3]+_[t+3])<<0,u=o+(e+n)<<0;this.h0=this.h0+u<<0,this.h1=this.h1+h<<0,this.h2=this.h2+f<<0,this.h3=this.h3+l<<0,this.h4=this.h4+p<<0,this.h5=this.h5+y<<0,this.h6=this.h6+d<<0,this.h7=this.h7+v<<0},Sha256.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,o=this.h4,i=this.h5,a=this.h6,s=this.h7,c=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[15&a];return this.is224||(c+=HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]),c},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,o=this.h4,i=this.h5,a=this.h6,s=this.h7,c=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,o>>24&255,o>>16&255,o>>8&255,255&o,i>>24&255,i>>16&255,i>>8&255,255&i,a>>24&255,a>>16&255,a>>8&255,255&a];return this.is224||c.push(s>>24&255,s>>16&255,s>>8&255,255&s),c},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),e.setUint32(20,this.h5),e.setUint32(24,this.h6),this.is224||e.setUint32(28,this.h7),t},HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()},666:t=>{var e=function(t){"use strict";var e,r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function u(t,e,r,n){var o=e&&e.prototype instanceof v?e:v,i=Object.create(o.prototype),a=new k(n||[]);return i._invoke=function(t,e,r){var n=f;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===y){if("throw"===o)throw i;return x()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=H(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===f)throw n=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var c=h(t,e,r);if("normal"===c.type){if(n=r.done?y:l,c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n=y,r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var f="suspendedStart",l="suspendedYield",p="executing",y="completed",d={};function v(){}function _(){}function g(){}var b={};b[i]=function(){return this};var w=Object.getPrototypeOf,m=w&&w(w(C([])));m&&m!==r&&n.call(m,i)&&(b=m);var S=g.prototype=v.prototype=Object.create(b);function A(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function r(o,i,a,s){var c=h(t[o],t,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==typeof f&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(f).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var o;this._invoke=function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}}function H(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,H(t,r),"throw"===r.method))return d;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var o=h(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,d;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,d):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,d)}function R(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(R,this),this.reset(!0)}function C(t){if(t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}return{next:x}}function x(){return{value:e,done:!0}}return _.prototype=S.constructor=g,g.constructor=_,_.displayName=c(g,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===_||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,g):(t.__proto__=g,c(t,s,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},A(E.prototype),E.prototype[a]=function(){return this},t.AsyncIterator=E,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new E(u(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},A(S),c(S,s,"Generator"),S[i]=function(){return this},S.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=C,k.prototype={constructor:k,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(O),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return s.type="throw",s.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:C(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),d}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__webpack_require__),r.exports}__webpack_require__.amdO={},__webpack_require__.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var __webpack_exports__=__webpack_require__(820)})();
2
+ (()=>{var __webpack_modules__={228:t=>{t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}},858:t=>{t.exports=function(t){if(Array.isArray(t))return t}},646:(t,e,r)=>{var n=r(228);t.exports=function(t){if(Array.isArray(t))return n(t)}},926:t=>{function e(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}t.exports=function(t){return function(){var r=this,n=arguments;return new Promise((function(o,i){var a=t.apply(r,n);function s(t){e(a,o,i,s,c,"next",t)}function c(t){e(a,o,i,s,c,"throw",t)}s(void 0)}))}}},575:t=>{t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},913:t=>{function e(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}t.exports=function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}},713:t=>{t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}},860:t=>{t.exports=function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}},884:t=>{t.exports=function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var r=[],n=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){o=!0,i=t}finally{try{n||null==s.return||s.return()}finally{if(o)throw i}}return r}}},521:t=>{t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},206:t=>{t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},38:(t,e,r)=>{var n=r(858),o=r(884),i=r(379),a=r(521);t.exports=function(t,e){return n(t)||o(t,e)||i(t,e)||a()}},319:(t,e,r)=>{var n=r(646),o=r(860),i=r(379),a=r(206);t.exports=function(t){return n(t)||o(t)||i(t)||a()}},379:(t,e,r)=>{var n=r(228);t.exports=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}},757:(t,e,r)=>{t.exports=r(666)},33:(t,e,r)=>{"use strict";var n=r(575),o=r.n(n),i=r(913),a=r.n(i);function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}const c=function(){function t(e){if(o()(this,t),this.cmds=e,Array.isArray(this.cmds)){var r,n=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}(this.cmds);try{for(n.s();!(r=n.n()).done;){var i=r.value;"function"==typeof i&&i()}}catch(t){n.e(t)}finally{n.f()}}}return a()(t,[{key:"push",value:function(t){t()}}]),t}();var u=r(757),h=r.n(u),l=r(926),f=r.n(l),p=r(713),d=r.n(p);function y(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function v(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?y(Object(r),!0).forEach((function(e){d()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var g={insecure:!1,cookies:!0};const _="v0.13.0";var w,m=r(38),b=r.n(m),S=r(319),A=r.n(S);function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}!function(t){t[t.DeviceID=1]="DeviceID",t[t.InAppImpression=2]="InAppImpression",t[t.PersonID=3]="PersonID"}(w||(w={}));var H="loblawmedia.ca";function R(t){return O.apply(this,arguments)}function O(){return(O=f()(h().mark((function t(e){var r;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,P("/v2/targeting",e,{method:"GET",headers:{"Content-Type":"application/json"}});case 2:return(r=t.sent)&&new C(e).setTargeting(r),t.abrupt("return",r);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function k(t){var e,r;return{user:{data:(null!==(e=null==t?void 0:t.audience)&&void 0!==e?e:[]).map((function(t){return{name:t.provider,segment:t.ids,ext:{segtax:t.rtb_segtax}}})),ext:{eids:(null!==(r=null==t?void 0:t.user)&&void 0!==r?r:[]).map((function(t){return{source:t.provider,uids:t.ids.map((function(t){return{id:t.id,atype:w.PersonID}}))}}))}}}}function x(t){var e,r={};if(!t)return r;var n,o=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return E(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(null!==(e=t.audience)&&void 0!==e?e:[]);try{for(o.s();!(n=o.n()).done;){var i,a=n.value;a.keyspace&&(a.keyspace in r||(r[a.keyspace]=[]),(i=r[a.keyspace]).push.apply(i,A()(a.ids.map((function(t){return t.id})))))}}catch(t){o.e(t)}finally{o.f()}return r}var C=function(){function t(e){o()(this,t),this.Config=e,d()(this,"passportKey",void 0),d()(this,"targetingV1Key",void 0),d()(this,"targetingKey",void 0),d()(this,"lmpidKey",void 0);var r=btoa(function(t){for(var e=new Uint16Array(t.length),r=0;r<e.length;r++)e[r]=t.charCodeAt(r);return String.fromCharCode.apply(String,A()(new Uint8Array(e.buffer)))}("".concat(this.Config.host,"/").concat(this.Config.site)));this.targetingV1Key="OPTABLE_TGT_"+r,this.passportKey="OPTABLE_PASS_"+r,this.targetingKey="OPTABLE_V2_TGT_"+r,this.lmpidKey="__lmpid"}return a()(t,[{key:"getPassport",value:function(){return window.localStorage.getItem(this.passportKey)}},{key:"getV1Targeting",value:function(){var t=window.localStorage.getItem(this.targetingV1Key),e=t?JSON.parse(t):null;return e?{user:[],audience:Object.entries(e).map((function(t){var e,r=b()(t,2),n=r[0],o=r[1];return{provider:"optable.co",keyspace:n,rtb_segtax:5001,ids:(e=[]).concat.apply(e,[o]).map((function(t){return{id:String(t)}}))}}))}:null}},{key:"getTargeting",value:function(){var t=window.localStorage.getItem(this.targetingKey);return(t?JSON.parse(t):null)||this.getV1Targeting()}},{key:"setPassport",value:function(t){t&&t.length>0&&window.localStorage.setItem(this.passportKey,t)}},{key:"setTargeting",value:function(t){t&&(window.localStorage.setItem(this.targetingKey,JSON.stringify(t)),this.setLmpid(t))}},{key:"setLmpid",value:function(t){var e,r,n,o,i=null===(e=t.user)||void 0===e?void 0:e.find((function(t){return t.provider===H}));i&&(window.localStorage.removeItem("_GESPSK-".concat(H)),window.localStorage.setItem(this.lmpidKey,null!==(r=null===(n=i.ids)||void 0===n||null===(o=n[0])||void 0===o?void 0:o.id)&&void 0!==r?r:""))}},{key:"getLmpid",value:function(){var t;return null!==(t=window.localStorage.getItem(this.lmpidKey))&&void 0!==t?t:null}},{key:"clearPassport",value:function(){window.localStorage.removeItem(this.passportKey)}},{key:"clearTargeting",value:function(){window.localStorage.removeItem(this.targetingKey)}}]),t}();function T(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function I(t,e,r){var n=function(t){return v(v({},g),t)}(e),o=n.site,i=n.host,a=n.insecure,s=n.cookies,c=a?"http":"https",u=new URL("".concat(o).concat(t),"".concat(c,"://").concat(i));if(s)u.search=new URLSearchParams({cookies:"yes",osdk:"web-".concat(_)}).toString();else{var h=new C(e).getPassport();u.search=new URLSearchParams({cookies:"no",passport:h||"",osdk:"web-".concat(_)}).toString()}var l=function(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?T(Object(r),!0).forEach((function(e){d()(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):T(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}({},r);return l.credentials="include",new Request(u.toString(),l)}function P(t,e,r){return j.apply(this,arguments)}function j(){return(j=f()(h().mark((function t(e,r,n){var o,i,a;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,window.fetch(I(e,r,n));case 2:if(o=t.sent,!(null==(i=o.headers.get("Content-Type"))?void 0:i.startsWith("application/json"))){t.next=10;break}return t.next=7,o.json();case 7:t.t0=t.sent,t.next=13;break;case 10:return t.next=12,o.text();case 12:t.t0=t.sent;case 13:if(a=t.t0,o.ok){t.next=16;break}throw new Error(a.error);case 16:return a.passport&&(new C(r).setPassport(a.passport),delete a.passport),t.abrupt("return",a);case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function X(t,e){return P("/identify",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}function L(t,e){return P("/uid2/token",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}function F(t){return P("/init",t,{method:"POST",headers:{"Content-Type":"application/json"}})}function U(t){return B.apply(this,arguments)}function B(){return(B=f()(h().mark((function t(e){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,P("/config",e,{method:"GET",headers:{"Content-Type":"application/json"}});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function N(t,e,r){var n={event:e,properties:r};return P("/witness",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}function D(t,e){var r={traits:e};return P("/profile",t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}var K=r(23);const M=function(){function t(e){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];o()(this,t),this.dcn=e,d()(this,"sandbox",void 0),d()(this,"init",void 0),this.sandbox=e,this.init=r?F(e).catch((function(){})):Promise.resolve()}var e,r,n,i,s,c,u,l;return a()(t,[{key:"identify",value:(l=f()(h().mark((function t(){var e,r,n,o=arguments;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.init;case 2:for(e=o.length,r=new Array(e),n=0;n<e;n++)r[n]=o[n];return t.abrupt("return",X(this.dcn,r.filter((function(t){return t}))));case 4:case"end":return t.stop()}}),t,this)}))),function(){return l.apply(this,arguments)})},{key:"uid2Token",value:(u=f()(h().mark((function t(e){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.init;case 2:return t.abrupt("return",L(this.dcn,e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)})},{key:"targeting",value:(c=f()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.init;case 2:return t.abrupt("return",R(this.dcn));case 3:case"end":return t.stop()}}),t,this)}))),function(){return c.apply(this,arguments)})},{key:"targetingFromCache",value:function(){return t=this.dcn,new C(t).getTargeting();var t}},{key:"targetingClearCache",value:function(){var t;t=this.dcn,new C(t).clearTargeting()}},{key:"lmpidFromCache",value:function(){return t=this.dcn,new C(t).getLmpid();var t}},{key:"prebidORTB2",value:(s=f()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=k,t.next=3,this.targeting();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)}))),function(){return s.apply(this,arguments)})},{key:"site",value:(i=f()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",U(this.dcn));case 1:case"end":return t.stop()}}),t,this)}))),function(){return i.apply(this,arguments)})},{key:"prebidORTB2FromCache",value:function(){return k(this.targetingFromCache())}},{key:"targetingKeyValues",value:(n=f()(h().mark((function t(){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=x,t.next=3,this.targeting();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)}))),function(){return n.apply(this,arguments)})},{key:"targetingKeyValuesFromCache",value:function(){return x(this.targetingFromCache())}},{key:"witness",value:(r=f()(h().mark((function t(e){var r,n=arguments;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=n.length>1&&void 0!==n[1]?n[1]:{},t.next=3,this.init;case 3:return t.abrupt("return",N(this.dcn,e,r));case 4:case"end":return t.stop()}}),t,this)}))),function(t){return r.apply(this,arguments)})},{key:"profile",value:(e=f()(h().mark((function t(e){return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.init;case 2:return t.abrupt("return",D(this.dcn,e));case 3:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})}],[{key:"eid",value:function(t){return t?"e:"+K.sha256.hex(t.toLowerCase().trim()):""}},{key:"cid",value:function(t){return t?"c:"+t.trim():""}},{key:"TargetingKeyValues",value:function(t){return x(t)}},{key:"PrebidORTB2",value:function(t){return k(t)}}]),t}();function W(t){var e,r,n,o,i,a,s,c,u,h;return{advertiserId:null===(e=t.advertiserId)||void 0===e?void 0:e.toString(),campaignId:null===(r=t.campaignId)||void 0===r?void 0:r.toString(),creativeId:null===(n=t.creativeId)||void 0===n?void 0:n.toString(),isEmpty:null===(o=t.isEmpty)||void 0===o?void 0:o.toString(),lineItemId:null===(i=t.lineItemId)||void 0===i?void 0:i.toString(),serviceName:null===(a=t.serviceName)||void 0===a?void 0:a.toString(),size:null===(s=t.size)||void 0===s?void 0:s.toString(),slotElementId:null===(c=t.slot)||void 0===c?void 0:c.getSlotElementId(),sourceAgnosticCreativeId:null===(u=t.sourceAgnosticCreativeId)||void 0===u?void 0:u.toString(),sourceAgnosticLineItemId:null===(h=t.sourceAgnosticLineItemId)||void 0===h?void 0:h.toString()}}function J(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}M.prototype.installGPTEventListeners=function(){var t=this;t.installGPTEventListeners=function(){},window.googletag=window.googletag||{cmd:[]};var e=window.googletag;e.cmd.push((function(){e.pubads().addEventListener("slotRenderEnded",(function(e){t.witness("googletag.events.slotRenderEnded",W(e))})),e.pubads().addEventListener("impressionViewable",(function(e){t.witness("googletag.events.impressionViewable",W(e))}))}))},M.prototype.installGPTSecureSignals=function(){var t=this;t.installGPTSecureSignals=function(){},window.googletag=window.googletag||{cmd:[]};var e=window.googletag;e.cmd.push((function(){e.secureSignalProviders||(e.secureSignalProviders=[]),e.secureSignalProviders.push({id:H,collectorFunction:function(){return Promise.resolve(t.lmpidFromCache())}})}))};var G=/^[a-f0-9]{64}$/i;M.prototype.tryIdentifyFromParams=function(t){var e,r=new RegExp("^".concat(t||"oeid","$"),"i"),n="",o=function(t,e){var r;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return J(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?J(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=t[Symbol.iterator]()},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(new URLSearchParams(window.location.search));try{for(o.s();!(e=o.n()).done;){var i=b()(e.value,2),a=i[0],s=i[1];if(r.test(a)){n=s;break}}}catch(t){o.e(t)}finally{o.f()}(function(t){return G.test(t)})(n)&&this.identify("e:"+n.toLowerCase())},M.prototype.joinAdInterestGroup=f()(h().mark((function t(){var e,r,n,o;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=this,t.next=3,e.site();case 3:if(r=t.sent,n=document.createElement("iframe"),r.interestGroupPixel){t.next=7;break}throw"origin not enabled for protected audience apis";case 7:o=new URL(r.interestGroupPixel),n.src=o.toString(),n.allow="join-ad-interest-group "+o.origin,n.style.display="none",document.body.appendChild(n);case 12:case"end":return t.stop()}}),t,this)}))),window.optable=window.optable||{},window.optable.SDK=M,window.optable.cmd=new c(window.optable.cmd||[])},23:(module,exports,__webpack_require__)=>{var __WEBPACK_AMD_DEFINE_RESULT__;(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=__webpack_require__.g:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&module.exports,AMD=__webpack_require__.amdO,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];!root.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!ARRAY_BUFFER||!root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t,e){return function(r){return new Sha256(e,!0).update(r)[t]()}},createMethod=function(t){var e=createOutputMethod("hex",t);NODE_JS&&(e=nodeWrap(e,t)),e.create=function(){return new Sha256(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<OUTPUT_TYPES.length;++r){var n=OUTPUT_TYPES[r];e[n]=createOutputMethod(n,t)}return e},nodeWrap=function(method,is224){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),algorithm=is224?"sha224":"sha256",nodeMethod=function(t){if("string"==typeof t)return crypto.createHash(algorithm).update(t,"utf8").digest("hex");if(null==t)throw new Error(ERROR);return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),Array.isArray(t)||ArrayBuffer.isView(t)||t.constructor===Buffer?crypto.createHash(algorithm).update(new Buffer(t)).digest("hex"):method(t)};return nodeMethod},createHmacOutputMethod=function(t,e){return function(r,n){return new HmacSha256(r,e,!0).update(n)[t]()}},createHmacMethod=function(t){var e=createHmacOutputMethod("hex",t);e.create=function(e){return new HmacSha256(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<OUTPUT_TYPES.length;++r){var n=OUTPUT_TYPES[r];e[n]=createHmacOutputMethod(n,t)}return e};function Sha256(t,e){e?(blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t}function HmacSha256(t,e,r){var n,o=typeof t;if("string"===o){var i,a=[],s=t.length,c=0;for(n=0;n<s;++n)(i=t.charCodeAt(n))<128?a[c++]=i:i<2048?(a[c++]=192|i>>6,a[c++]=128|63&i):i<55296||i>=57344?(a[c++]=224|i>>12,a[c++]=128|i>>6&63,a[c++]=128|63&i):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++n)),a[c++]=240|i>>18,a[c++]=128|i>>12&63,a[c++]=128|i>>6&63,a[c++]=128|63&i);t=a}else{if("object"!==o)throw new Error(ERROR);if(null===t)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw new Error(ERROR)}t.length>64&&(t=new Sha256(e,!0).update(t).array());var u=[],h=[];for(n=0;n<64;++n){var l=t[n]||0;u[n]=92^l,h[n]=54^l}Sha256.call(this,e,r),this.update(h),this.oKeyPad=u,this.inner=!0,this.sharedMemory=r}Sha256.prototype.update=function(t){if(!this.finalized){var e,r=typeof t;if("string"!==r){if("object"!==r)throw new Error(ERROR);if(null===t)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw new Error(ERROR);e=!0}for(var n,o,i=0,a=t.length,s=this.blocks;i<a;){if(this.hashed&&(this.hashed=!1,s[0]=this.block,s[16]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=s[8]=s[9]=s[10]=s[11]=s[12]=s[13]=s[14]=s[15]=0),e)for(o=this.start;i<a&&o<64;++i)s[o>>2]|=t[i]<<SHIFT[3&o++];else for(o=this.start;i<a&&o<64;++i)(n=t.charCodeAt(i))<128?s[o>>2]|=n<<SHIFT[3&o++]:n<2048?(s[o>>2]|=(192|n>>6)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]):n<55296||n>=57344?(s[o>>2]|=(224|n>>12)<<SHIFT[3&o++],s[o>>2]|=(128|n>>6&63)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]):(n=65536+((1023&n)<<10|1023&t.charCodeAt(++i)),s[o>>2]|=(240|n>>18)<<SHIFT[3&o++],s[o>>2]|=(128|n>>12&63)<<SHIFT[3&o++],s[o>>2]|=(128|n>>6&63)<<SHIFT[3&o++],s[o>>2]|=(128|63&n)<<SHIFT[3&o++]);this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.block=s[16],this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[3&e],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var t,e,r,n,o,i,a,s,c,u=this.h0,h=this.h1,l=this.h2,f=this.h3,p=this.h4,d=this.h5,y=this.h6,v=this.h7,g=this.blocks;for(t=16;t<64;++t)e=((o=g[t-15])>>>7|o<<25)^(o>>>18|o<<14)^o>>>3,r=((o=g[t-2])>>>17|o<<15)^(o>>>19|o<<13)^o>>>10,g[t]=g[t-16]+e+g[t-7]+r<<0;for(c=h&l,t=0;t<64;t+=4)this.first?(this.is224?(i=300032,v=(o=g[0]-1413257819)-150054599<<0,f=o+24177077<<0):(i=704751109,v=(o=g[0]-210244248)-1521486534<<0,f=o+143694565<<0),this.first=!1):(e=(u>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),n=(i=u&h)^u&l^c,v=f+(o=v+(r=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7))+(p&d^~p&y)+K[t]+g[t])<<0,f=o+(e+n)<<0),e=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),n=(a=f&u)^f&h^i,y=l+(o=y+(r=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&p^~v&d)+K[t+1]+g[t+1])<<0,e=((l=o+(e+n)<<0)>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),n=(s=l&f)^l&u^a,d=h+(o=d+(r=(y>>>6|y<<26)^(y>>>11|y<<21)^(y>>>25|y<<7))+(y&v^~y&p)+K[t+2]+g[t+2])<<0,e=((h=o+(e+n)<<0)>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10),n=(c=h&l)^h&f^s,p=u+(o=p+(r=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&y^~d&v)+K[t+3]+g[t+3])<<0,u=o+(e+n)<<0;this.h0=this.h0+u<<0,this.h1=this.h1+h<<0,this.h2=this.h2+l<<0,this.h3=this.h3+f<<0,this.h4=this.h4+p<<0,this.h5=this.h5+d<<0,this.h6=this.h6+y<<0,this.h7=this.h7+v<<0},Sha256.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,o=this.h4,i=this.h5,a=this.h6,s=this.h7,c=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[15&a];return this.is224||(c+=HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]),c},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,n=this.h3,o=this.h4,i=this.h5,a=this.h6,s=this.h7,c=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,o>>24&255,o>>16&255,o>>8&255,255&o,i>>24&255,i>>16&255,i>>8&255,255&i,a>>24&255,a>>16&255,a>>8&255,255&a];return this.is224||c.push(s>>24&255,s>>16&255,s>>8&255,255&s),c},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),e.setUint32(20,this.h5),e.setUint32(24,this.h6),this.is224||e.setUint32(28,this.h7),t},HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()},666:t=>{var e=function(t){"use strict";var e,r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function u(t,e,r,n){var o=e&&e.prototype instanceof v?e:v,i=Object.create(o.prototype),a=new k(n||[]);return i._invoke=function(t,e,r){var n=l;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return C()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=H(a,r);if(s){if(s===y)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===l)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var c=h(t,e,r);if("normal"===c.type){if(n=r.done?d:f,c.arg===y)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n=d,r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var l="suspendedStart",f="suspendedYield",p="executing",d="completed",y={};function v(){}function g(){}function _(){}var w={};w[i]=function(){return this};var m=Object.getPrototypeOf,b=m&&m(m(x([])));b&&b!==r&&n.call(b,i)&&(w=b);var S=_.prototype=v.prototype=Object.create(w);function A(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function E(t,e){function r(o,i,a,s){var c=h(t[o],t,i);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var o;this._invoke=function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}}function H(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator.return&&(r.method="return",r.arg=e,H(t,r),"throw"===r.method))return y;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return y}var o=h(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function R(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(R,this),this.reset(!0)}function x(t){if(t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o<t.length;)if(n.call(t,o))return r.value=t[o],r.done=!1,r;return r.value=e,r.done=!0,r};return a.next=a}}return{next:C}}function C(){return{value:e,done:!0}}return g.prototype=S.constructor=_,_.constructor=g,g.displayName=c(_,s,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===g||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,_):(t.__proto__=_,c(t,s,"GeneratorFunction")),t.prototype=Object.create(S),t},t.awrap=function(t){return{__await:t}},A(E.prototype),E.prototype[a]=function(){return this},t.AsyncIterator=E,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new E(u(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},A(S),c(S,s,"Generator"),S[i]=function(){return this},S.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=x,k.prototype={constructor:k,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(O),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function o(n,o){return s.type="throw",s.arg=t,r.next=n,o&&(r.method="next",r.arg=e),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:x(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var r=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t](r,r.exports,__webpack_require__),r.exports}__webpack_require__.amdO={},__webpack_require__.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return __webpack_require__.d(e,{a:e}),e},__webpack_require__.d=(t,e)=>{for(var r in e)__webpack_require__.o(e,r)&&!__webpack_require__.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var __webpack_exports__=__webpack_require__(33)})();
@@ -6,6 +6,7 @@ declare global {
6
6
  declare module "../sdk" {
7
7
  interface OptableSDK {
8
8
  installGPTEventListeners: () => void;
9
+ installGPTSecureSignals: () => void;
9
10
  }
10
11
  }
11
12
  export {};
@@ -1,3 +1,4 @@
1
+ import { lmpidProvider } from "../edge/targeting";
1
2
  import OptableSDK from "../sdk";
2
3
  function toWitnessProperties(event) {
3
4
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
@@ -34,3 +35,25 @@ OptableSDK.prototype.installGPTEventListeners = function () {
34
35
  });
35
36
  });
36
37
  };
38
+ /*
39
+ * installGPTSecureSignals() sets up loblaw media private ID secure signals on GPT from targeting.
40
+ */
41
+ OptableSDK.prototype.installGPTSecureSignals = function () {
42
+ // Next time we get called is a no-op:
43
+ const sdk = this;
44
+ sdk.installGPTSecureSignals = function () { };
45
+ window.googletag = window.googletag || { cmd: [] };
46
+ const gpt = window.googletag;
47
+ gpt.cmd.push(function () {
48
+ if (!gpt.secureSignalProviders) {
49
+ gpt.secureSignalProviders = [];
50
+ }
51
+ // Install lmpid secure signal
52
+ gpt.secureSignalProviders.push({
53
+ id: lmpidProvider,
54
+ collectorFunction: function () {
55
+ return Promise.resolve(sdk.lmpidFromCache());
56
+ },
57
+ });
58
+ });
59
+ };
@@ -0,0 +1,6 @@
1
+ declare module "../sdk" {
2
+ interface OptableSDK {
3
+ joinAdInterestGroup: () => Promise<void>;
4
+ }
5
+ }
6
+ export {};
@@ -0,0 +1,28 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import OptableSDK from "../sdk";
11
+ /*
12
+ * joinAdInterestGroup injects an iframe into the page that tags the device into the site's interest group.
13
+ */
14
+ OptableSDK.prototype.joinAdInterestGroup = function () {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const sdk = this;
17
+ const siteConfig = yield sdk.site();
18
+ const pixel = document.createElement("iframe");
19
+ if (!siteConfig.interestGroupPixel) {
20
+ throw ("origin not enabled for protected audience apis");
21
+ }
22
+ const pixelURL = new URL(siteConfig.interestGroupPixel);
23
+ pixel.src = pixelURL.toString();
24
+ pixel.allow = "join-ad-interest-group " + pixelURL.origin;
25
+ pixel.style.display = "none";
26
+ document.body.appendChild(pixel);
27
+ });
28
+ };
@@ -1,19 +1,20 @@
1
1
  import OptableSDK from "../sdk";
2
+ const eidRegexp = /^[a-f0-9]{64}$/i;
2
3
  function maybeValidEID(eid) {
3
- return eid.match(/^[a-f0-9]{64}$/i) !== null;
4
+ return eidRegexp.test(eid);
4
5
  }
5
- OptableSDK.prototype.tryIdentifyFromParams = function () {
6
- const qstr = new URLSearchParams(window.location.search);
7
- const keys = qstr.keys();
8
- var eid = "";
9
- for (const key of keys) {
10
- if (key.match(/^oeid$/i)) {
11
- eid = qstr.get(key);
6
+ OptableSDK.prototype.tryIdentifyFromParams = function (key) {
7
+ const keyRegexp = new RegExp(`^${key || "oeid"}$`, "i");
8
+ const searchParams = new URLSearchParams(window.location.search);
9
+ let eid = "";
10
+ for (const [key, value] of searchParams) {
11
+ if (keyRegexp.test(key)) {
12
+ eid = value;
12
13
  break;
13
14
  }
14
15
  }
15
- eid = eid || "";
16
- if (maybeValidEID(eid)) {
17
- this.identify("e:" + eid.toLowerCase());
16
+ if (!maybeValidEID(eid)) {
17
+ return;
18
18
  }
19
+ this.identify("e:" + eid.toLowerCase());
19
20
  };
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "v0.12.2"
2
+ "version": "v0.13.0"
3
3
  }
@@ -1,18 +1,22 @@
1
1
  import type { OptableConfig } from "../config";
2
2
  import type { TargetingResponse } from "../edge/targeting";
3
+ import { lmpidProvider } from "../edge/targeting";
3
4
  declare class LocalStorage {
4
5
  private Config;
5
6
  private passportKey;
6
7
  private targetingV1Key;
7
8
  private targetingKey;
9
+ private lmpidKey;
8
10
  constructor(Config: OptableConfig);
9
11
  getPassport(): string | null;
10
12
  getV1Targeting(): TargetingResponse | null;
11
13
  getTargeting(): TargetingResponse | null;
12
14
  setPassport(passport: string): void;
13
- setTargeting(targeting: TargetingResponse): void;
15
+ setTargeting(targeting?: TargetingResponse | null): void;
16
+ setLmpid(targeting: TargetingResponse): void;
17
+ getLmpid(): string | null;
14
18
  clearPassport(): void;
15
19
  clearTargeting(): void;
16
20
  }
17
- export { LocalStorage };
21
+ export { LocalStorage, lmpidProvider };
18
22
  export default LocalStorage;
@@ -1,3 +1,4 @@
1
+ import { lmpidProvider } from "../edge/targeting";
1
2
  function toBinary(str) {
2
3
  const codeUnits = new Uint16Array(str.length);
3
4
  for (let i = 0; i < codeUnits.length; i++) {
@@ -13,6 +14,7 @@ class LocalStorage {
13
14
  this.targetingV1Key = "OPTABLE_TGT_" + sfx;
14
15
  this.passportKey = "OPTABLE_PASS_" + sfx;
15
16
  this.targetingKey = "OPTABLE_V2_TGT_" + sfx;
17
+ this.lmpidKey = "__lmpid";
16
18
  }
17
19
  getPassport() {
18
20
  return window.localStorage.getItem(this.passportKey);
@@ -51,9 +53,33 @@ class LocalStorage {
51
53
  }
52
54
  }
53
55
  setTargeting(targeting) {
54
- if (targeting) {
55
- window.localStorage.setItem(this.targetingKey, JSON.stringify(targeting));
56
+ if (!targeting) {
57
+ return;
56
58
  }
59
+ window.localStorage.setItem(this.targetingKey, JSON.stringify(targeting));
60
+ this.setLmpid(targeting);
61
+ }
62
+ // setLmpid conditionally set the Lmpid in local storage
63
+ // based on the provider being present in the targeting response
64
+ setLmpid(targeting) {
65
+ var _a, _b, _c, _d;
66
+ const provider = (_a = targeting.user) === null || _a === void 0 ? void 0 : _a.find((userIds) => userIds.provider === lmpidProvider);
67
+ // Don't touch local storage if the provider is not enabled
68
+ if (!provider) {
69
+ return;
70
+ }
71
+ // Invalidate the secure signals provider cache as it's unclear
72
+ // for how long the secure signals are cached and while LMPID have a 45 days lifetime receivers
73
+ // may decide to implement short PID lifetimes.
74
+ //
75
+ // HACK: Delete GPT secure signals cache directly for lmpidProvider, this is undocumented and could
76
+ // break in the future.
77
+ window.localStorage.removeItem(`_GESPSK-${lmpidProvider}`);
78
+ window.localStorage.setItem(this.lmpidKey, (_d = (_c = (_b = provider.ids) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : "");
79
+ }
80
+ getLmpid() {
81
+ var _a;
82
+ return (_a = window.localStorage.getItem(this.lmpidKey)) !== null && _a !== void 0 ? _a : null;
57
83
  }
58
84
  clearPassport() {
59
85
  window.localStorage.removeItem(this.passportKey);
@@ -62,5 +88,5 @@ class LocalStorage {
62
88
  window.localStorage.removeItem(this.targetingKey);
63
89
  }
64
90
  }
65
- export { LocalStorage };
91
+ export { LocalStorage, lmpidProvider };
66
92
  export default LocalStorage;
@@ -0,0 +1,4 @@
1
+ import type { OptableConfig } from "../config";
2
+ declare function Init(config: OptableConfig): Promise<void>;
3
+ export { Init };
4
+ export default Init;
@@ -0,0 +1,11 @@
1
+ import { fetch } from "../core/network";
2
+ function Init(config) {
3
+ return fetch("/init", config, {
4
+ method: "POST",
5
+ headers: {
6
+ "Content-Type": "application/json",
7
+ },
8
+ });
9
+ }
10
+ export { Init };
11
+ export default Init;
@@ -0,0 +1,7 @@
1
+ import type { OptableConfig } from "../config";
2
+ declare type SiteResponse = {
3
+ interestGroupPixel: string;
4
+ };
5
+ declare function Site(config: OptableConfig): Promise<SiteResponse>;
6
+ export { Site, SiteResponse };
7
+ export default Site;
@@ -0,0 +1,20 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { fetch } from "../core/network";
11
+ function Site(config) {
12
+ return __awaiter(this, void 0, void 0, function* () {
13
+ return yield fetch("/config", config, {
14
+ method: "GET",
15
+ headers: { "Content-Type": "application/json" },
16
+ });
17
+ });
18
+ }
19
+ export { Site };
20
+ export default Site;
@@ -17,7 +17,9 @@ declare type TargetingResponse = {
17
17
  audience?: AudienceIdentifiers[];
18
18
  user?: UserIdentifiers[];
19
19
  };
20
+ declare const lmpidProvider = "loblawmedia.ca";
20
21
  declare function Targeting(config: OptableConfig): Promise<TargetingResponse>;
22
+ declare function LmpidFromCache(config: OptableConfig): string | null;
21
23
  declare function TargetingFromCache(config: OptableConfig): TargetingResponse | null;
22
24
  declare function TargetingClearCache(config: OptableConfig): void;
23
25
  declare type PrebidORTB2 = {
@@ -28,5 +30,5 @@ declare type TargetingKeyValues = {
28
30
  [key: string]: string[];
29
31
  };
30
32
  declare function TargetingKeyValues(tdata: TargetingResponse | null): TargetingKeyValues;
31
- export { Targeting, TargetingFromCache, TargetingClearCache, TargetingResponse, PrebidORTB2, TargetingKeyValues, };
33
+ export { Targeting, TargetingFromCache, TargetingClearCache, TargetingResponse, PrebidORTB2, TargetingKeyValues, LmpidFromCache, lmpidProvider, };
32
34
  export default Targeting;
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { fetch } from "../core/network";
11
11
  import { LocalStorage } from "../core/storage";
12
12
  import { UIDAgentType } from "./rtb2";
13
+ const lmpidProvider = "loblawmedia.ca";
13
14
  function Targeting(config) {
14
15
  return __awaiter(this, void 0, void 0, function* () {
15
16
  const response = yield fetch("/v2/targeting", config, {
@@ -25,6 +26,10 @@ function Targeting(config) {
25
26
  return response;
26
27
  });
27
28
  }
29
+ function LmpidFromCache(config) {
30
+ const ls = new LocalStorage(config);
31
+ return ls.getLmpid();
32
+ }
28
33
  function TargetingFromCache(config) {
29
34
  const ls = new LocalStorage(config);
30
35
  return ls.getTargeting();
@@ -79,5 +84,5 @@ function TargetingKeyValues(tdata) {
79
84
  }
80
85
  return result;
81
86
  }
82
- export { Targeting, TargetingFromCache, TargetingClearCache, PrebidORTB2, TargetingKeyValues, };
87
+ export { Targeting, TargetingFromCache, TargetingClearCache, PrebidORTB2, TargetingKeyValues, LmpidFromCache, lmpidProvider, };
83
88
  export default Targeting;
@@ -0,0 +1,12 @@
1
+ import type { OptableConfig } from "../config";
2
+ declare type Uid2TokenResponse = {
3
+ advertising_token: string;
4
+ RefreshToken: string;
5
+ IdentityExpires: number;
6
+ RefreshFrom: number;
7
+ RefreshExpires: number;
8
+ RefreshResponseKey: string;
9
+ };
10
+ declare function Uid2Token(config: OptableConfig, id: string): Promise<Uid2TokenResponse>;
11
+ export { Uid2Token };
12
+ export default Uid2Token;
@@ -0,0 +1,12 @@
1
+ import { fetch } from "../core/network";
2
+ function Uid2Token(config, id) {
3
+ return fetch("/uid2/token", config, {
4
+ method: "POST",
5
+ headers: {
6
+ "Content-Type": "application/json",
7
+ },
8
+ body: JSON.stringify(id),
9
+ });
10
+ }
11
+ export { Uid2Token };
12
+ export default Uid2Token;
package/lib/dist/sdk.d.ts CHANGED
@@ -1,16 +1,28 @@
1
1
  import type { OptableConfig } from "./config";
2
2
  import type { WitnessProperties } from "./edge/witness";
3
3
  import type { ProfileTraits } from "./edge/profile";
4
+ import { SiteResponse } from "./edge/site";
4
5
  import { TargetingKeyValues, TargetingResponse, PrebidORTB2 } from "./edge/targeting";
5
6
  declare class OptableSDK {
6
7
  dcn: OptableConfig;
7
8
  sandbox: OptableConfig;
8
- constructor(dcn: OptableConfig);
9
+ private init;
10
+ constructor(dcn: OptableConfig, writePassport?: boolean);
9
11
  identify(...ids: string[]): Promise<void>;
12
+ uid2Token(id: string): Promise<{
13
+ advertising_token: string;
14
+ RefreshToken: string;
15
+ IdentityExpires: number;
16
+ RefreshFrom: number;
17
+ RefreshExpires: number;
18
+ RefreshResponseKey: string;
19
+ }>;
10
20
  targeting(): Promise<TargetingResponse>;
11
21
  targetingFromCache(): TargetingResponse | null;
12
22
  targetingClearCache(): void;
23
+ lmpidFromCache(): string | null;
13
24
  prebidORTB2(): Promise<PrebidORTB2>;
25
+ site(): Promise<SiteResponse>;
14
26
  prebidORTB2FromCache(): PrebidORTB2;
15
27
  targetingKeyValues(): Promise<TargetingKeyValues>;
16
28
  targetingKeyValuesFromCache(): TargetingKeyValues;
package/lib/dist/sdk.js CHANGED
@@ -8,20 +8,36 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { Identify } from "./edge/identify";
11
- import { TargetingKeyValues, Targeting, TargetingFromCache, TargetingClearCache, PrebidORTB2 } from "./edge/targeting";
11
+ import { Uid2Token } from "./edge/uid2_token";
12
+ import { Init } from "./edge/init";
13
+ import { Site } from "./edge/site";
14
+ import { TargetingKeyValues, Targeting, TargetingFromCache, TargetingClearCache, PrebidORTB2, LmpidFromCache } from "./edge/targeting";
12
15
  import { Witness } from "./edge/witness";
13
16
  import { Profile } from "./edge/profile";
14
17
  import { sha256 } from "js-sha256";
15
18
  class OptableSDK {
16
- constructor(dcn) {
19
+ constructor(dcn, writePassport = true) {
17
20
  this.dcn = dcn;
18
21
  this.sandbox = dcn; // legacy
22
+ this.init = writePassport ? Init(dcn).catch(() => { }) : Promise.resolve();
19
23
  }
20
24
  identify(...ids) {
21
- return Identify(this.dcn, ids.filter((id) => id));
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ yield this.init;
27
+ return Identify(this.dcn, ids.filter((id) => id));
28
+ });
29
+ }
30
+ uid2Token(id) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ yield this.init;
33
+ return Uid2Token(this.dcn, id);
34
+ });
22
35
  }
23
36
  targeting() {
24
- return Targeting(this.dcn);
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ yield this.init;
39
+ return Targeting(this.dcn);
40
+ });
25
41
  }
26
42
  targetingFromCache() {
27
43
  return TargetingFromCache(this.dcn);
@@ -29,11 +45,19 @@ class OptableSDK {
29
45
  targetingClearCache() {
30
46
  TargetingClearCache(this.dcn);
31
47
  }
48
+ lmpidFromCache() {
49
+ return LmpidFromCache(this.dcn);
50
+ }
32
51
  prebidORTB2() {
33
52
  return __awaiter(this, void 0, void 0, function* () {
34
53
  return PrebidORTB2(yield this.targeting());
35
54
  });
36
55
  }
56
+ site() {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ return Site(this.dcn);
59
+ });
60
+ }
37
61
  prebidORTB2FromCache() {
38
62
  const tdata = this.targetingFromCache();
39
63
  return PrebidORTB2(tdata);
@@ -48,10 +72,16 @@ class OptableSDK {
48
72
  return TargetingKeyValues(tdata);
49
73
  }
50
74
  witness(event, properties = {}) {
51
- return Witness(this.dcn, event, properties);
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ yield this.init;
77
+ return Witness(this.dcn, event, properties);
78
+ });
52
79
  }
53
80
  profile(traits) {
54
- return Profile(this.dcn, traits);
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ yield this.init;
83
+ return Profile(this.dcn, traits);
84
+ });
55
85
  }
56
86
  static eid(email) {
57
87
  return email ? "e:" + sha256.hex(email.toLowerCase().trim()) : "";
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "repository": "https://github.com/optable/optable-web-sdk",
7
7
  "homepage": "https://optable.co",
8
8
  "license": "SEE LICENSE IN LICENSE",
9
- "version": "v0.12.2",
9
+ "version": "v0.13.0",
10
10
  "devDependencies": {
11
11
  "@babel/core": "^7.12.3",
12
12
  "@babel/plugin-proposal-class-properties": "^7.12.1",