{"version":3,"file":"./js/ncui.js","mappings":"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ACob,EAxKR,UAwKuB,CAG7B,uBACA,8DAEA,qDACA,kCACA,2BAGA,oLAEA,uBACG,CAACA,EAAMpb,GAAU,CACpB,qDACG,CAACA,EAAS,CAACob,EAAM,cAAgB,CACpC,wBACG,CAACpb,EAAS,CAACob,EAAM,wBAAyB,CAC7C,8BACG,CAACpb,EAAS,CAACob,EAAM,WAAY,CAChC,yBACG,CAACpb,EAAS,CAACob,EAAM,cAAe,CACnC,+CACG,CAACpb,EAAS,CAACob,EAAM,OAAQ,CAC5B,yBACG,CAACpb,EAAS,CAACob,EAAM,WAAY,CAChC,2BACG,CAAC,CAACA,EAAM,OAAQ,qBAAuBpb,GAAU,CACpD,uBACG,CAACA,EAAS,CAACob,EAAM85B,kBAAoB,CACxC,qBACG,CAACl1C,EAAS,CAACob,EAAM65B,gBAAkB,CACtC,0BACG,CAACj1C,EAAS,CAACob,EAAM,YAAa,CACjC,sBACG,CAACpb,EAAS,CAACob,EAAM,YAAa,CACjC,qBACG,CAACpb,EAAS,CAACob,EAAM65B,gBAAkB,CACtC,2BACG,CAACj1C,EAAS,CAACob,EAAM,iBAAmB,CACvC,sBACG,CAACpb,EAAS,CAACob,EAxNR,YAwNyB,CAC/B,iCACG,CAAC,CAACA,EAAM,gBAAkB,CAC7B,gDACG,CAAC,CAACA,EAAM,OAAQ,cAAgBpb,GAAU,CAC7C,+BACG,CAAC,CAACob,EAAM,KAAM,KAAMpb,GAAU,CACjC,gCACA,iDACA,0DACG,CAACob,EAAMpb,GAAU,CACpB,2BACA,gBACG,CAACob,GAAO,CAGX,+DACG,CAAC,CAACA,EAAM+4B,GAAWn0C,GAAU,CAChC,4BACA,4BACA,wCACG,CAACob,EAAMpb,GAAU,CACpB,gCACG,CAACA,EAAS,CAACob,EAAM,QAAS,CAE7B,oCACG,CAACpb,EAAS,CAACob,EAAM+5B,oBAAsB,CAE1C,+BACG,CAAC,CAAC/5B,EAAM+5B,kBAAoBn1C,GAAU,CAEzC,2DACG,CAACA,EAAS,CAACob,EAAM,oBAAsB,CAE1C,+DACG,CAACA,EAAMpb,GAAU,CAEpB,8CACG,CAACA,EAAS,CAACob,EAAM,kBAAmB,CACvC,iDACG,CAACpb,EAASob,GAAO,CACpB,gDACG,CAACA,EAAM,CAACpb,EAAS80C,EAjIT,CACX,MAAU,KACV,IAAU,KACV,IAAU,KACV,MAAU,OACV,QAAU,OACV,QAAU,OACV,QAAU,OACV,IAAU,OAyHqC,CAE/C,8BACG,CAAC15B,EAAMpb,GAAU,CAGpB,wCACG,CAAC,CAACob,EAAM,YAAapb,GAAU,CAClC,uCACG,CAACA,EAAS,CAACob,EAAM85B,oBAAsB,CAC1C,6BACA,cACA,mGAEA,+FAEA,wBACA,2CAGA,wHAEA,wBACG,CAAC95B,EAAMpb,IAGdo1C,IAAM,CAAC,CAEH,iDACG,CAAC,CAACrC,EAAc,UAAW,CAE9B,gBACG,CAAC,CAACA,EAAcyB,IAAY,CAE/B,0BACG,CAAC,CAACzB,EAAc,SAAU,CAE7B,oCACG,CAAC,CAACA,EAAc,UAAW,CAE9B,mCACG,CAAC,CAACA,EAAc,UAAW,CAG9B,8BACG,CAAC,CAACA,EAAc,QAAS,CAE5B,0CACG,CAAC,CAACA,EAAc,OA9UT,GA8UwByB,IAAY,CAE9C,kBACG,CAAC,CAACzB,EAAc,UAAW,CAE9B,2HAEG,CAAC,CAACA,EAAcyB,KAGvBa,OAAS,CAAC,CAQN,kFACG,CAACxC,EAAO,CAACC,EAAQiB,GAAU,CAACliC,EAAMqhC,IAAU,CAC/C,0CACA,uBACA,iBACG,CAACL,EAAO,CAACC,EAAQiB,GAAU,CAACliC,EAAMohC,IAAU,CAG/C,6BACG,CAACJ,EAAO,CAACC,EAAQS,GAAQ,CAAC1hC,EAAMohC,IAAU,CAC7C,6BACA,oCACA,kCACG,CAACJ,EAAO,CAACC,EAAQS,GAAQ,CAAC1hC,EAAMqhC,IAAU,CAG7C,+DACG,CAACL,EAAO,CAACC,EAAQa,GAAS,CAAC9hC,EAAMqhC,IAAU,CAC9C,kCACA,qEACG,CAACL,EAAO,CAACC,EAAQa,GAAS,CAAC9hC,EAAMohC,IAAU,CAG9C,6BACA,yBACA,uCACA,iDACA,sGACG,CAAC,CAACJ,EAAO,KAAM,KAAM,CAACC,EAAQmB,GAAS,CAACpiC,EAAMohC,IAAU,CAC3D,8CACE,CAAC,CAACJ,EAAO,KAAM,KAAM,CAACC,EAAQmB,GAAS,CAACpiC,EAAMqhC,IAAU,CAG1D,sBACA,mEACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMohC,IAAU,CAG9C,yBACA,oCACG,CAACJ,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMohC,IAAU,CAG9C,kCACG,CAACJ,EAAO,CAACC,EAAQ,UAAW,CAACjhC,EAAMohC,IAAU,CAGhD,iFACA,4BACA,sDACG,CAACJ,EAAO,CAACC,EAAQgB,GAAW,CAACjiC,EAAMohC,IAAU,CAChD,qCACG,CAACJ,EAAO,CAACC,EAAQgB,GAAW,CAACjiC,EAAMqhC,IAAU,CAGhD,iEACG,CAACL,EAAO,CAACC,EAAQc,GAAK,CAAC/hC,EAAMqhC,IAAU,CAC1C,sDACA,oDACA,wBACG,CAACL,EAAO,CAACC,EAAQc,GAAK,CAAC/hC,EAAMohC,IAAU,CAG1C,oBACA,qEACG,CAACJ,EAAO,CAACC,EAAQ,UAAW,CAACjhC,EAAMqhC,IAAU,CAGhD,qCACA,0BACG,CAAC,CAACL,EAAO,KAAM,KAAM,CAACC,EAAQ,SAAU,CAACjhC,EAAMohC,IAAU,CAG5D,gBACG,CAACJ,EAAO,CAACC,EAAQY,GAAS,CAAC7hC,EAAMqhC,IAAU,CAC9C,6CACG,CAACL,EAAO,CAACC,EAAQY,GAAS,CAAC7hC,EAAMohC,IAAU,CAG9C,2FACG,CAACJ,EAAO,CAACC,EAAQkB,GAAO,CAACniC,EAAMohC,IAAU,CAC5C,oBACA,iCACG,CAAC,CAACJ,EAAO,iBAAkB,CAACC,EAAQkB,GAAO,CAACniC,EAAMqhC,IAAU,CAG/D,sCACA,0CACG,CAACL,EAAO,CAACC,EAAQ,WAAY,CAACjhC,EAAMohC,IAAU,CAGjD,eACA,2BACA,gCACG,CAACJ,EAAO,CAACC,EAAQQ,GAAS,CAACzhC,EAAMqhC,IAAU,CAC9C,iDACG,CAAC,CAACL,EAAO,QAAS,iBAAkB,CAACC,EAAQQ,GAAS,CAACzhC,EAAMohC,IAAU,CAG1E,gCACG,CAACJ,EAAOC,EAAQ,CAACjhC,EAAMqhC,IAAU,CACpC,gCACA,kBACG,CAACL,EAAO,CAACC,EAAQW,GAAa,CAAC5hC,EAAMohC,IAAU,CAGlD,qFACG,CAACJ,EAAO,CAACC,EAAQU,GAAO,CAAC3hC,EAAMqhC,IAAU,CAC5C,iDACG,CAACL,EAAO,CAACC,EAAQU,GAAO,CAAC3hC,EAAMohC,IAAU,CAG5C,cACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACjhC,EAAMqhC,IAAU,CAC7C,2CAGA,oCACA,6DACG,CAACJ,EAAQ,CAACD,EAAO,KAAM,KAAM,CAAChhC,EAAMohC,IAAU,CAGjD,uCACG,CAACJ,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMqhC,IAAU,CAG9C,8BACA,qBACG,CAACL,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMohC,IAAU,CAG/C,iCACG,CAACJ,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMohC,IAAU,CAG/C,kGAEA,mBACA,iBACA,8BACA,0BACA,WACA,yBACG,CAACH,EAAQD,EAAO,CAAChhC,EAAMohC,IAAU,CAEpC,wBACA,uCACA,uBACA,4BACA,iCACA,kCACA,8BACA,gCACA,mCACG,CAACH,EAAQD,EAAO,CAAChhC,EAAMqhC,IAAU,CAEpC,kBACG,CAACL,EAAO,CAACC,EAAQe,GAAY,CAAChiC,EAAMqhC,IAAU,CACjD,qCACG,CAACL,EAAO,CAACC,EAAQ,aAAc,CAACjhC,EAAMohC,IAAU,CACnD,aACG,CAACJ,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMohC,IAAU,CAC9C,gBACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACjhC,EAAMohC,IAAU,CACjD,iBACG,CAACJ,EAAO,CAACC,EAAQ,OAAQ,CAACjhC,EAAMqhC,IAAU,CAC7C,0BACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMqhC,IAAU,CAC9C,wBACG,CAACL,EAAO,CAACC,EAAQ,WAAY,CAACjhC,EAAMqhC,IAAU,CACjD,+CACG,CAACL,EAAO,CAACC,EAAQ,kBAAmB,CAACjhC,EAAMqhC,IAAU,CACxD,qBACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACjhC,EAAMqhC,IAAU,CAClD,cACG,CAACL,EAAO,CAACC,EAAQ,OAAQ,CAACjhC,EAAMqhC,IAAU,CAC7C,mBACG,CAACL,EAAO,CAACC,EAAQ,OAAQ,CAACjhC,EAAMohC,IAAU,CAC7C,wBACG,CAACJ,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMohC,IAAU,CAC/C,mBACG,CAACJ,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMqhC,IAAU,CAC/C,wBACG,CAACL,EAAO,CAACC,EAAQ,QAAS,CAACjhC,EAAMqhC,IAAU,CAC9C,mBACA,sCACG,CAAC,CAACJ,EAAQ,gBAAiBD,EAAO,CAAChhC,EAAMqhC,IAAU,CACtD,sBACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACjhC,EAAMqhC,IAAU,CAClD,8BACG,CAACL,EAAO,CAACC,EAAQ,YAAa,CAACjhC,EAAMqhC,IAAU,CAClD,oDACG,CAAC,CAACJ,EAAQ,SAAUD,EAAO,CAAChhC,EAAMohC,IAAU,CAC/C,2BACG,CAAC,CAACH,EAAQ,SAAUD,EAAO,CAAChhC,EAAMohC,IAAU,CAC/C,cACG,CAACJ,EAAO,CAACC,EAAQ,aAAc,CAACjhC,EAAMohC,IAAU,CACnD,uCACG,CAACJ,EAAO,CAACC,EAAQ,WAAY,CAACjhC,EAAMqhC,IAAU,CACjD,wBACG,CAACL,EAAO,CAACC,EAAQ,aAAc,CAACjhC,EAAMqhC,IAAU,CACnD,kBACG,CAACL,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMqhC,IAAU,CAC/C,qBACG,CAACL,EAAO,CAACC,EAAQ,UAAW,CAACjhC,EAAMqhC,IAAU,CAChD,mBACG,CAACJ,EAAQD,EAAO,CAAChhC,EAAMohC,IAAU,CACpC,sBACG,CAAC,CAACJ,EAAO,MAAO,KAAM,CAACC,EAAQe,GAAY,CAAChiC,EAAMohC,IAAU,CAC/D,yDACG,CAACJ,EAAO,CAACC,EAAQoB,GAAQ,CAACriC,EAAMqhC,IAAU,CAC7C,yCACG,CAACL,EAAO,CAACC,EAAQoB,GAAQ,CAACriC,EAAMohC,IAAU,CAM7C,UACA,8BACG,CAACH,EAAQD,EAAO,CAAChhC,EAAMmhC,IAAW,CACrC,0BACG,CAACH,EAAO,CAACC,EAAQ,UAAW,CAACjhC,EAAMmhC,IAAW,CACjD,mCACG,CAACH,EAAO,CAACC,EAAQkB,GAAO,CAACniC,EAAMmhC,IAAW,CAC7C,sCACG,CAACH,EAAO,CAACC,EAAQe,GAAY,CAAChiC,EAAMmhC,IAAW,CAMlD,wBACG,CAACF,EAAQ,CAACjhC,EAAMshC,IAAW,CAC9B,uBACG,CAAC,CAACN,EAAO,IAAK,WAAY,CAACC,EAAQiB,GAAU,CAACliC,EAAMshC,IAAW,CAClE,8DACG,CAAC,CAACL,EAAQc,GAAK,CAAC/hC,EAAMshC,IAAW,CACpC,gBACG,CAACL,EAAQ,CAACD,EAAOU,YAAc,CAAC1hC,EAAMshC,IAAW,CACpD,UACG,CAAC,CAACN,EAAOsC,cAAgB,CAACrC,EAAQY,GAAS,CAAC7hC,EAAMshC,IAAW,CAChE,4BACG,CAACN,EAAO,CAACC,EAAQQ,GAAS,CAACzhC,EAAMshC,IAAW,CAC/C,wBACG,CAACN,EAAO,CAACC,EAAQ,SAAU,CAACjhC,EAAMshC,IAAW,CAChD,0CACA,uDACG,CAAC,CAACL,EAAQhrC,GAAO,CAAC+qC,EAAO/qC,GAAO,CAAC+J,EAAMshC,IAAW,CACrD,mDACG,CAAC,CAACthC,EAAMshC,IAAW,CAMtB,kBACG,CAACL,EAAQD,EAAO,CAAChhC,EAAMuhC,IAAY,CACtC,wBACG,CAACP,EAAO,CAACC,EAAQY,GAAS,CAAC7hC,EAAMuhC,IAAY,CAChD,6BACG,CAACP,EAAO,CAACC,EAAQoB,GAAQ,CAACriC,EAAMuhC,IAAY,CAC/C,iBACG,CAACP,EAAO,CAACC,EAAQqB,GAAW,CAACtiC,EAAMuhC,IAAY,CAMlD,wCACG,CAACN,EAAQ,CAACjhC,EAAMwhC,IAAY,CAM/B,2DACG,CAACR,EAAO,CAAChhC,EAAMohC,IAAU,CAC5B,+DACG,CAACJ,EAAO,CAAChhC,EAAMqhC,IAAU,CAC5B,gDACG,CAAC,CAACrhC,EAAMqhC,IAAU,CACrB,wDACG,CAAC,CAACrhC,EAAMohC,IAAU,CACrB,kCACG,CAACJ,EAAO,CAACC,EAAQ,aAGxB/kC,OAAS,CAAC,CAEN,8BACG,CAAC/N,EAAS,CAACob,EAAMk6B,aAAe,CAEnC,6CACG,CAACt1C,EAAS,CAACob,EAAM,UAAW,CAE/B,uBACA,sEACA,0BACA,yCACA,+BACG,CAACA,EAAMpb,GAAU,CAEpB,iCACG,CAACA,EAASob,IAGjBg2B,GAAK,CAAC,CAGF,mCACG,CAACh2B,EAAMpb,GAAU,CACpB,4BACA,wDACA,8CACG,CAACob,EAAM,CAACpb,EAAS80C,EAAWC,IAAqB,CACpD,sCACG,CAAC,CAAC35B,EAAM,WAAY,CAACpb,EAAS80C,EAAWC,IAAqB,CAGjE,sDACA,wBACG,CAAC,CAAC/0C,EAAS,KAAM,KAAM,CAACob,EAAM,QAAS,CAC1C,0BACA,yCACG,CAAC,CAACA,EAAM,UAAW,CAACpb,EAAS,KAAM,MAAO,CAG7C,wCACG,CAACA,EAASob,GAAO,CACpB,+EACA,8BACA,+BACA,kBACG,CAACA,EAAMpb,GAAU,CACpB,cACG,CAACA,EAAS,CAACob,EAAMq4B,IAAc,CAClC,6DACG,CAACzzC,EAAS,CAACob,EAAM,YAAa,CACjC,mFACG,CAACpb,EAAS,CAACob,EAAM85B,eAAiB,CACrC,kBACA,wCACG,CAACl1C,EAAS,CAACob,EAAM,UAAW,CAG/B,qBACG,CAACpb,EAAS,CAACob,EAAM+5B,eAAiB,CACrC,6BACG,CAAC,CAAC/5B,EAAM,eAAgBpb,GAAS,CAGpC,mDACA,2BAGA,wCACA,yBACA,4BACA,8SAEA,2BACA,oBACA,6EACA,kBACG,CAACob,EAAMpb,GAAU,CACpB,yBACG,CAAC,CAACob,EAAM,WAAYpb,GAAU,CACjC,sCACA,kCACA,wDACA,sBACG,CAACob,EAAMpb,KAQdu1C,EAAW,SAAU3F,EAAI4F,GAOzB,UALW5F,IAAO+C,IACd6C,EAAa5F,EACbA,EAAK5xC,KAGHsC,gBAAgBi1C,GAClB,OAAO,IAAIA,EAA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","sources":["webpack:///../node_modules/axios/index.js","webpack:///../node_modules/axios/lib/adapters/xhr.js","webpack:///../node_modules/axios/lib/axios.js","webpack:///../node_modules/axios/lib/cancel/Cancel.js","webpack:///../node_modules/axios/lib/cancel/CancelToken.js","webpack:///../node_modules/axios/lib/cancel/isCancel.js","webpack:///../node_modules/axios/lib/core/Axios.js","webpack:///../node_modules/axios/lib/core/InterceptorManager.js","webpack:///../node_modules/axios/lib/core/buildFullPath.js","webpack:///../node_modules/axios/lib/core/createError.js","webpack:///../node_modules/axios/lib/core/dispatchRequest.js","webpack:///../node_modules/axios/lib/core/enhanceError.js","webpack:///../node_modules/axios/lib/core/mergeConfig.js","webpack:///../node_modules/axios/lib/core/settle.js","webpack:///../node_modules/axios/lib/core/transformData.js","webpack:///../node_modules/axios/lib/defaults/index.js","webpack:///../node_modules/axios/lib/defaults/transitional.js","webpack:///../node_modules/axios/lib/env/data.js","webpack:///../node_modules/axios/lib/helpers/bind.js","webpack:///../node_modules/axios/lib/helpers/buildURL.js","webpack:///../node_modules/axios/lib/helpers/combineURLs.js","webpack:///../node_modules/axios/lib/helpers/cookies.js","webpack:///../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///../node_modules/axios/lib/helpers/isAxiosError.js","webpack:///../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///../node_modules/axios/lib/helpers/parseHeaders.js","webpack:///../node_modules/axios/lib/helpers/spread.js","webpack:///../node_modules/axios/lib/helpers/validator.js","webpack:///../node_modules/axios/lib/utils.js","webpack:///../node_modules/component-query/index.js","webpack:///../node_modules/cookie-cutter/index.js","webpack:///../node_modules/core-js/internals/a-callable.js","webpack:///../node_modules/core-js/internals/a-constructor.js","webpack:///../node_modules/core-js/internals/a-possible-prototype.js","webpack:///../node_modules/core-js/internals/add-to-unscopables.js","webpack:///../node_modules/core-js/internals/advance-string-index.js","webpack:///../node_modules/core-js/internals/an-instance.js","webpack:///../node_modules/core-js/internals/an-object.js","webpack:///../node_modules/core-js/internals/array-buffer-non-extensible.js","webpack:///../node_modules/core-js/internals/array-fill.js","webpack:///../node_modules/core-js/internals/array-for-each.js","webpack:///../node_modules/core-js/internals/array-from.js","webpack:///../node_modules/core-js/internals/array-includes.js","webpack:///../node_modules/core-js/internals/array-iteration.js","webpack:///../node_modules/core-js/internals/array-method-has-species-support.js","webpack:///../node_modules/core-js/internals/array-method-is-strict.js","webpack:///../node_modules/core-js/internals/array-reduce.js","webpack:///../node_modules/core-js/internals/array-slice-simple.js","webpack:///../node_modules/core-js/internals/array-slice.js","webpack:///../node_modules/core-js/internals/array-sort.js","webpack:///../node_modules/core-js/internals/array-species-constructor.js","webpack:///../node_modules/core-js/internals/array-species-create.js","webpack:///../node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///../node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///../node_modules/core-js/internals/classof-raw.js","webpack:///../node_modules/core-js/internals/classof.js","webpack:///../node_modules/core-js/internals/collection-strong.js","webpack:///../node_modules/core-js/internals/collection.js","webpack:///../node_modules/core-js/internals/copy-constructor-properties.js","webpack:///../node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///../node_modules/core-js/internals/correct-prototype-getter.js","webpack:///../node_modules/core-js/internals/create-html.js","webpack:///../node_modules/core-js/internals/create-iterator-constructor.js","webpack:///../node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///../node_modules/core-js/internals/create-property-descriptor.js","webpack:///../node_modules/core-js/internals/create-property.js","webpack:///../node_modules/core-js/internals/define-iterator.js","webpack:///../node_modules/core-js/internals/define-well-known-symbol.js","webpack:///../node_modules/core-js/internals/descriptors.js","webpack:///../node_modules/core-js/internals/document-create-element.js","webpack:///../node_modules/core-js/internals/dom-iterables.js","webpack:///../node_modules/core-js/internals/dom-token-list-prototype.js","webpack:///../node_modules/core-js/internals/engine-ff-version.js","webpack:///../node_modules/core-js/internals/engine-is-browser.js","webpack:///../node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack:///../node_modules/core-js/internals/engine-is-ios-pebble.js","webpack:///../node_modules/core-js/internals/engine-is-ios.js","webpack:///../node_modules/core-js/internals/engine-is-node.js","webpack:///../node_modules/core-js/internals/engine-is-webos-webkit.js","webpack:///../node_modules/core-js/internals/engine-user-agent.js","webpack:///../node_modules/core-js/internals/engine-v8-version.js","webpack:///../node_modules/core-js/internals/engine-webkit-version.js","webpack:///../node_modules/core-js/internals/enum-bug-keys.js","webpack:///../node_modules/core-js/internals/export.js","webpack:///../node_modules/core-js/internals/fails.js","webpack:///../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///../node_modules/core-js/internals/flatten-into-array.js","webpack:///../node_modules/core-js/internals/freezing.js","webpack:///../node_modules/core-js/internals/function-apply.js","webpack:///../node_modules/core-js/internals/function-bind-context.js","webpack:///../node_modules/core-js/internals/function-bind-native.js","webpack:///../node_modules/core-js/internals/function-bind.js","webpack:///../node_modules/core-js/internals/function-call.js","webpack:///../node_modules/core-js/internals/function-name.js","webpack:///../node_modules/core-js/internals/function-uncurry-this.js","webpack:///../node_modules/core-js/internals/get-built-in.js","webpack:///../node_modules/core-js/internals/get-iterator-method.js","webpack:///../node_modules/core-js/internals/get-iterator.js","webpack:///../node_modules/core-js/internals/get-method.js","webpack:///../node_modules/core-js/internals/get-substitution.js","webpack:///../node_modules/core-js/internals/global.js","webpack:///../node_modules/core-js/internals/has-own-property.js","webpack:///../node_modules/core-js/internals/hidden-keys.js","webpack:///../node_modules/core-js/internals/host-report-errors.js","webpack:///../node_modules/core-js/internals/html.js","webpack:///../node_modules/core-js/internals/ie8-dom-define.js","webpack:///../node_modules/core-js/internals/indexed-object.js","webpack:///../node_modules/core-js/internals/inherit-if-required.js","webpack:///../node_modules/core-js/internals/inspect-source.js","webpack:///../node_modules/core-js/internals/internal-metadata.js","webpack:///../node_modules/core-js/internals/internal-state.js","webpack:///../node_modules/core-js/internals/is-array-iterator-method.js","webpack:///../node_modules/core-js/internals/is-array.js","webpack:///../node_modules/core-js/internals/is-callable.js","webpack:///../node_modules/core-js/internals/is-constructor.js","webpack:///../node_modules/core-js/internals/is-forced.js","webpack:///../node_modules/core-js/internals/is-object.js","webpack:///../node_modules/core-js/internals/is-pure.js","webpack:///../node_modules/core-js/internals/is-regexp.js","webpack:///../node_modules/core-js/internals/is-symbol.js","webpack:///../node_modules/core-js/internals/iterate.js","webpack:///../node_modules/core-js/internals/iterator-close.js","webpack:///../node_modules/core-js/internals/iterators-core.js","webpack:///../node_modules/core-js/internals/iterators.js","webpack:///../node_modules/core-js/internals/length-of-array-like.js","webpack:///../node_modules/core-js/internals/microtask.js","webpack:///../node_modules/core-js/internals/native-promise-constructor.js","webpack:///../node_modules/core-js/internals/native-symbol.js","webpack:///../node_modules/core-js/internals/native-weak-map.js","webpack:///../node_modules/core-js/internals/new-promise-capability.js","webpack:///../node_modules/core-js/internals/not-a-regexp.js","webpack:///../node_modules/core-js/internals/number-parse-float.js","webpack:///../node_modules/core-js/internals/number-parse-int.js","webpack:///../node_modules/core-js/internals/object-assign.js","webpack:///../node_modules/core-js/internals/object-create.js","webpack:///../node_modules/core-js/internals/object-define-properties.js","webpack:///../node_modules/core-js/internals/object-define-property.js","webpack:///../node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///../node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///../node_modules/core-js/internals/object-get-own-property-names.js","webpack:///../node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///../node_modules/core-js/internals/object-get-prototype-of.js","webpack:///../node_modules/core-js/internals/object-is-extensible.js","webpack:///../node_modules/core-js/internals/object-is-prototype-of.js","webpack:///../node_modules/core-js/internals/object-keys-internal.js","webpack:///../node_modules/core-js/internals/object-keys.js","webpack:///../node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///../node_modules/core-js/internals/object-set-prototype-of.js","webpack:///../node_modules/core-js/internals/object-to-array.js","webpack:///../node_modules/core-js/internals/object-to-string.js","webpack:///../node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///../node_modules/core-js/internals/own-keys.js","webpack:///../node_modules/core-js/internals/path.js","webpack:///../node_modules/core-js/internals/perform.js","webpack:///../node_modules/core-js/internals/promise-resolve.js","webpack:///../node_modules/core-js/internals/queue.js","webpack:///../node_modules/core-js/internals/redefine-all.js","webpack:///../node_modules/core-js/internals/redefine.js","webpack:///../node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///../node_modules/core-js/internals/regexp-exec.js","webpack:///../node_modules/core-js/internals/regexp-flags.js","webpack:///../node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///../node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack:///../node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack:///../node_modules/core-js/internals/require-object-coercible.js","webpack:///../node_modules/core-js/internals/same-value.js","webpack:///../node_modules/core-js/internals/set-global.js","webpack:///../node_modules/core-js/internals/set-species.js","webpack:///../node_modules/core-js/internals/set-to-string-tag.js","webpack:///../node_modules/core-js/internals/shared-key.js","webpack:///../node_modules/core-js/internals/shared-store.js","webpack:///../node_modules/core-js/internals/shared.js","webpack:///../node_modules/core-js/internals/species-constructor.js","webpack:///../node_modules/core-js/internals/string-html-forced.js","webpack:///../node_modules/core-js/internals/string-multibyte.js","webpack:///../node_modules/core-js/internals/string-trim-forced.js","webpack:///../node_modules/core-js/internals/string-trim.js","webpack:///../node_modules/core-js/internals/task.js","webpack:///../node_modules/core-js/internals/this-number-value.js","webpack:///../node_modules/core-js/internals/to-absolute-index.js","webpack:///../node_modules/core-js/internals/to-indexed-object.js","webpack:///../node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///../node_modules/core-js/internals/to-length.js","webpack:///../node_modules/core-js/internals/to-object.js","webpack:///../node_modules/core-js/internals/to-primitive.js","webpack:///../node_modules/core-js/internals/to-property-key.js","webpack:///../node_modules/core-js/internals/to-string-tag-support.js","webpack:///../node_modules/core-js/internals/to-string.js","webpack:///../node_modules/core-js/internals/try-to-string.js","webpack:///../node_modules/core-js/internals/uid.js","webpack:///../node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///../node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///../node_modules/core-js/internals/validate-arguments-length.js","webpack:///../node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///../node_modules/core-js/internals/well-known-symbol.js","webpack:///../node_modules/core-js/internals/whitespaces.js","webpack:///../node_modules/core-js/modules/es.array.concat.js","webpack:///../node_modules/core-js/modules/es.array.every.js","webpack:///../node_modules/core-js/modules/es.array.fill.js","webpack:///../node_modules/core-js/modules/es.array.filter.js","webpack:///../node_modules/core-js/modules/es.array.find-index.js","webpack:///../node_modules/core-js/modules/es.array.find.js","webpack:///../node_modules/core-js/modules/es.array.flat.js","webpack:///../node_modules/core-js/modules/es.array.for-each.js","webpack:///../node_modules/core-js/modules/es.array.from.js","webpack:///../node_modules/core-js/modules/es.array.includes.js","webpack:///../node_modules/core-js/modules/es.array.index-of.js","webpack:///../node_modules/core-js/modules/es.array.is-array.js","webpack:///../node_modules/core-js/modules/es.array.iterator.js","webpack:///../node_modules/core-js/modules/es.array.join.js","webpack:///../node_modules/core-js/modules/es.array.map.js","webpack:///../node_modules/core-js/modules/es.array.reduce.js","webpack:///../node_modules/core-js/modules/es.array.slice.js","webpack:///../node_modules/core-js/modules/es.array.some.js","webpack:///../node_modules/core-js/modules/es.array.sort.js","webpack:///../node_modules/core-js/modules/es.array.splice.js","webpack:///../node_modules/core-js/modules/es.array.unscopables.flat.js","webpack:///../node_modules/core-js/modules/es.date.to-string.js","webpack:///../node_modules/core-js/modules/es.function.bind.js","webpack:///../node_modules/core-js/modules/es.function.name.js","webpack:///../node_modules/core-js/modules/es.map.js","webpack:///../node_modules/core-js/modules/es.number.constructor.js","webpack:///../node_modules/core-js/modules/es.object.assign.js","webpack:///../node_modules/core-js/modules/es.object.create.js","webpack:///../node_modules/core-js/modules/es.object.define-property.js","webpack:///../node_modules/core-js/modules/es.object.entries.js","webpack:///../node_modules/core-js/modules/es.object.keys.js","webpack:///../node_modules/core-js/modules/es.object.set-prototype-of.js","webpack:///../node_modules/core-js/modules/es.object.to-string.js","webpack:///../node_modules/core-js/modules/es.object.values.js","webpack:///../node_modules/core-js/modules/es.parse-float.js","webpack:///../node_modules/core-js/modules/es.parse-int.js","webpack:///../node_modules/core-js/modules/es.promise.js","webpack:///../node_modules/core-js/modules/es.regexp.constructor.js","webpack:///../node_modules/core-js/modules/es.regexp.exec.js","webpack:///../node_modules/core-js/modules/es.regexp.to-string.js","webpack:///../node_modules/core-js/modules/es.set.js","webpack:///../node_modules/core-js/modules/es.string.includes.js","webpack:///../node_modules/core-js/modules/es.string.iterator.js","webpack:///../node_modules/core-js/modules/es.string.link.js","webpack:///../node_modules/core-js/modules/es.string.match.js","webpack:///../node_modules/core-js/modules/es.string.replace.js","webpack:///../node_modules/core-js/modules/es.string.search.js","webpack:///../node_modules/core-js/modules/es.string.split.js","webpack:///../node_modules/core-js/modules/es.string.trim.js","webpack:///../node_modules/core-js/modules/es.symbol.description.js","webpack:///../node_modules/core-js/modules/es.symbol.iterator.js","webpack:///../node_modules/core-js/modules/es.symbol.js","webpack:///../node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///../node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///../node_modules/core-js/modules/web.timers.js","webpack:///../node_modules/get-doc/index.js","webpack:///../node_modules/has-dom/index.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/qs/lib/formats.js","webpack:///../node_modules/qs/lib/index.js","webpack:///../node_modules/qs/lib/parse.js","webpack:///../node_modules/qs/lib/stringify.js","webpack:///../node_modules/qs/lib/utils.js","webpack:///../node_modules/regenerator-runtime/runtime.js","webpack:///../node_modules/smart-app-banner/index.js","webpack:///../node_modules/ua-parser-js/src/ua-parser.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./js/common/Utils.ts","webpack:///../node_modules/ssr-window/ssr-window.esm.js","webpack:///../node_modules/dom7/dom7.esm.js","webpack:///../node_modules/swiper/shared/dom.js","webpack:///../node_modules/swiper/shared/utils.js","webpack:///../node_modules/swiper/shared/get-support.js","webpack:///../node_modules/swiper/shared/get-device.js","webpack:///../node_modules/swiper/shared/get-browser.js","webpack:///../node_modules/swiper/core/events-emitter.js","webpack:///../node_modules/swiper/core/update/index.js","webpack:///../node_modules/swiper/core/update/updateSize.js","webpack:///../node_modules/swiper/core/update/updateSlides.js","webpack:///../node_modules/swiper/core/update/updateAutoHeight.js","webpack:///../node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///../node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///../node_modules/swiper/core/update/updateProgress.js","webpack:///../node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///../node_modules/swiper/core/update/updateActiveIndex.js","webpack:///../node_modules/swiper/core/update/updateClickedSlide.js","webpack:///../node_modules/swiper/core/transition/transitionEmit.js","webpack:///../node_modules/swiper/core/slide/index.js","webpack:///../node_modules/swiper/core/slide/slideTo.js","webpack:///../node_modules/swiper/core/slide/slideToLoop.js","webpack:///../node_modules/swiper/core/slide/slideNext.js","webpack:///../node_modules/swiper/core/slide/slidePrev.js","webpack:///../node_modules/swiper/core/slide/slideReset.js","webpack:///../node_modules/swiper/core/slide/slideToClosest.js","webpack:///../node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///../node_modules/swiper/core/loop/index.js","webpack:///../node_modules/swiper/core/loop/loopCreate.js","webpack:///../node_modules/swiper/core/loop/loopFix.js","webpack:///../node_modules/swiper/core/loop/loopDestroy.js","webpack:///../node_modules/swiper/core/events/onTouchStart.js","webpack:///../node_modules/swiper/core/events/onTouchMove.js","webpack:///../node_modules/swiper/core/events/onTouchEnd.js","webpack:///../node_modules/swiper/core/events/onResize.js","webpack:///../node_modules/swiper/core/events/onClick.js","webpack:///../node_modules/swiper/core/events/onScroll.js","webpack:///../node_modules/swiper/core/events/index.js","webpack:///../node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///../node_modules/swiper/core/breakpoints/index.js","webpack:///../node_modules/swiper/core/classes/index.js","webpack:///../node_modules/swiper/core/classes/addClasses.js","webpack:///../node_modules/swiper/core/classes/removeClasses.js","webpack:///../node_modules/swiper/core/defaults.js","webpack:///../node_modules/swiper/core/moduleExtendParams.js","webpack:///../node_modules/swiper/core/core.js","webpack:///../node_modules/swiper/core/translate/index.js","webpack:///../node_modules/swiper/core/translate/getTranslate.js","webpack:///../node_modules/swiper/core/translate/setTranslate.js","webpack:///../node_modules/swiper/core/translate/minTranslate.js","webpack:///../node_modules/swiper/core/translate/maxTranslate.js","webpack:///../node_modules/swiper/core/translate/translateTo.js","webpack:///../node_modules/swiper/core/transition/index.js","webpack:///../node_modules/swiper/core/transition/setTransition.js","webpack:///../node_modules/swiper/core/transition/transitionStart.js","webpack:///../node_modules/swiper/core/transition/transitionEnd.js","webpack:///../node_modules/swiper/core/grab-cursor/index.js","webpack:///../node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///../node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///../node_modules/swiper/core/check-overflow/index.js","webpack:///../node_modules/swiper/core/images/index.js","webpack:///../node_modules/swiper/core/images/loadImage.js","webpack:///../node_modules/swiper/core/images/preloadImages.js","webpack:///../node_modules/swiper/core/modules/resize/resize.js","webpack:///../node_modules/swiper/core/modules/observer/observer.js","webpack:///../node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///../node_modules/swiper/modules/navigation/navigation.js","webpack:///../node_modules/swiper/shared/classes-to-selector.js","webpack:///../node_modules/swiper/modules/pagination/pagination.js","webpack:///../node_modules/swiper/modules/autoplay/autoplay.js","webpack:///./js/md-communityBanner/index.ts","webpack:///./js/md-tab/constant/index.ts","webpack:///./js/md-tab/event/ScrollEvent.ts","webpack:///./js/md-tab/event/TabEvent.ts","webpack:///./js/md-tab/util.ts","webpack:///./js/md-tab/feature/DefaultTab/Depth4Tab.ts","webpack:///./js/md-tab/feature/DefaultTab/Depth3Tab.ts","webpack:///./js/md-tab/feature/CustomTab/DepthTabEvent.ts","webpack:///./js/md-tab/feature/CustomTab/DepthTabLayer.ts","webpack:///./js/md-commonBanner/ncBanner/checkCookie.ts","webpack:///./js/md-commonBanner/utils/Utils.ts","webpack:///./js/md-commonBanner/ncBanner/FloatingLayer.ts","webpack:///./js/md-commonBanner/ncBanner/MainFloatingLayer.ts","webpack:///./js/md-commonBanner/modal/AbsModal.ts","webpack:///./js/md-commonBanner/modal/Modal.ts","webpack:///./js/common/L10n.ts","webpack:///./js/md-commonBanner/ncBanner/ImageLayer.ts","webpack:///./js/md-commonBanner/ncBanner/MovieLayer.ts","webpack:///./js/md-commonBanner/ncBanner/ToastLayer.ts","webpack:///./js/md-commonBanner/ncBanner/MainToastLayer.ts","webpack:///./js/md-commonBanner/ncBanner/TopLayer.ts","webpack:///./js/md-commonBanner/ncBanner/NcBanner.ts","webpack:///./js/md-myCharList/characterInfo.ts","webpack:///./js/md-myCharList/index.ts","webpack:///./js/md-footer/L10n.ts","webpack:///./js/md-footer/l10n/ko.ts","webpack:///./js/md-footer/l10n/zh.ts","webpack:///./js/md-footer/l10n/ja.ts","webpack:///./js/md-footer/l10n/en.ts","webpack:///./js/md-footer/l10n/th.ts","webpack:///./js/md-footer/l10n/ru.ts","webpack:///./js/md-footer/l10n/id.ts","webpack:///./js/md-footer/l10n/ar.ts","webpack:///./js/md-footer/DataStore.ts","webpack:///./js/md-footer/SvgCode.ts","webpack:///./js/md-footer/Layer.ts","webpack:///./js/md-footer/component/Country.ts","webpack:///./js/md-footer/component/Language.ts","webpack:///./js/md-footer/component/SnsList.ts","webpack:///./js/md-footer/component/Links.ts","webpack:///./js/md-footer/component/InfoTW.ts","webpack:///./js/md-footer/component/InfoJP.ts","webpack:///./js/md-footer/component/InfoRU.ts","webpack:///./js/md-footer/component/InfoCS.ts","webpack:///./js/md-footer/component/InfoNAEU.ts","webpack:///./js/md-footer/component/Info.ts","webpack:///./js/md-footer/component/Copyright.ts","webpack:///./js/md-footer/component/Logo.ts","webpack:///./js/md-footer/component/FamilySite.ts","webpack:///./js/md-footer/component/LanguageCountry.ts","webpack:///./js/md-idVerify/index.ts","webpack:///./js/md-dropdown/DropdownInstControl.ts","webpack:///./js/md-dropdown/DropdownBtn.ts","webpack:///./js/md-dropdown/util.ts","webpack:///./js/md-dropdown/DropdownLayer.ts","webpack:///./js/md-dropdown/DropdownSelect.ts","webpack:///./js/md-dropdown/EventEmitter.ts","webpack:///./js/md-dropdown/DropdownStore.ts","webpack:///./js/md-dropdown/index.ts","webpack:///./js/md-cookieLayer/util/util.ts","webpack:///./js/md-cookieLayer/l10n/ar.ts","webpack:///./js/md-cookieLayer/l10n/index.ts","webpack:///./js/md-cookieLayer/l10n/en.ts","webpack:///./js/md-cookieLayer/l10n/id.ts","webpack:///./js/md-cookieLayer/l10n/ja.ts","webpack:///./js/md-cookieLayer/l10n/ko.ts","webpack:///./js/md-cookieLayer/l10n/ru.ts","webpack:///./js/md-cookieLayer/l10n/th.ts","webpack:///./js/md-cookieLayer/l10n/zh.ts","webpack:///./js/md-cookieLayer/service/index.ts","webpack:///./js/md-cookieLayer/template/confirmToast.ts","webpack:///./js/md-cookieLayer/util/util2.js","webpack:///./js/md-cookieLayer/feature/AbsGlobalCookie.ts","webpack:///./js/md-cookieLayer/feature/confirmToast.ts","webpack:///./js/md-cookieLayer/template/settingLayer.ts","webpack:///./js/md-cookieLayer/feature/settingLayer.ts","webpack:///./js/md-autoSuggest/RecentSearch.ts","webpack:///./js/md-autoSuggest/SuggestList.ts","webpack:///./js/md-autoSuggest/index.ts","webpack:///./js/md-modal/constants/options.ts","webpack:///./js/md-modal/constants/class.ts","webpack:///./js/md-modal/util/iosFix.ts","webpack:///./js/md-modal/util/util.ts","webpack:///./js/md-modal/constants/state.ts","webpack:///./js/md-modal/util/renderModal.ts","webpack:///./js/md-modal/l10n/index.ts","webpack:///./js/md-modal/l10n/lang/ko.ts","webpack:///./js/md-modal/l10n/lang/zh.ts","webpack:///./js/md-modal/l10n/lang/ja.ts","webpack:///./js/md-modal/l10n/lang/en.ts","webpack:///./js/md-modal/l10n/lang/th.ts","webpack:///./js/md-modal/l10n/lang/ru.ts","webpack:///./js/md-modal/l10n/lang/id.ts","webpack:///./js/md-modal/l10n/lang/ar.ts","webpack:///./js/md-modal/Notification/AbstractNotification.ts","webpack:///./js/md-modal/Notification/Popup.ts","webpack:///./js/md-modal/Notification/Alert.ts","webpack:///./js/md-modal/Notification/Confirm.ts","webpack:///./js/md-modal/Notification/Layer.ts","webpack:///./js/md-modal/Notification/Toast.ts","webpack:///./js/md-modal/index.ts","webpack:///./js/App.ts","webpack:///./js/md-smartbanner/index.ts","webpack:///./js/md-tab/index.ts","webpack:///./js/md-commonBanner/index.ts","webpack:///./js/md-profileImgUpload/index.ts","webpack:///./js/md-footer/index.ts"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar transitionalDefaults = require('../defaults/transitional');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar enhanceError = require('../core/enhanceError');\nvar transitionalDefaults = require('./transitional');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.26.1\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","function one(selector, el) {\n return el.querySelector(selector);\n}\n\nexports = module.exports = function(selector, el){\n el = el || document;\n return one(selector, el);\n};\n\nexports.all = function(selector, el){\n el = el || document;\n return el.querySelectorAll(selector);\n};\n\nexports.engine = function(obj){\n if (!obj.one) throw new Error('.one callback required');\n if (!obj.all) throw new Error('.all callback required');\n one = obj.one;\n exports.all = obj.all;\n return exports;\n};\n","var exports = module.exports = function (doc) {\n if (!doc) doc = {};\n if (typeof doc === 'string') doc = { cookie: doc };\n if (doc.cookie === undefined) doc.cookie = '';\n \n var self = {};\n self.get = function (key) {\n var splat = doc.cookie.split(/;\\s*/);\n for (var i = 0; i < splat.length; i++) {\n var ps = splat[i].split('=');\n var k = unescape(ps[0]);\n if (k === key) return unescape(ps[1]);\n }\n return undefined;\n };\n \n self.set = function (key, value, opts) {\n if (!opts) opts = {};\n var s = escape(key) + '=' + escape(value);\n if (opts.expires) s += '; expires=' + opts.expires;\n if (opts.path) s += '; path=' + escape(opts.path);\n if (opts.domain) s += '; domain=' + escape(opts.domain);\n if (opts.secure) s += '; secure';\n doc.cookie = s;\n return s;\n };\n return self;\n};\n\nif (typeof document !== 'undefined') {\n var cookie = exports(document);\n exports.get = cookie.get;\n exports.set = cookie.set;\n}\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n redefine(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","module.exports = typeof window == 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar bind = require('../internals/function-bind-context');\n\nvar TypeError = global.TypeError;\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar Function = global.Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = n$ParseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.21.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar TypeError = global.TypeError;\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar un$DateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar getTime = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) != INVALID_DATE) {\n redefine(DatePrototype, TO_STRING, function toString() {\n var value = getTime(this);\n // eslint-disable-next-line no-self-compare -- NaN check\n return value === value ? un$DateToString(this) : INVALID_DATE;\n });\n}\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n parseInt: $parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n // eslint-disable-next-line unicorn/no-thenable -- safe\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar regExpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar getFlags = uncurryThis(regExpFlags);\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxy(keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n redefine(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n var valueOf = SymbolPrototype.valueOf;\n // eslint-disable-next-line no-unused-vars -- required for .length\n redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n // TODO: improve hint logic\n return call(valueOf, this);\n });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n apply(fn, this, args);\n } : fn, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","/**\r\n * @module get-doc\r\n */\r\n\r\nvar hasDom = require('has-dom');\r\n\r\nmodule.exports = hasDom() ? document : null;","'use strict';\nmodule.exports = function () {\n\treturn typeof window !== 'undefined'\n\t\t&& typeof document !== 'undefined'\n\t\t&& typeof document.createElement === 'function';\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","'use strict';\r\n\r\nvar extend = require('object-assign');\r\nvar q = require('component-query');\r\nvar doc = require('get-doc');\r\nvar cookie = require('cookie-cutter');\r\nvar ua = require('ua-parser-js');\r\n\r\n// IE < 11 doesn't support navigator language property.\r\n/* global navigator */\r\nvar userLangAttribute = navigator.language || navigator.userLanguage || navigator.browserLanguage;\r\nvar userLang = userLangAttribute.slice(-2) || 'us';\r\nvar root = doc && doc.documentElement;\r\n\r\n// platform dependent functionality\r\nvar mixins = {\r\n\tios: {\r\n\t\tappMeta: 'apple-itunes-app',\r\n\t\ticonRels: ['apple-touch-icon-precomposed', 'apple-touch-icon'],\r\n\t\tgetStoreLink: function () {\r\n\t\t\treturn 'https://itunes.apple.com/' + this.options.appStoreLanguage + '/app/id' + this.appId + \"?mt=8\";\r\n\t\t}\r\n\t},\r\n\tandroid: {\r\n\t\tappMeta: 'google-play-app',\r\n\t\ticonRels: ['android-touch-icon', 'apple-touch-icon-precomposed', 'apple-touch-icon'],\r\n\t\tgetStoreLink: function () {\r\n\t\t\treturn 'http://play.google.com/store/apps/details?id=' + this.appId;\r\n\t\t}\r\n\t},\r\n\twindows: {\r\n\t\tappMeta: 'msApplication-ID',\r\n\t\ticonRels: ['windows-touch-icon', 'apple-touch-icon-precomposed', 'apple-touch-icon'],\r\n\t\tgetStoreLink: function () {\r\n\t\t\treturn 'http://www.windowsphone.com/s?appid=' + this.appId;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar SmartBanner = function (options) {\r\n\tvar agent = ua(navigator.userAgent);\r\n\tthis.options = extend({}, {\r\n\t\tdaysHidden: 15,\r\n\t\tdaysReminder: 90,\r\n\t\tappStoreLanguage: userLang, // Language code for App Store\r\n\t\tbutton: 'OPEN', // Text for the install button\r\n\t\tstore: {\r\n\t\t\tios: 'On the App Store',\r\n\t\t\tandroid: 'In Google Play',\r\n\t\t\twindows: 'In the Windows Store'\r\n\t\t},\r\n\t\tprice: {\r\n\t\t\tios: 'FREE',\r\n\t\t\tandroid: 'FREE',\r\n\t\t\twindows: 'FREE'\r\n\t\t},\r\n\t\ttheme: '', // put platform type ('ios', 'android', etc.) here to force single theme on all device\r\n\t\ticon: '', // full path to icon image if not using website icon image\r\n\t\tforce: '', // put platform type ('ios', 'android', etc.) here for emulation\r\n\r\n\t}, options || {});\r\n\r\n\tif (this.options.force) {\r\n\t\tthis.type = this.options.force;\r\n\t} else if (agent.os.name === 'Windows Phone' || agent.os.name === 'Windows Mobile') {\r\n\t\tthis.type = 'windows';\r\n\t} else if (agent.os.name === 'iOS') {\r\n\t\tthis.type = 'ios';\r\n\t} else if (agent.os.name === 'Android') {\r\n\t\tthis.type = 'android';\r\n\t}\r\n\r\n\t// Don't show banner on ANY of the following conditions:\r\n\t// - device os is not supported,\r\n\t// - user is on mobile safari for ios 6 or greater (iOS >= 6 has native support for SmartAppBanner)\r\n\t// - running on standalone mode\r\n\t// - user dismissed banner\r\n\tvar unsupported = !this.type || !this.options.store[this.type];\r\n\tif (unsupported) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis.appMeta = mixins[this.type].appMeta;\r\n\tthis.parseAppId();\r\n\r\n\tvar isMobileSafari = (this.type === 'ios' && agent.browser.name === 'Mobile Safari' && parseInt(agent.os.version, 10) >= 6);\r\n\r\n\tvar runningStandAlone = navigator.standalone;\r\n\tvar userDismissed = cookie.get(this.appId + '-smartbanner-closed');\r\n\tvar userInstalled = cookie.get(this.appId + '-smartbanner-installed');\r\n\r\n\tif (isMobileSafari || runningStandAlone || userDismissed || userInstalled) {\r\n\t\treturn;\r\n\t}\r\n\r\n\textend(this, mixins[this.type]);\r\n\r\n\t// - If we dont have app id in meta, dont display the banner\r\n\t// - If opened in safari IOS, dont display the banner\r\n\tif (!this.appId && agent.os.name === 'IOS' && agent.browser.name === 'Safari') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tthis.create();\r\n\tthis.show();\r\n};\r\n\r\nSmartBanner.prototype = {\r\n\tconstructor: SmartBanner,\r\n\r\n\tcreate: function () {\r\n\t\tvar link = this.getStoreLink();\r\n\t\tvar inStore = this.options.price[this.type] + ' - ' + this.options.store[this.type];\r\n\t\tvar icon;\r\n\r\n\t\tif (this.options.icon) {\r\n\t\t\ticon = this.options.icon;\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < this.iconRels.length; i++) {\r\n\t\t\t\tvar rel = q('link[rel=\"' + this.iconRels[i] + '\"]');\r\n\r\n\t\t\t\tif (rel) {\r\n\t\t\t\t\ticon = rel.getAttribute('href');\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sb = doc.createElement('div');\r\n\t\tvar theme = this.options.theme || this.type;\r\n\r\n\t\tsb.className = 'smartbanner smartbanner-' + theme;\r\n\t\tsb.innerHTML = '
' +\r\n\t\t\t\t\t\t\t'×' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t\t'
' + this.options.title + '
' +\r\n\t\t\t\t\t\t\t\t'
' + this.options.author + '
' +\r\n\t\t\t\t\t\t\t\t'' + inStore + '' +\r\n\t\t\t\t\t\t\t'
' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t\t\t'' + this.options.button + '' +\r\n\t\t\t\t\t\t\t'' +\r\n\t\t\t\t\t\t'
';\r\n\r\n\t\t// there isn’t neccessary a body\r\n\t\tif (doc.body) {\r\n\t\t\tdoc.body.appendChild(sb);\r\n\t\t}\t\telse if (doc) {\r\n\t\t\tdoc.addEventListener('DOMContentLoaded', function () {\r\n\t\t\t\tdoc.body.appendChild(sb);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tq('.smartbanner-button', sb).addEventListener('click', this.install.bind(this), false);\r\n\t\tq('.smartbanner-close', sb).addEventListener('click', this.close.bind(this), false);\r\n\t},\r\n\thide: function () {\r\n\t\troot.classList.remove('smartbanner-show');\r\n\r\n\t\tif (typeof this.options.close === 'function') {\r\n\t\t\treturn this.options.close();\r\n\t\t}\r\n\t},\r\n\tshow: function () {\r\n\t\troot.classList.add('smartbanner-show');\r\n\t\tif (typeof this.options.show === 'function') {\r\n\t\t\treturn this.options.show();\r\n\t\t}\r\n\t},\r\n\tclose: function () {\r\n\t\tthis.hide();\r\n\t\tcookie.set(this.appId + '-smartbanner-closed', 'true', {\r\n\t\t\tpath: '/',\r\n\t\t\texpires: new Date(Number(new Date()) + (this.options.daysHidden * 1000 * 60 * 60 * 24))\r\n\t\t});\r\n\t\tif (typeof this.options.close === 'function') {\r\n\t\t\treturn this.options.close();\r\n\t\t}\r\n\t},\r\n\tinstall: function () {\r\n\t\tthis.hide();\r\n\t\tcookie.set(this.appId + '-smartbanner-installed', 'true', {\r\n\t\t\tpath: '/',\r\n\t\t\texpires: new Date(Number(new Date()) + (this.options.daysReminder * 1000 * 60 * 60 * 24))\r\n\t\t});\r\n\t\tif (typeof this.options.close === 'function') {\r\n\t\t\treturn this.options.close();\r\n\t\t}\r\n\t},\r\n\tparseAppId: function () {\r\n\t\tvar meta = q('meta[name=\"' + this.appMeta + '\"]');\r\n\t\tif (!meta) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.type === 'windows') {\r\n\t\t\tthis.appId = meta.getAttribute('content');\r\n\t\t} else {\r\n\t\t\tthis.appId = /app-id=([^\\s,]+)/.exec(meta.getAttribute('content'))[1];\r\n\t\t}\r\n\r\n\t\treturn this.appId;\r\n\t}\r\n};\r\n\r\nmodule.exports = SmartBanner;\r\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.31',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","/**\n * @category namespace\n */\nexport const namespace = (_namespace:string = 'window.console', _parent: any = window) => {\n let parts = _namespace.split('.');\n for (let i = 0, max = parts.length; i < max; i++) {\n if (!_parent[parts[i]]) _parent[parts[i]] = {};\n _parent = _parent[parts[i]];\n }\n return _parent;\n}\n\n/**\n * @category Utils\n * @description 객체가 유효한지 확인\n * @param {Object} obj={} 탐색 대상 오브젝트\n * @param {Array} keys=[] 키네임\n * @returns {Boolean}\n * @example \n * objHasKeys( window, ['Twitch', 'Player'] )\n */\nexport const objHasKeys = (obj:any, keys: Array): boolean => {\n const next: string | undefined = keys.shift();\n if (next) {\n return !!obj[next] && (!keys.length || objHasKeys(obj[next], keys));\n } else {\n return false;\n }\n}\n\n/**\n * @category Utils\n * @description 쿠키 세팅\n * @param {String} name 쿠키이름\n * @param {String} value 쿠키값\n * @param {Number} expiredays 만료날짜\n * @example\n * setCookie('topBanner', 'show', 1);\n */\nexport const setCookie = (name: string= '', value: string = '', expiredays: number = 1, domain: string = ''): void => {\n let now: Date = new Date();\n now.setDate(now.getDate() + expiredays);\n document.cookie = `${name}=${escape(value)}; path=/; domain=${domain};expires=${now.toUTCString()};SameSite=Lax;`;\n}\n\n/**\n * @category Utils\n * @description 쿠키 확인\n * @param {String} name 쿠키이름\n * @returns {String}\n * @example\n * getCookie('topBanner') == 'show' // true : 쿠키가 입력 되어 있는 상태\n */\nexport const getCookie = (name = ''): string => {\n let cookies: string = document.cookie;\n if (cookies.indexOf(name) == -1) return '';\n let cookie: string = cookies.substr(cookies.indexOf(name));\n cookie = cookie.split(';')[0];\n cookie = cookie.substr(cookie.indexOf('=') + 1);\n return cookie;\n}\n\n/**\n * @category Utils\n * @description 숫자 앞에 0 붙여주기 ex) '01', '001'\n * @param {Number} n\n * @param {Number} digits\n * @returns {String}\n * @example\n * leadingZeros( 3, 2 ) // return '03'\n */\nexport const leadingZeros = (n: number, digits: number): string => {\n let zero: string = '';\n const len: number = n.toString().length;\n let i: number = 0;\n if (len < digits) {\n for (; i < digits - len; i += 1) {\n zero += '0';\n }\n }\n return zero + n;\n}\n\n/**\n * @category Utils\n * @description URL 파라미터 키네임으로 값 가져오기\n * @param {String} name 키네임\n * @param {String} url 필수아님\n * @returns {String}\n * @example\n * getParamByName('query'); // return '검색어'\n * getParamByName('query', 'https://lineage.plaync.com/search/index?query=test'); // return 'test'\n */\nexport const getParamByName = (name: string= '', url: string= window.location.href): string | null => {\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n let regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\");\n let results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n}\n\n/**\n * @category Utils\n * @description URL에 파라미터 추가하기\n * @param {String} _key\n * @param {String} _val\n * @param {String} _url\n * @returns {String}\n * @example\n * addParam( 'page_no', '43' ),\n */\nexport const addParam = (_key = 'key', _val:string | number = 0, _url: string = window.location.href): string => {\n let re = new RegExp(\"([?&])\" + _key + \"=.*?(&|$)\", \"i\");\n let separator: string = _url.indexOf('?') !== -1 ? \"&\" : \"?\";\n if (_url.match(re)) {\n return _url.replace(re, '$1' + _key + \"=\" + _val + '$2');\n } else {\n return _url + separator + _key + \"=\" + _val;\n }\n}\n\n/**\n * @category Utils\n * @description 1000 단위 콤마 \n * @example\n * withCommas( 1000000 ) => '1,000,000'\n */\nexport const withCommas = (_num: number): string => {\n return _num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n}\n\n/**\n * @category Utils\n * @description Simple object check.\n * @param item\n * @returns {boolean}\n * @example\n * isObject({a:1, b:2, c:{d:4}}) // true\n * isObject('nc.lineage2.sampleApp') // false\n */\nexport const isObject = (item: T): boolean => {\n\treturn (item && typeof item === 'object' && !Array.isArray(item));\n}\n\n/**\n * @category Utils\n * @description Deep merge two objects.\n * @param target\n * @param ...sources\n * @example\n * mergeDeep({a:1}, {b:200}) // {a:1, b:200}\n */\nexport const mergeDeep = (target:any, ...sources:any[]): object => {\n\tif (!sources.length) return target;\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!target[key]) Object.assign(target, {\n\t\t\t\t\t[key]: {}\n\t\t\t\t});\n\t\t\t\tmergeDeep(target[key], source[key]);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, {\n\t\t\t\t\t[key]: source[key]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn mergeDeep(target, ...sources);\n}\n\n/**\n * @category Utils\n * @description hasClass\n * @example\n * const el = screen.getByTestId('hasClassTest');\n * hasClass(el, 'hasClass') \n */\nexport const hasClass = ( ele: HTMLElement | null, cls: string ): boolean => {\n if (ele) {\n return !!ele.className.match(new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)'));\n } else {\n return false;\n }\n}\n\n/**\n * @category Utils\n * @description addClass\n * @example \n * addClass( element, 'className' );\n */\nexport const addClass = ( ele: Element | HTMLElement| NodeListOf | null , cls: string ): void => {\n if( !ele) return;\n if (ele instanceof NodeList) {\n ele.forEach( it=>{\n it.classList.add(cls);\n });\n }else{\n ele.classList.add(cls);\n }\n}\n\n/**\n * @category Utils\n * @description removeClass\n * @example removeClass( element, 'className' );\n */\nexport const removeClass = ( ele: Element | HTMLElement | NodeListOf | null, cls: string ): void => {\n if( !ele) return;\n if (ele instanceof NodeList) {\n ele.forEach( it=>{\n it.classList.remove( cls );\n });\n }else{\n ele.classList.remove( cls );\n }\n}\n\n/**\n * @category Utils\n * @description toggleClass\n * @example\n * toggleClass(document.querySelector('p.special'), 'special');\n */\nexport const toggleClass = (el: HTMLElement | null | undefined, className: string, force?: boolean): void => {\n if (el) {\n el.classList.toggle(className, force);\n }\n}\n\n/**\n * @category Utils\n * @description getStyle\n * @example\n * getStyle(document.querySelector('p'), 'font-size'); // '16px'\n */\nexport const getStyle = (el: Element, styleProp: string): string => {\n const defaultView = el.ownerDocument.defaultView;\n if (defaultView && defaultView.getComputedStyle) {\n // sanitize property name to css notation (hypen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase();\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\n }\n return '';\n}\n\n/**\n * @category Utils\n * @description URL 유효성 검사\n */\n export const isLink = ( _text: string ): boolean => {\n const pattern = /^(http[s]?:\\/\\/){0,1}(www\\.){0,1}[a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,5}[\\.]{0,1}/;\n // const pattern = /(https?:\\/\\/)?w{0,3}\\w*?\\.(\\w*?\\.)?\\w{2,3}\\S*|www\\.(\\w*?\\.)?\\w*?\\.\\w{2,3}\\S*|(\\w*?\\.)?\\w*?\\.\\w{2,3}[\\/\\?]\\S*/;\n return pattern.test( _text );\n}\n\n/**\n * @category Utils\n * @description 한글 조사 붙이기\n * @param {String} _text=''\n * @param {number} _josaStyle= 0:['를','을'] 1:['로','으로'] 2:['라고','이라고']\n * @example\n * josa('사과', 1);\n * @returns {String} '사과를'\n */\nexport const josa = ( _text: string, _josaStyle: number ): string => {\n let code: number= _text.charCodeAt( _text.length - 1 ) - 44032;\n let josa: Array = [['를','을'], ['로','으로'], ['라고','이라고']][_josaStyle];\n \n if ( ( code >= 0x3130 && code <= 0x318F ) || code >= 0xAC00 && code <= 0xD7A3 ) return _text+''; // 한글이 아닐 경우\n\n if ( code % 28 === 0 ) {\n return _text+josa[ 0 ]; // 받침 없음\n } else {\n return _text+josa[ 1 ]; // 받침 있음\n }\n}\n\n/**\n * @category Utils\n * @description html 태그 삭제\n */\nexport const removeTag = ( _html:string = '' ): string => {\n return _html.replace( /<(\\/)?([a-zA-Z0-9]*)(\\s[a-zA-Z0-9]*=[^>]*)?(\\s)*(\\/)?>/ig, '' );\n}\n\n/**\n * @category Utils\n * @description escapeTag html 태그 문자열로 변환 \n */\nconst entityMap = new Map(Object.entries({\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': '"',\n \"'\": ''',\n \"/\": '/'\n}))\n\nexport const escapeHtml = (_source: string) => {\n return String(_source).replace(/[&<>\"'\\/]/g, (s: string) => entityMap.get(s)!);\n}\n\n/**\n * @category Utils\n * @description scrollToTop\n * @example\n * scrollToTop();\n */\nexport const scrollToTop = ():void => {\n const c: number = document.documentElement.scrollTop || document.body.scrollTop;\n if (c > 0) {\n window.requestAnimationFrame(scrollToTop);\n window.scrollTo(0, c - c / 8);\n }\n};\n\n/**\n * @category Utils\n * @description show\n * @example\n * show(...document.querySelectorAll('img'));\n */\nexport const show = (...el:HTMLElement[]) => [...el].forEach(e => (e.style.display = 'unset'));\n\n/**\n * @category Utils\n * @description hide\n * @example\n * hide(document.querySelectorAll('img'));\n */\nexport const hide = (el: HTMLElement | null) => {\n if(el){\n el.style.display = 'none';\n }\n};\n\n/**\n * @category Utils\n * @description insertAfter\n * @example\n * insertAfter(document.getElementById('myId'), '

after

');\n */\nexport const insertAfter = (el: HTMLElement, htmlString: string) => el.insertAdjacentHTML('afterend', htmlString);\n\n/**\n * @category Utils\n * @description insertBefore\n * @example\n * insertBefore(document.getElementById('myId'), '

before

'); //

before

...
\n */\nexport const insertBefore = (el: HTMLElement, htmlString: string) => el.insertAdjacentHTML('beforebegin', htmlString);\n\n/**\n * @category Utils\n * @description @param {String} HTML representing a single element\n * @return {HTMLElement} HTMLElement\n * @example \n * var td = makeElement('foo'),\n * div = makeElement('
nested stuff
');\n */\nexport const makeElement = (html: string): HTMLElement => {\n let tmp = document.implementation.createHTMLDocument('');\n tmp.body.innerHTML = html.trim();\n return tmp.body.firstChild as HTMLElement;\n}\n\n/**\n * @category Utils\n * @description makeElements\n * @param {String} HTML representing an y number of sibling elements\n * @return {NodeList} \n * @example\n * var rows = makeElements('foobar');\n */\nexport const makeElements = (html: string) => {\n let tmp = document.implementation.createHTMLDocument('');\n tmp.body.innerHTML = html.trim();\n return tmp.body.childNodes;\n}\n\n\n/**\n * @category Utils\n * @description makeElements\n * @param {String} HTML representing an y number of sibling elements\n * @return {NodeList}\n * @example\n * const el = makeEl('a', document.body, {class: 'tclass', id: 'tid', 'name': 'tname'})\n */\nexport const makeEl = (tagName: K, parentEle?: HTMLElement, attr?: {[key: string]: string}, text?: string ): HTMLElementTagNameMap[K] => {\n let ele = document.createElement(tagName);\n if (parentEle) parentEle.appendChild(ele);\n if ( attr ){\n for (let key in attr) {\n ele.setAttribute(key, attr[key]);\n }\n }\n if (text) {\n ele.textContent = text;\n }\n return ele;\n}\n\n/**\n * @category Utils\n * @description uniqueID generator\n * @param {String} \n * @return {} \n */\nexport const uniqueID = (_prefix: string= '_'): string => {\n return _prefix + Math.random().toString(36).substring(2, 11);\n}\n\n/**\n * @category Utils\n * @description removeElement\n * @param {String} \n * @return {} \n */\nexport const removeElement = (_el:HTMLElement): void => {\n _el.parentNode?.removeChild(_el);\n}\n\n/**\n * @category Utils\n * @description 배열을 인자로 받아 랜덤하게 재배열 한 배열\n*/\t\t\nexport const suffleArray = (arr:Array): Array => {\n let idx: number = 0;\n let returnArr: Array = [];\n let arrLen: number = arr.length;\n \n for(let i:number=0; i => {\n\treturn Array.apply(0, Array(Math.ceil((end - start) / step))).map((empty:unknown, index:number) => {\n return index * step + start\n });\n}\n\nexport const width = (el:HTMLElement): number => parseFloat(getComputedStyle(el, null).width.replace(\"px\", \"\"));\nexport const height = (el:HTMLElement): number => parseFloat(getComputedStyle(el, null).height.replace(\"px\", \"\"));\n\n/**\n * @category Utils\n * @description getLang lang 값 체크\n */\nexport const getLang = () => {\n return document.getElementsByTagName('html')[0].getAttribute('lang');\n}\n\n/**\n * @category Utils\n * @description html 태그 문자열로 변환 \n */\nexport const escapeTag = ( _text: string ) => {\n const htmlEscapes: {[key:string]: string} = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n };\n return _text.replace( /[&<>\"'\\/]/g, match => htmlEscapes[match] );\n}\n\n\n/**\n * @category Utils\n * @description show hide toggle\n */\nexport const toggle = ( el: HTMLElement | null, force?: boolean): void => {\n if (!el) return;\n \n if (force !== undefined) {\n if (force) {\n el.style.display = 'block';\n }else{\n hide(el);\n }\n }else{\n if (window.getComputedStyle(el).display === 'block') {\n hide(el);\n }else{\n el.style.display = 'block';\n }\n }\n}\n\n/**\n * @description url param\n */\nexport const param = ( obj: {[key: string]: string} ): string => {\n return Object.keys(obj).map((k)=>{\n return `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`;\n }).join('&');\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { IBanner, IBannerItem, ICommunityBannerConfig } from '../interface/ICommunityBanner';\nimport axios from 'axios';\nimport Swiper, { Autoplay, Navigation, Pagination } from 'swiper';\nimport 'swiper/css';\nimport 'swiper/css/navigation';\nimport 'swiper/css/pagination';\n\nexport default class Index {\n constructor(_config: ICommunityBannerConfig) {\n // console.log('-------Community Banner START-------', _config);\n if (location.hostname === '' || location.hostname === 'localhost' || location.hostname === '127.0.0.1') {\n this._fetchDummyList(_config.dummyData as IBanner);\n } else this.fetchBannerList(_config.apiDomain + _config.contiTopBannerApi);\n }\n\n // 더미 데이터 가져오기\n _fetchDummyList(data: IBanner) {\n if (!data.isActive) return;\n this.createBanner(data.bannerList);\n }\n\n async fetchBannerList(_api: string) {\n try {\n const { data } = await axios.get(`${_api}`);\n if (!data) return;\n const parseData: IBanner = JSON.parse(data.jsonData);\n if (!parseData.isActive) return;\n this.createBanner(parseData.bannerList);\n } catch (error) {\n console.log(error);\n }\n }\n\n createBanner(bannerList: IBannerItem[]): void {\n const boardTopBannerIndex = document.querySelector('.board-top-banner-index');\n if (!(boardTopBannerIndex instanceof Element)) return;\n\n if (bannerList.length <= 1) {\n this.appendBannerList(\n boardTopBannerIndex,\n bannerList,\n `
`,\n '.board-top-banner'\n );\n } else {\n this.appendBannerList(\n boardTopBannerIndex,\n bannerList,\n `
\n
\n
\n
\n
\n
`,\n '.board-top-banner .swiper-wrapper'\n );\n this.setSwiper();\n }\n }\n\n appendBannerList(\n boardTopBannerIndex: Element,\n bannerList: IBannerItem[],\n containerElement: string,\n wrapperElement: string\n ): void {\n boardTopBannerIndex.insertAdjacentHTML('beforeend', containerElement);\n const bannerSwiperWrapper = document.querySelector(wrapperElement);\n\n bannerList.forEach((bannerItem: IBannerItem) => {\n let bannerItemElement = `\n
\n \n \"\"\n \"\"\n \n
`;\n bannerSwiperWrapper?.insertAdjacentHTML('beforeend', bannerItemElement);\n });\n }\n\n setSwiper(): void {\n new Swiper('.board-top-banner', {\n modules: [Navigation, Pagination, Autoplay],\n loop: true,\n centeredSlides: true,\n autoplay: {\n delay: 3000,\n disableOnInteraction: false,\n },\n breakpoints: {\n 960: {\n slidesPerView: 1,\n },\n },\n navigation: {\n nextEl: '.board-top-banner .swiper-button-next',\n prevEl: '.board-top-banner .swiper-button-prev',\n },\n pagination: {\n el: '.board-top-banner .swiper-pagination',\n clickable: true,\n },\n });\n }\n} // end of class\n","export const IS_RTL_SERVICE =\n document.getElementsByTagName('html')[0].getAttribute('dir') === 'rtl';\nexport const PC_BREAK_POINT = 960;\n\n// active tab class\nexport const ACTIVE_ITEMS_CLASS = 'selected';\nexport const ACTIVE_WRAP_CLASS = 'is-show';\n\n// custom-tab class\nexport const PARENT_DEPTH = 3;\nexport const TAB_SWIPE_CLASS = 'tab-swipe';\nexport const TAB_WRAP_CLASS = 'tab-swipe__wrap';\nexport const TAB_LIST_CLASS = 'tab-swipe__list';\nexport const TAB_LIST_ITEMS_CLASS = 'tab-swipe__list-items';\n","export class ScrollState {\n public isDown = false;\n public isDragged = false;\n public startX: number | null = null;\n public scrollLeft: number | null = null;\n}\nexport const mousedownEventHandler = (\n scroll: ScrollState,\n event: MouseEvent,\n horizontalScroll: HTMLElement\n): void => {\n scroll.isDown = true;\n scroll.startX = event.pageX - horizontalScroll.offsetLeft;\n scroll.scrollLeft = horizontalScroll.scrollLeft;\n};\nexport const mouseupEventHandler = (\n scroll: ScrollState,\n horizontalScroll: HTMLElement\n): void => {\n scroll.isDown = false;\n // 마우스 클릭이 끝날 때 a 태그의 기본 이벤트 금지\n if (scroll.isDragged) {\n horizontalScroll.childNodes.forEach((childItem) => {\n childItem.addEventListener('click', _preventClick);\n });\n } else {\n horizontalScroll.childNodes.forEach((childItem) => {\n childItem.removeEventListener('click', _preventClick);\n });\n }\n scroll.isDragged = false;\n};\nconst _preventClick = (event: Event): void => {\n event.preventDefault();\n event.stopImmediatePropagation();\n};\nexport const mouseleaveHandler = (scroll: ScrollState): void => {\n scroll.isDown = false;\n};\nexport const mousemoveHandler = (\n scroll: ScrollState,\n event: MouseEvent,\n horizontalScroll: HTMLElement\n): void => {\n if (!scroll.isDown) return;\n event.preventDefault();\n const x = event.pageX - horizontalScroll.offsetLeft;\n const movedX = (x - scroll.startX!) * 1;\n if (Math.abs(movedX) <= 10) {\n scroll.isDragged = false;\n } else {\n scroll.isDragged = true;\n }\n horizontalScroll.scrollLeft = scroll.scrollLeft! - movedX;\n};\n","import { PC_BREAK_POINT, IS_RTL_SERVICE } from '../constant';\nimport {\n ScrollState,\n mousedownEventHandler,\n mouseleaveHandler,\n mousemoveHandler,\n mouseupEventHandler,\n} from './ScrollEvent';\n/**\n * @category tab\n * @description 가로 스크롤 drag & drop 기능 이벤트 등록 함수\n * @param {HTMLElement} horizontalScroll 가로 스크롤 되는 영역\n * @returns void\n * @example\n * setHorizontalScrollEvent(document.querySelector('.depth3-list'));\n */\nexport const setHorizontalSrollEvent = (\n horizontalScroll: HTMLElement\n): void => {\n if (!(horizontalScroll instanceof HTMLElement)) return;\n const scroll = new ScrollState();\n\n horizontalScroll.addEventListener('mousedown', (event) =>\n mousedownEventHandler(scroll, event, horizontalScroll)\n );\n horizontalScroll.addEventListener('mouseleave', () =>\n mouseleaveHandler(scroll)\n );\n horizontalScroll.addEventListener('mousemove', (event) =>\n mousemoveHandler(scroll, event, horizontalScroll)\n );\n horizontalScroll.addEventListener('mouseup', () =>\n mouseupEventHandler(scroll, horizontalScroll)\n );\n};\n\n/**\n * @category tab\n * @description 가로 스크롤 drag & drop 기능 이벤트 등록 함수\n * @param {HTMLElement} horizontalScroll 가로 스크롤 되는 영역\n * @returns void\n * @example\n * setHorizontalScrollEvent(document.querySelector('.depth3-list'));\n */\nexport const scrollToActivatedTab = (\n activatedTab: HTMLElement,\n activatedTabIndex: number,\n toBeScrolledElement: HTMLElement\n): void => {\n if (\n window.innerWidth > PC_BREAK_POINT ||\n !(activatedTab instanceof HTMLElement) ||\n !(toBeScrolledElement instanceof HTMLElement)\n )\n return;\n toBeScrolledElement.scrollLeft = getTabWidth(\n activatedTab,\n activatedTabIndex,\n 1,\n IS_RTL_SERVICE\n );\n};\n\n/**\n * @category tab\n * @description 화면 크기가 변경될 때 활성화된 탭을 보여주는 이벤트 등록\n * @param {HTMLElement} horizontalScroll 가로 스크롤 되는 영역\n * @param {HTMLElement} activateTab 활성화된 탭\n * @param {number} activatedTabIndex 활성화된 탭 Index\n * @example\n * setResizeEvent(document.querySelector('.depth3-list'), document.querySelector('.depth3-list-items.selected'), true);\n */\nexport const setResizeEvent = (\n horizontalScroll: HTMLElement,\n activatedTab: HTMLElement,\n activatedTabIndex: number\n): void => {\n const lastTab = horizontalScroll.lastElementChild;\n if (!(lastTab instanceof HTMLElement)) return;\n\n const previousActivatedTabX = getTabWidth(\n activatedTab,\n activatedTabIndex,\n 1,\n IS_RTL_SERVICE\n );\n\n window.addEventListener('resize', () =>\n _resizeEventHandler(\n lastTab,\n horizontalScroll,\n IS_RTL_SERVICE,\n previousActivatedTabX,\n activatedTab,\n activatedTabIndex,\n 0,\n 0\n )\n );\n};\n\n// resize 이벤트 핸들러 함수\nconst _resizeEventHandler = (\n lastTab: HTMLElement,\n horizontalScroll: HTMLElement,\n isRTLService: boolean = false,\n previousActivatedTabX: number,\n activatedTab: HTMLElement,\n activatedTabIndex: number,\n prevMove: number = 0,\n curMove: number = 0\n): void => {\n if (window.innerWidth > PC_BREAK_POINT) return;\n if (!previousActivatedTabX)\n previousActivatedTabX = getTabWidth(\n activatedTab,\n activatedTabIndex,\n 1,\n isRTLService\n );\n\n const _distanceFromBorder = () => {\n return isRTLService\n ? lastTab.getBoundingClientRect().left\n : lastTab.getBoundingClientRect().right - window.innerWidth;\n };\n\n const _resizeStartCondition = () => {\n return isRTLService\n ? _distanceFromBorder() <= 0\n : _distanceFromBorder() >= 0;\n };\n\n if (_resizeStartCondition()) {\n curMove = _distanceFromBorder() - prevMove;\n\n const _nextMoveCondition = () => {\n const nextMove = horizontalScroll.scrollLeft + curMove;\n return isRTLService\n ? nextMove <= previousActivatedTabX\n : nextMove >= previousActivatedTabX;\n };\n\n if (_nextMoveCondition()) {\n horizontalScroll.scrollLeft = previousActivatedTabX;\n } else {\n horizontalScroll.scrollLeft += curMove;\n }\n\n prevMove = _distanceFromBorder();\n }\n};\n\n/**\n * @category tab\n * @description 활성화된 탭의 N칸 전까지의 너비 구하는 함수 (width)\n * @param {HTMLElement} activatedTab 활성화된 탭\n * @param {number} activatedTabIndex 활성화된 탭 Index\n * @param {number} offset N칸 설정\n * @param {boolean} isRTLService RTL 서비스의 적용 유무\n * @returns {number} N칸 전까지의 탭 크기\n * @example\n * getTabWidth(document.querySelector('.depth3-list-items.selected'), 3, 2, true);\n */\nexport const getTabWidth = (\n activatedTab: HTMLElement,\n activatedTabIndex: number,\n offset: number = 1,\n isRTLService: boolean = false\n): number => {\n let previousActivatedTabX = 0;\n if (activatedTabIndex - offset >= 0) offset = 1;\n if (window.innerWidth <= PC_BREAK_POINT && activatedTab.parentElement) {\n for (let i = 0; i < activatedTabIndex - offset; i++) {\n previousActivatedTabX +=\n activatedTab.parentElement.children[i].getBoundingClientRect()\n .width;\n }\n }\n\n return isRTLService ? -1 * previousActivatedTabX : previousActivatedTabX;\n};\n","import {\n setHorizontalSrollEvent,\n setResizeEvent,\n scrollToActivatedTab,\n} from './event/TabEvent';\n\nexport function activateTab(\n $depthListItems: NodeListOf | null,\n activeDepth: Function,\n compareUrl?: string\n): void {\n if (!$depthListItems) return;\n // for문 돌면서 활성화될 tabIndex 찾고, 찾을시 바로 break;\n\n for (let i = 0; i < $depthListItems.length; i++) {\n const $depthListItem = $depthListItems[i];\n const $depthATag = $depthListItem.children[0];\n\n if (\n findActiveHref(\n $depthATag.getAttribute('href') || '/',\n compareUrl || location.pathname,\n $depthATag.getAttribute('data-match-url')?.split(',')\n )\n ) {\n activeDepth($depthListItem, i);\n break;\n }\n }\n}\n\n// 활성화된 탭 찾기\nexport function findActiveHref(\n targetURL: string,\n compareURL: string,\n regexpArr?: (string | RegExp)[]\n) {\n if (\n targetURL === compareURL ||\n regexpArr?.some((url) => new RegExp(url).test(compareURL))\n ) {\n return true;\n }\n return false;\n}\n\nexport const setEventHandlerAndScroll = (\n tabList: HTMLElement,\n activatedTab: HTMLElement,\n activatedTabIndex: number\n) => {\n setHorizontalSrollEvent(tabList);\n setResizeEvent(tabList, activatedTab, activatedTabIndex);\n scrollToActivatedTab(activatedTab, activatedTabIndex, tabList);\n};\n","import { activateTab, setEventHandlerAndScroll } from '../../util';\nimport { ACTIVE_WRAP_CLASS, ACTIVE_ITEMS_CLASS } from '../../constant';\n\nexport default class Depth4 {\n private $depth4Tab = document.querySelector('.depth4-tab');\n private $depth4TabListItems =\n document.querySelectorAll('.depth4-list-items');\n private $depth4ActivatedList: HTMLUListElement | null = null;\n // depth3, depth4 활성화된 탭 찾기 위한 index\n private depth4ActivatedSubTabIndex: number = -1; // 활성화된 뎁스4 리스트의 Index\n private $depth4ActivatedTab: HTMLLIElement | null = null;\n\n public activeTab(\n activateTabForDepth3: (compareUrl?: string) => void\n ): void {\n if (!this.$depth4Tab) return;\n activateTab(\n this.$depth4TabListItems,\n (depth4Element: HTMLLIElement, index: number) =>\n this._activeDepth4(depth4Element, index, activateTabForDepth3)\n );\n }\n private _activeDepth4 = (\n depth4Element: HTMLLIElement,\n index: number,\n activateTabForDepth3: (compareUrl?: string) => void\n ): void => {\n // 활성화된 탭 selected\n depth4Element.classList.add(ACTIVE_ITEMS_CLASS);\n this.$depth4ActivatedTab = depth4Element;\n this.depth4ActivatedSubTabIndex = index;\n\n const $depth4Wrap =\n depth4Element.closest('.depth4-list-wrap')!;\n $depth4Wrap.classList.add(ACTIVE_WRAP_CLASS);\n this.$depth4ActivatedList =\n $depth4Wrap.closest('.depth4-list');\n // depth3 탭을 data-url로 찾음\n activateTabForDepth3($depth4Wrap.getAttribute('data-url') || '');\n };\n // scroll, resize 이벤트 등록\n public setDepthEvent(): void {\n if (\n !this.$depth4Tab ||\n !this.$depth4ActivatedList ||\n !this.$depth4ActivatedTab\n )\n return;\n setEventHandlerAndScroll(\n this.$depth4ActivatedList,\n this.$depth4ActivatedTab,\n this.depth4ActivatedSubTabIndex\n );\n }\n}\n","import { activateTab, setEventHandlerAndScroll } from '../../util';\nimport { ACTIVE_ITEMS_CLASS } from '../../constant';\nimport Depth4Tab from './Depth4Tab';\n\nexport default class Depth3Tab {\n private $depth3List =\n document.querySelector('.depth3-list')!;\n private depth3ActivatedTabIndex: number = -1;\n private $depth3ActivatedTab: HTMLSpanElement | null = null;\n private $depth3TabListItems =\n document.querySelectorAll('.depth3-list-items');\n private depth4: Depth4Tab;\n\n constructor() {\n this.depth4 = new Depth4Tab();\n this.activeTabs();\n this.setDepthEvents();\n }\n private activeTabs(): void {\n // depth4 활성화 후 depth3활성화\n this.depth4.activeTab(this.activeTab.bind(this));\n if (!this.$depth3ActivatedTab) this.activeTab();\n }\n private setDepthEvents(): void {\n this.setDepthEvent();\n this.depth4.setDepthEvent();\n }\n // 활성화 시킬 탭 찾기\n public activeTab(compareUrlInDepth4?: string): void {\n activateTab(\n this.$depth3TabListItems,\n this._activeDepth3.bind(this),\n compareUrlInDepth4\n );\n }\n private _activeDepth3($depth3Element: HTMLSpanElement, index: number) {\n $depth3Element.classList.add(ACTIVE_ITEMS_CLASS);\n this.$depth3ActivatedTab = $depth3Element;\n this.depth3ActivatedTabIndex = index;\n }\n // scroll, resize 이벤트 등록\n public setDepthEvent(): void {\n if (!this.$depth3List || !this.$depth3ActivatedTab) return;\n setEventHandlerAndScroll(\n this.$depth3List,\n this.$depth3ActivatedTab,\n this.depth3ActivatedTabIndex\n );\n }\n}\n","import { ITabConfig } from '../../../interface/ITab';\nimport { setEventHandlerAndScroll } from '../../util';\nimport {\n TAB_SWIPE_CLASS,\n TAB_WRAP_CLASS,\n TAB_LIST_CLASS,\n TAB_LIST_ITEMS_CLASS,\n ACTIVE_ITEMS_CLASS,\n} from '../../constant';\n\nexport default class DepthTab {\n private config: ITabConfig;\n\n constructor(_config: ITabConfig) {\n this.config = _config;\n this.setDepthEvent();\n if (this.config.callbackFunc) this.setCallbackEvent();\n }\n // 활성화된 모든 탭에 스크롤 이벤트 입히기\n public setDepthEvent(): void {\n document\n .querySelectorAll(\n `.${TAB_WRAP_CLASS} .${TAB_LIST_CLASS}`\n )\n .forEach(($tabList) => {\n const activeIndex = Array.from(\n $tabList.querySelectorAll(`.${TAB_LIST_ITEMS_CLASS}`)\n ).findIndex((e) => e.classList.contains(ACTIVE_ITEMS_CLASS));\n\n const $activatedTab = $tabList.querySelector(\n `.${TAB_LIST_ITEMS_CLASS}.${ACTIVE_ITEMS_CLASS}`\n );\n\n if (!$activatedTab) return;\n setEventHandlerAndScroll($tabList, $activatedTab, activeIndex);\n });\n }\n // 콜백 이벤트 등록\n private setCallbackEvent(): void {\n document\n .querySelectorAll(`.${TAB_LIST_ITEMS_CLASS}`)\n ?.forEach((el) => {\n el.addEventListener('click', (e) => {\n if (typeof this.config.callbackFunc !== 'function') return;\n this.config.callbackFunc(e, {\n depth: this.findDepth(el),\n tabIndex: this.findClickedIndex(el),\n href: el.children[0].getAttribute('href'),\n });\n });\n });\n }\n private findDepth(el: HTMLUListElement): number {\n return Number(\n el.closest(`.${TAB_SWIPE_CLASS}`)!.getAttribute('data-depth') ?? ''\n );\n }\n private findClickedIndex(el: HTMLUListElement): number {\n const tablists = el\n .closest(`.${TAB_LIST_CLASS}`)!\n .querySelectorAll(`.${TAB_LIST_ITEMS_CLASS}`);\n return Array.from(tablists).findIndex((listItem) => listItem === el);\n }\n}\n","import { ITabConfig } from '../../../interface/ITab';\nimport { makeElement } from '../../../common/Utils';\nimport { findActiveHref } from '../../util';\nimport {\n PARENT_DEPTH,\n TAB_SWIPE_CLASS,\n TAB_WRAP_CLASS,\n TAB_LIST_CLASS,\n TAB_LIST_ITEMS_CLASS,\n ACTIVE_ITEMS_CLASS,\n} from '../../constant';\nimport DepthTabEvent from './DepthTabEvent';\n\nexport default class DepthTabLayer {\n private config: ITabConfig;\n private $rootHtml: HTMLDivElement | null = null;\n private pathArr: number[] = [];\n private isFindPath: boolean = false;\n\n constructor(_config: ITabConfig) {\n this.config = _config;\n this.setRootHTML();\n this.pathArr = this.findActiveTab(this.config.parent, []);\n this.renderTabs();\n new DepthTabEvent(_config);\n }\n private setRootHTML(): void {\n this.$rootHtml = document.querySelector(\n `.${this.config.rootHTMLClass || 'tab-wrap-contents'}`\n );\n if (!this.$rootHtml) return;\n this.$rootHtml.innerHTML = '';\n }\n // 활성화된 탭 찾기\n // ex) [0, 1, 0]: 뎁스1의 0번째, 뎁스2의 1번째, 뎁스3의 0번째\n private findActiveTab(\n data: ITabConfig['parent'],\n parentIndices: number[]\n ): number[] {\n let parentIndicesOfNodeWithHref = [0]; // 만약에 활성화된 탭이 없을 경우 최상위 뎁스만 활성화하기 위함\n for (let i = 0; i < data.length; i++) {\n const newParentIndices = [...parentIndices, i];\n if (\n findActiveHref(\n data[i].href,\n location.pathname,\n data[i].compareArr\n )\n ) {\n parentIndicesOfNodeWithHref = newParentIndices;\n this.isFindPath = true;\n break;\n }\n\n if (data[i].children) {\n const result = this.findActiveTab(\n data[i].children,\n newParentIndices\n );\n if (result) parentIndicesOfNodeWithHref = result;\n }\n }\n return parentIndicesOfNodeWithHref;\n }\n // 활성화된 탭만 그리기\n private renderTabs(): void {\n let tabData = this.config.parent;\n this.pathArr.forEach((activeIndex, i) => {\n const $depthParent = this.appendDepthWrapperInRoot(\n this.$rootHtml!,\n PARENT_DEPTH + i\n );\n this.renderTabList(\n $depthParent,\n tabData,\n this.isFindPath ? activeIndex : -1\n );\n tabData = tabData[activeIndex]?.children;\n });\n }\n private appendDepthWrapperInRoot = (\n $rootHtml: HTMLDivElement,\n depthLevel: number\n ): HTMLDivElement => {\n const $depthParent = makeElement(\n `
`\n ) as HTMLDivElement;\n $rootHtml.insertAdjacentElement('beforeend', $depthParent);\n return $depthParent;\n };\n private renderTabList = (\n $targetHtml: HTMLDivElement,\n tabItemData: ITabConfig['parent'],\n activeIndex: number\n ): string => {\n const depthWrapperTemplate = `\n
\n
    \n ${this._renderTabItems(tabItemData, activeIndex)}\n
\n
\n `;\n $targetHtml.insertAdjacentHTML('beforeend', depthWrapperTemplate);\n return depthWrapperTemplate;\n };\n private _renderTabItems(\n tabItemData: ITabConfig['parent'],\n activeIndex: number\n ): string {\n return tabItemData\n .map((tabItem, index) => {\n return `\n
  • \n ${\n !!tabItem.img\n ? `\"${tabItem.name}\"\n \"${tabItem.name}\"`\n : tabItem.name\n }\n
  • \n `;\n })\n .join('');\n }\n}\n","import {getCookie} from '../../common/Utils';\nimport {checkCookieArray} from '../../interface/ICommonbanner';\n\nexport const checkCookie = () => {\n let isCookieApply: boolean = false;\n let cookieTypeArr: checkCookieArray = {typeArr: []};\n let checkFunctional: number;\n let lastResult: boolean;\n const htmlEl = document.getElementsByTagName(\"html\")[0];\n const lang = htmlEl.getAttribute('lang')? htmlEl.getAttribute('lang')!.toLocaleLowerCase() : 'ko';\n\n if (lang ==='ko' || (window.userData.site !== 'linw' && window.userData.site !== 'l2mru' && window.userData.site !== 'l2mnu')){\n isCookieApply = true;\n }else{\n cookieTypeArr = getCookie('applyCookie') && JSON.parse(decodeURIComponent(getCookie('applyCookie').toString()));\n checkFunctional = cookieTypeArr?.typeArr?.indexOf('FUNCTIONAL');\n lastResult = (checkFunctional !== undefined) && (checkFunctional > -1);\n isCookieApply = lastResult;\n }\n //console.log('=>COOKIE? isCookieApply : ', isCookieApply );\n\n return isCookieApply;\n\n};\n\n","import { ncBannerOptions } from \"../../interface/ICommonbanner\";\n\ninterface templateInterface{\n (_data:ncBannerOptions): void;\n}\n\ninterface setStartEnd{\n startDate?:string;\n endDate?:string;\n startTime?:string;\n endTime?:string;\n}\n\nexport const setStartEndDateTime = (_data: ncBannerOptions, _nowData:setStartEnd ,template: templateInterface) => { \n \n if(_nowData.startDate || _nowData.endDate){ \n \n let startYears:string | undefined;\n let startMonths:string | undefined; \n let startDays:string | undefined; \n let startHours:string | undefined; \n let startMinutes:string | undefined;\n let endYears:string | undefined;\n let endMonths:string | undefined; \n let endDays:string | undefined; \n let endHours:string | undefined; \n let endMinutes:string | undefined;\n\n if(_nowData.startDate){ \n startYears = _nowData.startDate?.substring(0,4);\n startMonths = _nowData.startDate?.substring(5,7);\n startDays = _nowData.startDate?.substring(8,10);\n if(_nowData.startTime){\n startHours = _nowData.startTime?.substring(0,2);\n startMinutes = _nowData.startTime?.substring(3,5); \n }else{ \n return;\n } \n }\n if(_nowData.endDate){ \n endYears = _nowData.endDate?.substring(0,4);\n endMonths = _nowData.endDate?.substring(5,7);\n endDays = _nowData.endDate?.substring(8,10);\n if(_nowData.endTime){\n endHours = _nowData.endTime?.substring(0,2);\n endMinutes = _nowData.endTime?.substring(3,5); \n }else{ \n return;\n } \n } \n \n const startday = new Date(`${startYears}-${startMonths}-${startDays}T${startHours}:${startMinutes}:00+09:00`).getTime(); \n const endday = new Date(`${endYears}-${endMonths}-${endDays}T${endHours}:${endMinutes}:00+09:00`).getTime(); \n const today = new Date(window.userData.now).getTime(); \n \n const startResult = (startday - today) < 0; \n const endResult = (endday - today) < 0; \n\n if(startday > endday){ \n return;\n }\n\n if(startResult){\n if(endResult){ \n return;\n } \n template(_data); \n }else{ \n if(!isNaN(endday) && !endResult){ \n if(!isNaN(startday)){ \n return;\n }else{ \n template(_data); \n } \n }\n } \n }else{ \n template(_data); \n }\n \n}","import {addClass, getCookie, makeElement, removeClass, setCookie} from '../../common/Utils';\nimport { ncBannerOptions } from '../../interface/ICommonbanner';\nimport {checkCookie} from './checkCookie';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n/**\n * @category Commonbanner\n * @description\n * 플로팅 배너\n * 서브페이지에서만 노출\n * 닫기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n */\n\nclass FloatingLayer{\n isCookieApply: boolean; \n bannerEl!: HTMLElement;\n el!: HTMLElement; \n constructor(_isMain: boolean = false, _isLauncher:boolean = false, _data:ncBannerOptions) {\n\n this.isCookieApply = checkCookie();\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.floatingBanner.Cookie);\n\n if( _isMain || !_data.floatingBanner.show || thisIsCookieApply ){\n return;\n }\n\n if ( _isLauncher && !_data.floatingBanner.LauncherShow) {\n return;\n }\n\n setStartEndDateTime(_data, _data.floatingBanner, this.templateFloating.bind(this)); \n } \n\n templateFloating(_data: ncBannerOptions){\n\n this.bannerEl = this.template(_data) ;\n\n document.body.appendChild( this.bannerEl );\n this.addEvents(_data);\n\n setTimeout(()=> {\n addClass( this.bannerEl , 'is-show');\n }, 1000);\n }\n\n template(_data: ncBannerOptions){\n this.el = makeElement( `\n
    \n ${_data.floatingBanner.Link != ''?`\n \n ${_data.floatingBanner.Title}\n \n ` :`\n \n ${_data.floatingBanner.Title}\n \n `}\n \n
    \n ` );\n\n return this.el;\n }\n\n addEvents(_data:ncBannerOptions){\n const dataTypeFloating = document.querySelector(\".nc-banner[data-type=floating]\") as HTMLElement;\n document.querySelector(\".nc-banner[data-type=floating] .nc-banner-close\")?.addEventListener('click', e =>{\n if(this.isCookieApply) {\n setCookie('ncBanner'+_data.floatingBanner.Cookie, \"true\", 100, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.floatingBanner.Cookie, \"true\", 100, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.floatingBanner.Cookie, \"true\", 100, '.plaync.com'); // 쿠키 사용\n }\n removeClass(dataTypeFloating, 'is-show');\n });\n }\n\n}\nexport default FloatingLayer;","import {addClass, getCookie, makeElement, removeClass, setCookie} from '../../common/Utils';\nimport { ncBannerOptions } from '../../interface/ICommonbanner';\nimport {checkCookie} from './checkCookie';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n/**\n * @category Commonbanner\n * @description\n * 플로팅 배너\n * 서브페이지에서만 노출\n * 닫기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n */\n\nclass MainFloatingLayer {\n isCookieApply: boolean; \n bannerEl!: HTMLElement;\n el!: HTMLElement; \n\n constructor(_isMain: boolean = false, _isLauncher: boolean = false, _data:ncBannerOptions) {\n\n this.isCookieApply = checkCookie(); \n\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.mainFloatingBanner.Cookie);\n\n if( !_isMain || !_data.mainFloatingBanner.show || thisIsCookieApply ){\n return;\n }\n\n if ( _isLauncher && !_data.mainFloatingBanner.LauncherShow) {\n return;\n }\n\n setStartEndDateTime(_data, _data.mainFloatingBanner, this.templateMainFloating.bind(this)); \n } \n\n templateMainFloating(_data: ncBannerOptions){\n this.bannerEl = this.template( _data ) ;\n\n document.body.appendChild( this.bannerEl );\n this.addEvents(_data);\n\n setTimeout(()=> {\n addClass( this.bannerEl , 'is-show');\n }, 1000);\n }\n\n template(_data: ncBannerOptions){\n this.el = makeElement( `\n
    \n ${_data.mainFloatingBanner.Link != ''?`\n \n ${_data.mainFloatingBanner.Title}\n \n ` :`\n \n ${_data.mainFloatingBanner.Title}\n \n `}\n \n
    \n ` );\n\n return this.el;\n }\n\n addEvents(_data: ncBannerOptions){ \n const dataTypeFloating = document.querySelector(\".nc-banner[data-type=floating]\") as HTMLElement;\n document.querySelector(\".nc-banner[data-type=floating] .nc-banner-close\")?.addEventListener('click', e =>{\n if(this.isCookieApply) {\n setCookie('ncBanner'+_data.mainFloatingBanner.Cookie, \"true\", _data.mainFloatingBanner.CookieExpiredays, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.mainFloatingBanner.Cookie, \"true\", _data.mainFloatingBanner.CookieExpiredays, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.mainFloatingBanner.Cookie, \"true\", _data.mainFloatingBanner.CookieExpiredays, '.plaync.com');\n }\n removeClass( dataTypeFloating , 'is-show');\n });\n }\n\n}\nexport default MainFloatingLayer;","import {mergeDeep, makeElement, addClass, removeClass, uniqueID} from '../../common/Utils';\nimport {ncBannerModalOptions} from '../../interface/ICommonbanner';\n\nexport default class AbsModal {\n static TYPE_MODAL = 'modal';\n static TYPE_TOAST = 'toast';\n\n type: string = '';\n isShowModal:boolean = false;\n modalEl!: HTMLElement;\n backdropEl!: HTMLElement;\n priBtn!: HTMLElement | null;\n secBtn!: HTMLElement | null;\n closeBtn!: HTMLElement | null;\n autoCloseTimeOut!: ReturnType | null;;\n initialOptions = {\n title: '',\n contents: '',\n className: '',\n primaryBtnText: '확인',\n cancelBtnText: '취소',\n usePrimaryBtn: true,\n useCancelBtn: true,\n useBackdropClickClose: true,\n useEscKeyClose: true,\n useEnterKeyClose: true,\n mobileFull: false,\n autoClose: 0,\n useBlur: true,\n position: 'center', // 'top', 'bottom'\n site: window.userData?.site || 'plaync',\n id: uniqueID('nc-modal_'),\n willOpen: ()=>{},\n didClose: ()=>{},\n };\n\n constructor(){}\n \n options!: ncBannerModalOptions;\n optionsSetting(_options={}){\n this.options = mergeDeep(this.initialOptions, _options); \n\n }\n \n makeBackdropEl(){\n this.backdropEl = makeElement( `
    ` );\n document.body.appendChild( this.backdropEl );\n }\n\n makeModalEl(){ \n this.modalEl = this.template() as unknown as HTMLElement; \n document.body.appendChild( this.modalEl ); \n }\n\n setBtns(){ \n this.priBtn = this.modalEl!.querySelector(\".nc-modal__btn--pri\");\n this.secBtn = this.modalEl!.querySelector(\".nc-modal__btn--sec\");\n this.closeBtn = this.modalEl!.querySelector(\".nc-modal__close\");\n }\n\n addEvents(){\n document.addEventListener('keydown', (event) => {\n if (this.isShowModal && this.options.useEscKeyClose && event.keyCode === 27) { // escape\n this.close(false);\n }\n if (this.isShowModal && this.options.useEnterKeyClose && event.keyCode === 13) { // Enter\n this.close(true);\n }\n }, false);\n\n this.priBtn?.addEventListener('click', (e: Event) => this.close(true));\n this.secBtn?.addEventListener('click', (e: Event) => this.close(false));\n this.closeBtn?.addEventListener('click', (e: Event) => this.close(false));\n\n if (this.options.useBackdropClickClose) {\n this.modalEl?.addEventListener('click', (e: Event) =>{\n if( e.currentTarget == e.target ){\n this.close(false);\n }\n });\n }\n }\n\n \n template(){ \n const temp = `\n
    \n
    \n
    \n
    \n
    ${this.options.title}
    \n
    \n
    ${this.options.contents}
    \n
    \n
    \n
    \n
    `;\n return temp; \n }\n\n open(){\n if (this.isShowModal) return;\n this.isShowModal = true;\n this.options.willOpen?.();\n\n if (this.type !== AbsModal.TYPE_TOAST) {\n addClass( document.body, 'modal-open');\n }\n\n setTimeout(() => {\n addClass( this.modalEl, 'nc-modal--show');\n addClass( this.backdropEl, 'nc-backdrop--show');\n }, 1);\n \n setTimeout(() => {\n this.modalEl?.setAttribute( 'tabindex', \"0\" );\n this.modalEl?.focus();\n }, 100); \n\n if (this.options.autoClose!>100) {\n this.autoCloseTimeOut = setTimeout(() => this.close(false), this.options.autoClose);\n }\n }\n \n close(_result: boolean = true){\n if (!this.isShowModal) return;\n this.isShowModal = false;\n if (this.type !== AbsModal.TYPE_TOAST) {\n removeClass( document.body, 'modal-open' );\n }\n removeClass( this.modalEl, 'nc-modal--show');\n removeClass( this.backdropEl, 'nc-backdrop--show');\n\n if(this.autoCloseTimeOut)\n clearTimeout(this.autoCloseTimeOut);\n this.autoCloseTimeOut = null; \n \n this.options.didClose?.(_result);\n }\n\n} // end of class\n// TODO : 동영상 기능 추가\n","import AbsModal from './AbsModal';\nimport {makeElement} from '../../common/Utils';\n\nexport default class Modal extends AbsModal{ \n\n constructor(_options={}){\n super();\n this.type = AbsModal.TYPE_MODAL;\n this.optionsSetting(_options);\n this.makeBackdropEl();\n this.makeModalEl();\n this.setBtns();\n this.addEvents();\n }\n\n template(): string{ \n\n const temp = makeElement(super.template()); \n\n const closeBtnTmpl = makeElement( `\n ` ); \n\n \n const footerBtnTmpl = makeElement( `\n
    \n \n \n
    ` ); \n \n\n temp.querySelector('.nc-modal__header')?.appendChild(closeBtnTmpl);\n temp.querySelector('.nc-modal__footer')?.appendChild(footerBtnTmpl); \n \n \n const result = temp as unknown as string; \n return result; \n }\n} // end of class","export type Language = {\n myCharList: {\n loginTime: string;\n };\n commonBanner: {\n close: string;\n stop_watching: string;\n };\n autoSuggest: {\n deleteAllRecent: string;\n noRecentSearchHistory: string;\n }\n};\n\nexport type AllLang = {\n [propName: string]: Language;\n};\n\nexport const l10nAllLang: AllLang = {\n ko: {\n myCharList: {\n loginTime: '접속',\n },\n commonBanner: {\n stop_watching: '그만보기',\n close: '닫기',\n },\n autoSuggest: {\n deleteAllRecent: '최근 검색어 전체 삭제',\n noRecentSearchHistory: '최근 검색어 내역이 없습니다.',\n },\n },\n zh: {\n myCharList: {\n loginTime: '連線',\n },\n commonBanner: {\n stop_watching: '不再顯示',\n close: '關閉',\n },\n autoSuggest: {\n deleteAllRecent: '刪除近期所有關鍵字',\n noRecentSearchHistory: '沒有最近的查詢關鍵字。',\n },\n },\n ja: {\n myCharList: {\n loginTime: '接続',\n },\n commonBanner: {\n stop_watching: '表示しない',\n close: '閉じる',\n },\n autoSuggest: {\n deleteAllRecent: '検索ワード履歴削除',\n noRecentSearchHistory: '最近の検索ワードはありません。',\n },\n },\n en: {\n myCharList: {\n loginTime: 'Login',\n },\n commonBanner: {\n stop_watching: 'Do not show again.',\n close: 'Close',\n },\n autoSuggest: {\n deleteAllRecent: 'Delete All Recent Searches',\n noRecentSearchHistory: 'No recent search history.',\n },\n },\n th: {\n myCharList: {\n loginTime: 'เชื่อมต่อ',\n },\n commonBanner: {\n stop_watching: 'ไม่แสดงอีก',\n close: 'ปิด',\n },\n autoSuggest: {\n deleteAllRecent: 'ลบคำค้นหาล่าสุดทั้งหมด',\n noRecentSearchHistory: 'ไม่มีข้อมูลคำค้นหาล่าสุด',\n },\n },\n ru: {\n myCharList: {\n loginTime: 'Войти',\n },\n commonBanner: {\n stop_watching: 'Больше не показывать',\n close: 'Закрыть',\n },\n autoSuggest: {\n deleteAllRecent: 'Удалить историю поиска',\n noRecentSearchHistory: 'Отсутствует история поиска.',\n },\n },\n id: {\n myCharList: {\n loginTime: 'Sambungkan',\n },\n commonBanner: {\n stop_watching: 'Jangan tampilkan',\n close: 'Tutup',\n },\n autoSuggest: {\n deleteAllRecent: 'Hapus Riwayat Pencarian Terbaru',\n noRecentSearchHistory: 'Tidak ada riwayat pencarian terbaru.',\n },\n },\n ar: {\n myCharList: {\n loginTime: 'تسجيل الدخول',\n },\n commonBanner: {\n stop_watching: 'لا تظهر مرة أخرى.',\n close: 'أغلق',\n },\n autoSuggest: {\n deleteAllRecent: 'حذف كل مصطلحات البحث الحديثة',\n noRecentSearchHistory: 'لا يوجد تفاصيل بحث حديثة.',\n },\n },\n};\n","import {getCookie, getLang, setCookie} from '../../common/Utils';\nimport Modal from '../modal/Modal';\nimport {checkCookie} from './checkCookie';\nimport {ncBannerOptions} from '../../interface/ICommonbanner';\nimport { l10nAllLang } from '../../common/L10n';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n\n/**\n * @category Commonbanner\n * @description\n * 이미지 배너\n * 메인페이지에서만 노출\n * 그만보기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n */\n\n\nclass ImageLayer {\n isCookieApply: boolean; \n\n constructor(_isMain: boolean = false, _isLauncher:boolean = false, _data:ncBannerOptions) {\n\n this.isCookieApply = checkCookie();\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.imageBanner.Cookie); \n\n if( !_isMain || !_data.imageBanner.show || thisIsCookieApply){\n return;\n }\n\n if ( _isLauncher && !_data.movieBanner.LauncherShow) {\n return;\n }\n\n setStartEndDateTime(_data, _data.imageBanner, this.templateImage.bind(this)); \n } \n\n templateImage(_data: ncBannerOptions){\n let customClassName = ( _data.imageBanner.OrientationVertical)? 'imgBannerVertical' : '' ;\n\n\t let lang = getLang() || 'en';\t\n let l10n = l10nAllLang[lang].commonBanner;\n\n let ncBannerModalImage = new Modal({\n \n id: 'NC-banner-modal',\n className: customClassName,\n contents: `\n ${_data.imageBanner.Link != ''?`\n ${_data.imageBanner.LinkNewWindow ? `\n
    \n ` :`\n
    \n `}\n `\n : `\n
    \n `}`,\n primaryBtnText: l10n.stop_watching,\n cancelBtnText: l10n.close,\n willOpen: ()=>{},\n didClose: (_result:boolean)=>this.addEvents( _result, _data )\n }); \n\n ncBannerModalImage.open();\n }\n \n addEvents(_result: boolean, _data:ncBannerOptions ){ \n if(_result) {\n if(this.isCookieApply){\n setCookie('ncBanner'+_data.imageBanner.Cookie, \"true\", 100, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.imageBanner.Cookie, \"true\", 100, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.imageBanner.Cookie, \"true\", 100, '.plaync.com'); // 쿠키 사용\n } \n }\n }\n\n}\nexport default ImageLayer;","import {getCookie, getLang, setCookie} from '../../common/Utils';\nimport Modal from '../modal/Modal';\nimport {checkCookie} from './checkCookie';\nimport { ncBannerOptions} from '../../interface/ICommonbanner';\nimport { l10nAllLang } from '../../common/L10n';\nimport { setStartEndDateTime } from '../utils/Utils';\n/**\n * @category Commonbanner\n * @description\n * 영상 배너\n * 메인페이지에서만 노출\n * 단, 이미지 레이어가 활성화 되어 있으면 노출 하지 않음\n * 그만보기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n * youtube 인지 CDN 영상인지 체크 후 contents 값 다르게 호출\n */\n\nclass MovieLayer {\n isCookieApply: boolean;\n constructor(_isMain: boolean = false, _isLauncher: boolean = false, _data: ncBannerOptions) {\n\n this.isCookieApply = checkCookie();\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.movieBanner.Cookie);\n\n if( !_isMain || !_data.movieBanner.show || thisIsCookieApply || _data.imageBanner.show){ \n return;\n }\n\n if ( _isLauncher && !_data.movieBanner.LauncherShow) {\n return;\n }\n\n setStartEndDateTime(_data, _data.movieBanner, this.templateMovie.bind(this));\n \n } \n\n templateMovie(_data: ncBannerOptions){\n let contents;\n if( _data.movieBanner.CDN) {\n contents = '';\n } else {\n if(_data.movieBanner.youtubeID != '') {\n contents = '';\n } else {\n contents = '';\n }\n\n }\n\n\t let lang = getLang() || 'en';\t\n let l10n = l10nAllLang[lang].commonBanner;\n \n let ncBannerModalMovie = new Modal({\n id: 'NC-banner-movie',\n contents: contents,\n primaryBtnText: l10n.stop_watching,\n cancelBtnText: l10n.close,\n willOpen: ()=>{},\n didClose: (_result: boolean)=>this.addEvents( _result, _data )\n });\n\n ncBannerModalMovie.open();\n }\n\n addEvents(_result: boolean, _data: ncBannerOptions){\n const movieBody = document.querySelector('#NC-banner-movie .nc-modal__body');\n if(_result) {\n if(this.isCookieApply){\n setCookie('ncBanner'+_data.movieBanner.Cookie, \"true\", 100, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.movieBanner.Cookie, \"true\", 100, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.movieBanner.Cookie, \"true\", 100, '.plaync.com');\n }\n }\n if(movieBody != undefined){\n movieBody.innerHTML='';\n } \n }\n\n}\nexport default MovieLayer;","import {addClass, getCookie, makeElement, removeClass, setCookie} from '../../common/Utils';\nimport { ncBannerOptions } from '../../interface/ICommonbanner';\nimport {checkCookie} from './checkCookie';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n/**\n * @category Commonbanner\n * @description\n * 토스트 배너\n * 서브페이지에서만 노출\n * 단, 플로팅 배너가 활성화 되어 있으면 노출 하지 않음\n * 닫기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n */\n\nclass ToastLayer {\n isCookieApply: boolean; \n bannerEl!: HTMLElement;\n el!: HTMLElement; \n\n constructor(_isMain: boolean = false, _isLauncher:boolean = false, _data:ncBannerOptions) {\n this.isCookieApply = checkCookie();\n \n // console.log( '=> ToastLayer.js constructor: checkCookie() : ', checkCookie() , this.isCookieApply);\n\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.toastBanner.Cookie);\n\n if( _isMain || !_data.toastBanner.show || thisIsCookieApply || _data.floatingBanner.show){\n return;\n }\n\n if ( _isLauncher && !_data.toastBanner.LauncherShow ) {\n return;\n }\n\n setStartEndDateTime(_data, _data.toastBanner, this.templateToast.bind(this)); \n\n \n } \n\n templateToast(_data: ncBannerOptions){\n this.bannerEl = this.template( _data ) ;\n\n document.body.appendChild( this.bannerEl );\n this.addEvents(_data);\n\n setTimeout(()=> {\n addClass( this.bannerEl , 'is-show');\n }, 1000);\n }\n\n template(_data: ncBannerOptions){\n this.el = makeElement( `\n\n
    \n ${_data.toastBanner.Link != ''?`\n \n
    \n
    ${_data.toastBanner.Lable}
    \n ${_data.toastBanner.Title}\n ${_data.toastBanner.SubTitle}\n
    \n
    \n ` : `\n \n
    \n
    ${_data.toastBanner.Lable}
    \n ${_data.toastBanner.Title}\n ${_data.toastBanner.SubTitle}\n
    \n
    \n `}\n\n\n \n
    \n ` );\n\n return this.el;\n }\n\n\n addEvents(_data: ncBannerOptions){ \n const dataTypeToast = document.querySelector(\".nc-banner[data-type=toast]\") as HTMLElement;\n document.querySelector(\".nc-banner[data-type=toast] .nc-banner-close\")?.addEventListener('click', e =>{\n\n // console.log( '=> ToastLayer.js constructor: this.isCookieApply : ', this.isCookieApply );\n if(this.isCookieApply){\n setCookie('ncBanner'+_data.toastBanner.Cookie, \"true\", 100, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.toastBanner.Cookie, \"true\", 100, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.toastBanner.Cookie, \"true\", 100, '.plaync.com');\n }\n removeClass( dataTypeToast , 'is-show');\n });\n }\n\n}\nexport default ToastLayer;","import {addClass, getCookie, makeElement, removeClass, setCookie} from '../../common/Utils';\nimport { ncBannerOptions } from '../../interface/ICommonbanner';\nimport {checkCookie} from './checkCookie';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n/**\n * @category Commonbanner\n * @description\n * 토스트 배너\n * 메인페이지에서만 노출\n * 닫기 클릭 -> 브라우저 쿠키가 삭제 되기 전까지 팝업 안됨\n */\n\nclass MainToastLayer {\n isCookieApply: boolean; \n bannerEl!: HTMLElement;\n el!: HTMLElement;\n \n constructor(_isMain: boolean = false, _isLauncher:boolean = false, _data:ncBannerOptions) {\n\n this.isCookieApply = checkCookie();\n let thisIsCookieApply = this.isCookieApply && getCookie(_data.mainToastBanner.Cookie);\n\n if( !_isMain || !_data.mainToastBanner.show || thisIsCookieApply || _data.mainFloatingBanner.show){\n return;\n }\n\n if ( _isLauncher && !_data.mainToastBanner.LauncherShow ) {\n return;\n }\n\n setStartEndDateTime(_data, _data.mainToastBanner, this.templateMainToast.bind(this)); \n } \n\n templateMainToast(_data: ncBannerOptions){\n this.bannerEl = this.template( _data ) ;\n\n document.body.appendChild( this.bannerEl );\n this.addEvents(_data);\n\n setTimeout(()=> {\n addClass( this.bannerEl , 'is-show');\n }, 1000);\n }\n\n template(_data: ncBannerOptions){\n this.el = makeElement( `\n\n
    \n ${_data.mainToastBanner.Link != ''?`\n \n
    \n
    ${_data.mainToastBanner.Lable}
    \n ${_data.mainToastBanner.Title}\n ${_data.mainToastBanner.SubTitle}\n
    \n
    \n ` : `\n \n
    \n
    ${_data.mainToastBanner.Lable}
    \n ${_data.mainToastBanner.Title}\n ${_data.mainToastBanner.SubTitle}\n
    \n
    \n `}\n\n\n \n
    \n ` );\n\n return this.el;\n }\n\n\n addEvents(_data: ncBannerOptions){ \n const dataTypeToast = document.querySelector(\".nc-banner[data-type=toast]\") as HTMLElement;\n document.querySelector(\".nc-banner[data-type=toast] .nc-banner-close\")?.addEventListener('click', e =>{\n if(this.isCookieApply){\n setCookie('ncBanner'+_data.mainToastBanner.Cookie, \"true\", _data.mainToastBanner.CookieExpiredays, '.ncsoft.com'); // 쿠키 사용 (lineage2m nct)\n setCookie('ncBanner'+_data.mainToastBanner.Cookie, \"true\", _data.mainToastBanner.CookieExpiredays, '.ncsoft.jp'); // 쿠키 사용 (lineage2m ncj)\n setCookie('ncBanner'+_data.mainToastBanner.Cookie, \"true\", _data.mainToastBanner.CookieExpiredays, '.plaync.com');\n }\n removeClass( dataTypeToast , 'is-show');\n });\n }\n\n}\nexport default MainToastLayer;","import {addClass, makeElement} from '../../common/Utils';\nimport { ncBannerOptions } from '../../interface/ICommonbanner';\nimport { setStartEndDateTime } from '../utils/Utils';\n\n/**\n * @category Commonbanner\n * @description\n * 상단 띠배너 배너\n * 메인페이지에서만 노출\n * D-DAY 표시 및 버튼 노출 기능\n */\n\nclass TopLayer { \n bannerEl!: HTMLElement;\n el!: HTMLElement; \n \n constructor(_isMain: boolean = false, _isLauncher: boolean = false, _data: ncBannerOptions) {\n\n if( !_isMain || !_data.topBanner.show){\n return;\n }\n\n if ( _isLauncher && !_data.topBanner.LauncherShow) {\n return;\n } \n\n setStartEndDateTime(_data, _data.topBanner, this.templateDate.bind(this)); \n\n // todo. 저해상도에서 위치를 잘 잡지 못해 cnb 호출\n //window.cnb && window.cnb.start( cnbConfig ); \n window.cnb && window.cnb.startconfig; \n } \n\n templateDate(_data: ncBannerOptions){ \n if(_data.topBanner.show){\n if(_data.topBanner.ddayShow && _data.topBanner.ddayDate) { \n const dday = new Date(parseInt(_data.topBanner.ddayDate.substring(0,4)), parseInt(_data.topBanner.ddayDate.substring(4,6))-1, parseInt(_data.topBanner.ddayDate.substring(6,8)));\n const dayNow = new Date();\n const timeDiff = dday.getTime() - dayNow.getTime();\n const dayDiff = Math.ceil(timeDiff/(1000 * 60 * 60 * 24)); \n \n if(dayDiff < 0) { \n return;\n } \n\n this.bannerEl = this.template(_data);\n document.body.insertBefore( this.bannerEl, document.body.childNodes[0]); \n \n const ncbannerdate = document.querySelector('.nc-banner-date') as HTMLElement;\n const bannerdatenum = document.querySelector('.banner-date-num') as HTMLElement; \n \n if(dayDiff === 0) {\n if(this._isLangJa){\n ncbannerdate.style.display = 'none'\n }else{\n bannerdatenum.innerHTML = 'DAY';\n }\n } else {\n bannerdatenum.innerHTML = String(dayDiff);\n } \n addClass( this.bannerEl , 'is-show'); \n\n }else{\n this.bannerEl = this.template(_data);\n document.body.insertBefore( this.bannerEl, document.body.childNodes[0]); \n addClass( this.bannerEl , 'is-show'); \n } \n } \n }\n\n template(_data: ncBannerOptions){ \n this.el = makeElement( `\n \n ` );\n\n return this.el;\n }\n\n _templateDDay(_data: ncBannerOptions){\n // 일본 표기법\n if(this._isLangJa){\n return `あと`;\n // 그외 표기법\n }else{\n return `D-`;\n }\n }\n\n get _isLangJa(){ \n return document.querySelector('html')?.getAttribute('lang') === 'ja' || window.userData?.site === 'l2mncj'\n }\n\n}\nexport default TopLayer;","import FloatingLayer from './FloatingLayer';\nimport MainFloatingLayer from './MainFloatingLayer';\nimport ImageLayer from './ImageLayer';\nimport MovieLayer from './MovieLayer';\nimport ToastLayer from './ToastLayer';\nimport MainToastLayer from './MainToastLayer';\nimport TopLayer from './TopLayer';\nimport {ICommonbannerConfig, ncBannerOptions} from '../../interface/ICommonbanner';\n\n/**\n * @category Commonbanner\n * @description\n * RWD 공통 배너 5종\n * 상단 띠배너\n * 이미지 배너\n * 영상 배너\n * 플로팅 배너\n * 토스트 배너\n */\nclass NcBanner {\n data: ncBannerOptions;\n url:string;\n constructor(_config: ICommonbannerConfig) {\n this.data = _config.ncBanner; \n this.url = _config.wstatic;\n this.init();\n }\n \n init(){\n // 현재 페이지가 메인인지 확인 body 태그에 class명으로 체크\n // page-index : 리니지2\n // page-main : 블소, 아이, 리니지, 리니지2M\n // main : 리니지M,H2\n // 미정 : 트릭스터M\n const isMain = document.body.classList.contains('page-main') || document.body.classList.contains('page-index') || document.body.classList.contains('main');\n const isLauncher = document.body.classList.contains('launcher');\n\n // 메인페이지 이면 상단띠배너, 영상배너, 이미지배너, 메인 플로팅배너, 메인 토스트배너 노출\n // 메인페이지가 아니면(서브페이지) 서브 플로팅배너, 서브 토스트배너 노출\n new MovieLayer( isMain, isLauncher, this.data);\n new ImageLayer( isMain, isLauncher, this.data);\n new TopLayer( isMain, isLauncher, this.data); \n\n new ToastLayer( isMain, isLauncher, this.data );\n new MainToastLayer( isMain, isLauncher, this.data );\n new FloatingLayer( isMain, isLauncher, this.data );\n new MainFloatingLayer( isMain, isLauncher, this.data ); \n\n } \n \n}\n\nexport default NcBanner;\n","import { ICharacterItem, ICharacterInfo } from '../interface/IMyCharList';\nimport { l10nAllLang } from '../common/L10n';\nimport { getLang } from '../common/Utils';\n\nexport const _getCharacterInfoByService = ({ level, characterName, name, classCardName, gameClassName, className, guildName, clan, companyName, lastLoginDate, loginTime, loginTimeZ }: ICharacterItem): string => {\n const serviceName = document.getElementsByTagName('html')[0].getAttribute('data-service');\n let lastAccess = '';\n\n if (serviceName === 'bns2') {\n return _markupCharacterInfo({ level, name: characterName, guild: guildName });\n } else if (serviceName === 'tricksterm') {\n return _markupCharacterInfo({ level, name: characterName, classcard: className, guild: companyName });\n } else if (serviceName === 'lineage2m' || serviceName === 'lineage2mnaeu' || serviceName === 'lineage2mru' || serviceName === 'lineage2mnct' || serviceName === 'lineage2mncj') {\n lastAccess = _getLastAccess(serviceName, loginTimeZ);\n return _markupCharacterInfo({ level, name, classcard: classCardName, guild: clan ? clan.name : '', lastAccess });\n } else if (serviceName === 'lineagew') {\n return _markupCharacterInfo({ level, name: characterName, classcard: gameClassName, guild: clan ? clan.name : '' });\n } else if (serviceName === 'lineagem') {\n lastAccess = _getLastAccess(serviceName, lastLoginDate);\n return _markupCharacterInfo({ level, name, guild: clan ? clan.name : '', lastAccess });\n } else {\n return _markupCharacterInfo({ level, name: characterName });\n }\n};\n\nconst _markupCharacterInfo = ({ level, name, classcard, guild, lastAccess }: ICharacterInfo): string => {\n return `\n ${parseInt(level) > 0 ? `LV. ${level}` : ''}\n ${name ? `${name}` : ''}\n ${classcard ? `${classcard}` : ''}\n ${guild ? `${guild}` : ''}\n ${lastAccess ? `${lastAccess}` : ''}`;\n};\n\nconst _getLastAccess = (serviceName: string, lastAccessTime: string): string => {\n // const year = parseInt(lastAccessTime.split(' ')[0].split('-')[0]);\n // const month = lastAccessTime.split(' ')[0].split('-')[1];\n // const day = lastAccessTime.split(' ')[0].split('-')[2];\n const date = new Date(lastAccessTime);\n const year = date.getFullYear();\n const month = ('0' + (1 + date.getMonth())).slice(-2);\n const day = ('0' + date.getDate()).slice(-2);\n\n const lang = getLang() || 'en';\n const loginTime = l10nAllLang[lang].myCharList.loginTime;\n\n if (serviceName === 'lineagem') {\n if (year > 1970) return `(${year}.${month}.${day}.${loginTime})`;\n else return '';\n } else return `(${year}.${month}.${day}. ${loginTime})`;\n};\n","import axios from 'axios';\nimport qs from 'qs';\nimport { IMyCharListConfig, ICharacterList, ICharacterItem } from '../interface/IMyCharList';\nimport { _getCharacterInfoByService } from './characterInfo';\n\n/**\n * @alias MyCharList\n * @category MyCharList\n * @param localeCountry {string} - optional\n * @example\n * if (window.ncui && window.ncui.myCharList) {\n * const myCharList = new window.ncui.myCharList({ localeCountry: 'kr' });\n * cnbConfig.charChangeFN = myCharList.setCharacterChangeFunction.bind(myCharList);\n * }\n */\n\nexport default class Index {\n private ApiUrl: string;\n private onRequest: boolean;\n\n constructor({ localeCountry }: IMyCharListConfig) {\n // console.log('-------MyCharList START-------', _config);\n this.ApiUrl = `${location.origin}${localeCountry ? `/${localeCountry}` : ''}/my/profile`;\n this.onRequest = false;\n }\n\n // 캐릭터 리스트 불러오는 함수\n public async setCharacterChangeFunction(): Promise {\n try {\n const { data } = await axios.get(`${this.ApiUrl}/characters`);\n const characterWrapper = document.querySelector('.ncc-character-panel .ncc-character-list');\n if (!(characterWrapper instanceof HTMLUListElement)) return;\n characterWrapper.innerHTML = this.markupCharacterList(data);\n this.setSelectCharacterEvent();\n } catch (error) {\n console.log(error);\n }\n }\n\n private markupCharacterList(charcterList: ICharacterList): string {\n let characterListElement = '';\n Object.values(charcterList).forEach((characters) => {\n let characterItem = '';\n characters.forEach((character: ICharacterItem, index) => {\n if (index === 0) characterItem += `
  • ${character.serverName}`;\n const characeterItem = `\n
      \n
    • \n
      \n \n \n ${_getCharacterInfoByService(character)}\n \n \n
      \n
    • \n
    `;\n characterItem += characeterItem;\n });\n characterListElement += characterItem + '
  • ';\n });\n return characterListElement;\n }\n\n // [data-setuserrepresentativeinfo-serverid]를 가진 태그에 클릭 이벤트\n private setSelectCharacterEvent(): void {\n document.querySelectorAll('[data-setuserrepresentativeinfo-serverid]').forEach((characterElement: Element) => {\n characterElement.addEventListener('click', () => this._selectCharacterEventHandler(characterElement));\n });\n }\n\n // 캐릭터 클릭시 호출하는 API\n private async _selectCharacterEventHandler(characterElement: Element): Promise {\n if (this.onRequest) return;\n try {\n this.onRequest = true;\n await axios.post(\n `${this.ApiUrl}/userRepresentativeInfo`,\n qs.stringify({\n serverId: characterElement.getAttribute('data-setUserRepresentativeInfo-serverId'),\n characterId: characterElement.getAttribute('data-setUserRepresentativeInfo-characterid'),\n }),\n {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n }\n );\n location.reload();\n } catch (error) {\n console.log(error);\n }\n }\n} // end of class\n","import {IChangeLanguage, IFooterL10n} from \"../interface/IFooter\";\nimport ko from './l10n/ko';\nimport zh from './l10n/zh';\nimport ja from './l10n/ja';\nimport en from './l10n/en';\nimport th from './l10n/th';\nimport ru from './l10n/ru';\nimport id from './l10n/id';\nimport ar from './l10n/ar';\n\nexport const footerL10n: IFooterL10n = {\n ko: ko,\n zh: zh,\n ja: ja,\n en: en,\n th: th,\n ru: ru,\n id: id,\n ar: ar,\n};\n\nexport const footerL10nLang: IChangeLanguage = {\n ko: \"한국어\",\n en: \"English\",\n zh: \"中文-繁體\",\n ja: \"日本語\",\n ar: \"العربية\",\n th: \"ภาษาไทย\",\n id: \"Bahasa Indonesia\",\n ru: \"Русский\"\n};\n","export default {\n linkList : {\n \"companyLink\": \"회사소개\",\n \"termsOfService\": \"이용약관\",\n \"privacyPolicy\": \"개인정보처리방침\",\n \"guaranteeOfRights\": \"정보주체의 권리보장\",\n \"customerSupport\": \"고객지원\",\n \"cookiePolicy\": \"쿠키정책\",\n \"declarationOfSafety\": \"안심・안전 선언\",\n \"youthProtectionPolicy\": \"청소년보호정책\",\n \"communityPolicy\": \"커뮤니티정책\",\n \"operationPolicy\": \"운영정책\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"게임 관련 볍령에 따른 추가 표기\",\n \"brandInformation\": \"상호정보\",\n \"copyright\": \"카피라이트\",\n \"channelingInfo\": \"(주)엔씨소프트는 plaync 내 채널링 게임의 제공을 중개하는 통신판매중개자이며 통신판매의 당사자가 아닙니다.
    채널링 게임의 제공과 관련된 모든 의무와 책임은 개별 통신판매업자에게 있으며, 이와 관련하여 발생하는 문제에 대해 당사는 책임을 부담하지 않습니다.\"\n },\n infoCS: {\n \"businessInformation\": \"사업자정보확인\",\n \"infoAddress\": \"상호 (주)엔씨소프트 대표 김택진 사업자 등록번호 144-85-04244 통신판매업신고 제2013-경기성남-1268호\",\n \"mobile\": \"주소 경기도 성남시 분당구 대왕판교로 644번길 12 고객상담 1566-7004 팩스 02-2186-3499\",\n \"pc\": \"주소 경기도 성남시 분당구 대왕판교로 644번길 12 고객상담 1600-0020 팩스 02-2186-3550\",\n \"other\": \"주소 경기도 성남시 분당구 대왕판교로 644번길 12 고객상담 1600-0020(PC게임), 1566-7004(모바일게임) 팩스 02-2186-3550(PC게임), 02-2186-3499(모바일게임)\",\n \"none\": '',\n \"infoEmail\": \"이메일\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(PC게임)/MobileCS@ncsoft.com/(모바일게임)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpTitle\": \"타이틀\",\n \"jpGenre\": \"장르\",\n \"jpPrice\": \"가격\",\n \"jpPriceValue\": \"무료 (인 앱 결제 상품 포함)\",\n \"jpOs\": \"대응OS\",\n \"jpDevelopedBy\": \"개발처/운영처\",\n \"jpReleaseDay\": \"릴리즈일\",\n \"jpReleaseDayValue_LW\": \"2021년 11월 4일\",\n },\n \"country\": {\n \"KR\": \"대한민국\",\n \"TW\": \"대만\",\n \"RU\": \"러시아\",\n \"MY\": \"말레이시아\",\n \"SA\": \"사우디아라비아\",\n \"SG\": \"싱가포르\",\n \"AE\": \"아랍에미리트\",\n \"ID\": \"인도네시아\",\n \"JP\": \"일본\",\n \"QA\": \"카타르\",\n \"TH\": \"태국\",\n \"PH\": \"필리핀\",\n \"HK\": \"홍콩\",\n \"UA\": \"우크라이나\",\n \"BY\": \"벨라루스\",\n \"LT\": \"리투아니아\",\n \"PL\": \"폴란드\",\n \"GR\": \"그리스\",\n \"IL\": \"이스라엘\",\n \"KW\": \"쿠웨이트\",\n \"AT\": \"오스트리아\",\n \"US\": \"미국\",\n \"CA\": \"캐나다\",\n \"DE\": \"독일\",\n \"GB\": \"영국\",\n \"FR\": \"프랑스\",\n \"BR\": \"브라질\",\n \"IT\": \"이탈리아\",\n \"ES\": \"스페인\",\n \"CL\": \"칠레\",\n \"NO\": \"노르웨이\",\n \"SE\": \"스웨덴\",\n \"IE\": \"아일랜드\",\n \"PT\": \"포르투갈\",\n \"FI\": \"핀란드\",\n \"DK\": \"덴마크\",\n \"CH\": \"스위스\",\n \"AR\": \"아르헨티나\",\n \"PE\": \"페루\",\n \"MX\": \"멕시코\",\n \"KZ\": \"카자흐스탄\",\n \"UZ\": \"우즈베키스탄\",\n \"AZ\": \"아제르바이잔\",\n \"GE\": \"조지아\",\n \"MD\": \"몰도바\",\n \"AM\": \"아르메니아\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"companyLink\": \"公司介紹\",\n \"termsOfService\": \"使用條款\",\n \"privacyPolicy\": \"個人資料保護政策\",\n \"guaranteeOfRights\": \"個人資料權益保障\",\n \"customerSupport\": \"顧客支援\",\n \"cookiePolicy\": \"Cookie政策\",\n \"declarationOfSafety\": \"安心・安全宣言\",\n \"youthProtectionPolicy\": \"青少年保護政策\",\n \"communityPolicy\": \"社群政策\",\n \"operationPolicy\": \"營運政策\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"服務合約書\",\n \"termsOfUse\": \"會員規範\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"根據遊戲相關法令之附加標記\",\n \"brandInformation\": \"企業資訊\",\n \"copyright\": \"版權\",\n \"channelingInfo\": \"(株)NCSOFT是通訊販售仲介平台,提供plaync內共享使用管道的遊戲之媒介服務,並非通訊販售當事業者。
    與提供共享使用管道遊戲相關的全數義務和責任,均由各別通訊販售業者承擔,本公司對與此相關的任何問題概不負責。\"\n },\n infoCS:{\n \"businessInformation\": \"確認企業資訊\",\n \"infoAddress\": \"企業:(株)NCSOFT 代表:金澤辰 營業執照編號:144-85-04244 通訊販售業申報:第2013-京畿城南-1268號\",\n \"mobile\": \"住址 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea 客服電話 +82-1566-7004 傳真 +82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"住址 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea 客服電話 +82-1600-0020(PC遊戲), +82-1566-7004(手機遊戲)傳真 +82-2-2186-3550(PC遊戲), +82-2-2186-3499(手機遊戲) \",\n \"none\": '',\n \"infoEmail\": \"電子郵件\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(PC遊戲)/MobileCS@ncsoft.com/(手機遊戲)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"2021年11月04日\",\n \"jpReleaseDay\": \"發行日\",\n \"jpDevelopedBy\": \"開發商/營運商\",\n \"jpOs\": \"對應OS\",\n \"jpPriceValue\": \"免費 (遊戲內另提供付費商品)\",\n \"jpPrice\": \"價格\",\n \"jpGenre\": \"類型\",\n \"jpTitle\": \"標題\",\n },\n \"country\": {\n \"HK\": \"香港\",\n \"PH\": \"菲律賓\",\n \"TH\": \"泰國\",\n \"QA\": \"卡達\",\n \"JP\": \"日本\",\n \"ID\": \"印尼\",\n \"AE\": \"阿拉伯聯合大公國\",\n \"SG\": \"新加坡\",\n \"SA\": \"沙烏地阿拉伯\",\n \"MY\": \"馬來西亞\",\n \"RU\": \"俄羅斯\",\n \"TW\": \"台灣\",\n \"KR\": \"韓國\",\n \"UA\": \"烏克蘭\",\n \"BY\": \"白俄羅斯\",\n \"LT\": \"立陶宛 \",\n \"PL\": \"波蘭\",\n \"GR\": \"希臘\",\n \"IL\": \"以色列\",\n \"KW\": \"科威特\",\n \"AT\": \"奧地利\",\n \"US\": \"美國\",\n \"CA\": \"加拿大\",\n \"DE\": \"德國\",\n \"GB\": \"英國\",\n \"FR\": \"法國\",\n \"BR\": \"巴西\",\n \"IT\": \"義大利\",\n \"ES\": \"西班牙\",\n \"CL\": \"智利\",\n \"NO\": \"挪威\",\n \"SE\": \"瑞典\",\n \"IE\": \"愛爾蘭\",\n \"PT\": \"葡萄牙\",\n \"FI\": \"芬蘭\",\n \"DK\": \"丹麥\",\n \"CH\": \"瑞士\",\n \"AR\": \"阿根廷\",\n \"PE\": \"秘魯\",\n \"MX\": \"墨西哥\",\n \"KZ\": \"哈薩克斯坦\",\n \"UZ\": \"烏茲別克斯坦\",\n \"AZ\": \"阿塞拜疆\",\n \"GE\": \"喬治亞州\",\n \"MD\": \"摩爾多瓦\",\n \"AM\": \"亞美尼亞\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"companyLink\": \"会社紹介\",\n \"termsOfService\": \"利用規約\",\n \"privacyPolicy\": \"プライバシーポリシー\",\n \"guaranteeOfRights\": \"データ主体の権利\",\n \"operationPolicy\": \"運営ポリシー\",\n \"communityPolicy\": \"コミュニティポリシー\",\n \"youthProtectionPolicy\": \"青少年保護政策\",\n \"declarationOfSafety\": \"安心・安全宣言\",\n \"cookiePolicy\": \"クッキーポリシー\",\n \"customerSupport\": \"お問い合わせ\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"コミュニティ運営ポリシー\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"運営方針\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"ゲーム関連法律に基づく追加表記\",\n \"brandInformation\": \"商号情報\",\n \"copyright\": \"著作権情報\",\n \"channelingInfo\": \"㈱NCSOFTはplaync内チャネリングサービスの提供を仲介する通信販売仲介業者であり、通信販売の当事者ではありません。
    チャンリングサービスの提供に関連したすべての義務と責任は個別の通信販売事業者にあり、これに関連して発生した問題に対して、当社は責任を負いません。\"\n },\n infoCS:{\n \"businessInformation\": \"事業者情報確認\",\n \"infoAddress\": \"事業者名 ㈱NCSOFT 代表 キム・テクジン 事業者登録番号 144-85-04244 通信販売業申告 第2013-京義城南-1268号\",\n \"mobile\": \"住所 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea お客様相談室 +82-1566-7004 FAX +82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"住所 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea お客様相談室 +82-1600-0020(PCゲーム)、+82-1566-7004(モバイルゲーム)、FAX +82-2-2186-3550(PCゲーム)、+82-2-2186-3499(モバイルゲーム)\",\n \"none\": '',\n \"infoEmail\": \"Eメール\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(PCゲーム)/MobileCS@ncsoft.com/(モバイルゲーム)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"2021年11月4日\",\n \"jpReleaseDay\": \"リリース日\",\n \"jpDevelopedBy\": \"開発/運営\",\n \"jpOs\": \"対応OS\",\n \"jpPriceValue\": \"基本無料 (アイテム課金あり)\",\n \"jpPrice\": \"価格\",\n \"jpGenre\": \"ジャンル\",\n \"jpTitle\": \"タイトル\",\n },\n \"country\": {\n \"HK\": \"香港\",\n \"PH\": \"フィリピン\",\n \"TH\": \"タイ\",\n \"QA\": \"カタール\",\n \"JP\": \"日本\",\n \"ID\": \"インドネシア\",\n \"AE\": \"アラブ首長国連邦\",\n \"SG\": \"シンガポール\",\n \"SA\": \"サウジアラビア\",\n \"MY\": \"マレーシア\",\n \"RU\": \"ロシア\",\n \"TW\": \"台湾\",\n \"KR\": \"大韓民国\",\n \"UA\": \"ウクライナ\",\n \"BY\": \"ベラルーシ\",\n \"LT\": \"リトアニア\",\n \"PL\": \"ポーランド\",\n \"GR\": \"ギリシャ\",\n \"IL\": \"イスラエル\",\n \"KW\": \"クウェート\",\n \"AT\": \"オーストリア\",\n \"US\": \"アメリカ\",\n \"CA\": \"カナダ\",\n \"DE\": \"ドイツ\",\n \"GB\": \"英国\",\n \"FR\": \"フランス\",\n \"BR\": \"ブラジル\",\n \"IT\": \"イタリア\",\n \"ES\": \"スペイン\",\n \"CL\": \"チリ\",\n \"NO\": \"ノルウェー\",\n \"SE\": \"スウェーデン\",\n \"IE\": \"アイルランド\",\n \"PT\": \"ポルトガル\",\n \"FI\": \"フィンランド\",\n \"DK\": \"デンマーク\",\n \"CH\": \"スイス\",\n \"AR\": \"アルゼンチン\",\n \"PE\": \"ペルー\",\n \"MX\": \"メキシコ\",\n \"KZ\": \"カザフスタン\",\n \"UZ\": \"ウズベキスタン\",\n \"AZ\": \"アゼルバイジャン\",\n \"GE\": \"ジョージア\",\n \"MD\": \"モルドバ\",\n \"AM\": \"アルメニア\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"operationPolicy\": \"Operation Policy\",\n \"communityPolicy\": \"Community Policy\",\n \"youthProtectionPolicy\": \"Youth Protection Policy\",\n \"declarationOfSafety\": \"Security・Safety Declaration\",\n \"cookiePolicy\": \"Cookie Policy\",\n \"customerSupport\": \"SUPPORT\",\n \"guaranteeOfRights\": \"Rights of the Data Subject\",\n \"privacyPolicy\": \"Privacy Policy\",\n \"termsOfService\": \"Terms of Use\",\n \"companyLink\": \"About Us\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"Additional Information Following Gaming Laws\",\n \"brandInformation\": \"Company Name Information\",\n \"copyright\": \"Copyright\",\n \"channelingInfo\": \"NCSOFT is a broker who mediates mail order sales of channeling games within plaync, and is not a sales party of the aforementioned sales.
    All obligations and responsibilities associated with the provided channeling games lay with the individual mail order sales party, and we are not responsible for issues regarding them.\"\n },\n infoCS:{\n \"businessInformation\": \"View Business Information\",\n \"infoAddress\": \"Company Name: NCSOFT Corporation, CEO: Kim Taek-Jin, Business Registration Number: 144-85-04244, E-commerce Registration: 2013-Gyeonggi Seongnam-1268\",\n \"mobile\": \"Address: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea. Customer SUPPORT: +82 1566-7004. Fax: +82 02-2186-3499.\",\n \"pc\": \"\",\n \"other\": \"Address: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea. Customer SUPPORT: +82 1600-0020 (PC Game), +82 1566-7004 (Mobile Game). Fax: +82 02-2186-3550 (PC Game), +82 02-2186-3499 (Mobile Game).\",\n \"none\": '',\n \"infoEmail\": \"E-mail\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(PC Game)/MobileCS@ncsoft.com/(Mobile Game)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"04 Novemver 2021\",\n \"jpReleaseDay\": \"Release Date\",\n \"jpDevelopedBy\": \"Developer/Publisher\",\n \"jpOs\": \"Supported OS\",\n \"jpPriceValue\": \"Free to Play (Contains in-app purchases)\",\n \"jpPrice\": \"Price\",\n \"jpGenre\": \"Genre\",\n \"jpTitle\": \"Title\",\n },\n \"country\": {\n \"HK\": \"Hong Kong\",\n \"PH\": \"Philippines\",\n \"TH\": \"Thailand\",\n \"QA\": \"Qatar\",\n \"JP\": \"Japan\",\n \"ID\": \"Indonesia\",\n \"AE\": \"United Arab Emirates\",\n \"SG\": \"Singapore\",\n \"SA\": \"Saudi Arabia\",\n \"MY\": \"Malaysia\",\n \"RU\": \"Russia\",\n \"TW\": \"Taiwan\",\n \"KR\": \"Republic of Korea\",\n \"UA\": \"Ukraine\",\n \"BY\": \"Belarus\",\n \"LT\": \"Lithuania\",\n \"PL\": \"Poland\",\n \"GR\": \"Greece\",\n \"IL\": \"Israel\",\n \"KW\": \"Kuwait\",\n \"AT\": \"Austria\",\n \"US\": \"United States of America\",\n \"CA\": \"Canada\",\n \"DE\": \"Germany\",\n \"GB\": \"United Kingdom\",\n \"FR\": \"France\",\n \"BR\": \"Brazil\",\n \"IT\": \"Italy\",\n \"ES\": \"Spain\",\n \"CL\": \"Chile\",\n \"NO\": \"Norway\",\n \"SE\": \"Sweden\",\n \"IE\": \"Ireland\",\n \"PT\": \"Portugal\",\n \"FI\": \"Finland\",\n \"DK\": \"Denmark\",\n \"CH\": \"Switzerland\",\n \"AR\": \"Argentina\",\n \"PE\": \"Peru\",\n \"MX\": \"Mexico\",\n \"KZ\": \"Kazakhstan\",\n \"UZ\": \"Uzbekistan\",\n \"AZ\": \"Azerbaijan\",\n \"GE\": \"Georgia\",\n \"MD\": \"Moldova\",\n \"AM\": \"Armenia\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"operationPolicy\": \"นโยบายการดำเนินงาน\",\n \"communityPolicy\": \"นโยบายชุมชน\",\n \"youthProtectionPolicy\": \"นโยบายการคุ้มครองเยาวชน\",\n \"declarationOfSafety\": \"ประกาศทางการเกี่ยวกับความปลอดภัยและความไว้วางใจ\",\n \"cookiePolicy\": \"นโยบายคุกกี้\",\n \"customerSupport\": \"ศูนย์ช่วยเหลือลูกค้า\",\n \"guaranteeOfRights\": \"การรับรองสิทธิ์ของข้อมูลส่วนสำคัญ\",\n \"privacyPolicy\": \"นโยบายการจัดการข้อมูลส่วนตัว\",\n \"termsOfService\": \"ข้อตกลงในการใช้บริการ\",\n \"companyLink\": \"แนะนำบริษัท\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"สัญลักษณ์เพิ่มเติมตามกฎหมายที่เกี่ยวข้องกับเกม\",\n \"brandInformation\": \"ข้อมูลบริษัท\",\n \"copyright\": \"copyright\",\n \"channelingInfo\": \"บริษัท NCSOFT จำกัด (มหาชน) เป็นบริษัทกลางการผลิตและจัดจำหน่ายเกมภายใน plaync ไม่ใช่เป็นเจ้าตัวการผลิตและจัดจำหน่ายเกม
    หน้าที่และความรับผิดชอบทั้งหมดที่เกี่ยวข้องกับการผลิตและจัดจำหน่าย จะอยู่ที่เจ้าตัวเกมแต่ละราย เราจะไม่รับผิดชอบต่อปัญหาใดๆ ที่เกิดขึ้นเกี่ยวกับเรื่องนี้\"\n },\n infoCS:{\n \"businessInformation\": \"ตรวจสอบข้อมูลนักธุรกิจ\",\n \"infoAddress\": \"MR. KIM TAEK-JIN ประธานบริหารบริษัท NCSOFT จำกัด (มหาชน) เลขทะเบียนนิติบุคคล: 144-85-04244 หมายเลขธุรกิจออนไลน์: เลขที่ 2013-Gyeonggi-Seongnam-1268\",\n \"infoEmail\": \"อีเมล\",\n \"mobile\": \"ที่อยู่: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea ศูนย์บริการลูกค้า: +82-1566-7004 โทรสาร: +82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"ที่อยู่: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea ศูนย์บริการลูกค้า: +82-1600-0020 (เกม PC), +82-1566-7004 (เกมมือถือ) โทรสาร: +82-2-2186-3550 (เกม PC), +82-2-2186-3499 (เกมมือถือ)\",\n \"none\": '',\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(เกม PC)/MobileCS@ncsoft.com/(เกมมือถือ)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"4 พฤศจิกายน 2564\",\n \"jpReleaseDay\": \"วันที่เปิดให้บริการ\",\n \"jpDevelopedBy\": \"ฝ่ายพัฒนา/ฝ่ายบริหาร\",\n \"jpOs\": \"การตอบสนอง OS\",\n \"jpPriceValue\": \"เล่นฟรี (มีการซื้อในแอป)\",\n \"jpPrice\": \"ราคา\",\n \"jpGenre\": \"ประเภท\",\n \"jpTitle\": \"ชื่อเรื่อง\",\n },\n \"country\": {\n \"HK\": \"ฮ่องกง\",\n \"PH\": \"ฟิลิปปินส์\",\n \"TH\": \"ไทย\",\n \"QA\": \"กาตาร์\",\n \"JP\": \"ญี่ปุ่น\",\n \"ID\": \"อินโดนีเซีย\",\n \"AE\": \"สหรัฐอาหรับเอมิเรตส์\",\n \"SG\": \"สิงคโปร์\",\n \"SA\": \"ซาอุดิอาระเบีย\",\n \"MY\": \"มาเลเซีย\",\n \"RU\": \"รัสเซีย\",\n \"TW\": \"ไต้หวัน\",\n \"KR\": \"เกาหลีใต้\",\n \"UA\": \"ยูเครน\",\n \"BY\": \"เบลารุส\",\n \"LT\": \"ลิทัวเนีย\",\n \"PL\": \"โปแลนด์\",\n \"GR\": \"กรีซ\",\n \"IL\": \"อิสราเอล\",\n \"KW\": \"คูเวต\",\n \"AT\": \"ออสเตรีย\",\n \"US\": \"สหรัฐอเมริกา\",\n \"CA\": \"แคนาดา\",\n \"DE\": \"เยอรมนี\",\n \"GB\": \"อังกฤษ\",\n \"FR\": \"ฝรั่งเศษ\",\n \"BR\": \"บราซิล\",\n \"IT\": \"อิตาลี\",\n \"ES\": \"สเปน\",\n \"CL\": \"ชิลี\",\n \"NO\": \"นอร์เวย์\",\n \"SE\": \"สวีเดน\",\n \"IE\": \"ไอร์แลนด์\",\n \"PT\": \"โปรตุเกส\",\n \"FI\": \"ฟินแลนด์\",\n \"DK\": \"เดนมาร์ก\",\n \"CH\": \"สวิตเซอร์แลนด์\",\n \"AR\": \"อาร์เจนตินา\",\n \"PE\": \"เปรู\",\n \"MX\": \"แม็กซิโก\",\n \"KZ\": \"คาซัคสถาน\",\n \"UZ\": \"อุซเบกิสถาน\",\n \"AZ\": \"อาเซอร์ไบจาน\",\n \"GE\": \"จอร์เจีย\",\n \"MD\": \"มอลโดวา\",\n \"AM\": \"อาร์เมเนีย\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"operationPolicy\": \"Политика пользования\",\n \"communityPolicy\": \"Правила сообщества\",\n \"youthProtectionPolicy\": \"Политика защиты несовершеннолетних\",\n \"declarationOfSafety\": \"Декларация о безопасности\",\n \"cookiePolicy\": \"Политика использования Cookies\",\n \"customerSupport\": \"Служба поддержки\",\n \"guaranteeOfRights\": \"Гарантия прав субъектов данных\",\n \"privacyPolicy\": \"Политика конфиденциальности\",\n \"termsOfService\": \"Пользовательское соглашение\",\n \"companyLink\": \"Описание компании\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"Дополнительные примечания в связи с законом о регулировании игр\",\n \"brandInformation\": \"Информация о названии компании\",\n \"copyright\": \"Авторское право\",\n \"channelingInfo\": \"NCSOFT Corporation является посредником в предоставлении игр с восможностью использования единого игрового ID в plaync, но не является заинтересованным лицом в осуществлении их продаж.
    Все обязательства и ответственность, связанные с предоставлением данных игр, возлагается на официальных представителей по прадаже. За все проблемы, возникающие в данных играх, NCSOFT Corporation ответственности не несёт.\"\n },\n infoCS:{\n \"businessInformation\": \"Проверка данных предпринимателя\",\n \"infoAddress\": \"Президент компании NCSOFT Corporation - Kim Taek Jin Номер удостоверения предпринимателя: 144-85-04244 Заявление на ведение онлайн-продаж: 2013-Gyeonggi Seongnam-1268\",\n \"mobile\": \"Адрес: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea. Служба поддержки: +82-1566-7004. Факс: +82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"Адрес: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea. Служба поддержки: +82-1600-0020 (игры для ПК), +82-1566-7004 (мобильные игры). Факс: +82-2-2186-3550 (игры для ПК), +82-2-2186-3499 (мобильные игры).\",\n \"none\": '',\n \"infoEmail\": \"Электронная почта\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(игры для ПК)/MobileCS@ncsoft.com/(мобильные игры)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"4 ноября 2021\",\n \"jpReleaseDay\": \"Дата выпуска\",\n \"jpDevelopedBy\": \"Отдел разработок/Отдел управления\",\n \"jpOs\": \"Совместимая ОС\",\n \"jpPriceValue\": \"Бесплатно (Поддерживаются покупки в приложении)\",\n \"jpPrice\": \"Стоимость\",\n \"jpGenre\": \"Жанр\",\n \"jpTitle\": \"Название\",\n },\n \"country\": {\n \"HK\": \"Гонконг\",\n \"PH\": \"Филиппины\",\n \"TH\": \"Таиланд\",\n \"QA\": \"Катар\",\n \"JP\": \"Япония\",\n \"ID\": \"Индонезия\",\n \"AE\": \"Арабские Эмираты\",\n \"SG\": \"Сингапур\",\n \"SA\": \"Саудовская Аравия\",\n \"MY\": \"Малайзия\",\n \"RU\": \"Россия\",\n \"TW\": \"Тайвань\",\n \"KR\": \"Республика Корея\",\n \"UA\": \"Украина\",\n \"BY\": \"Белоруссия\",\n \"LT\": \"Литва\",\n \"PL\": \"Польша\",\n \"GR\": \"Греция\",\n \"IL\": \"Израиль\",\n \"KW\": \"Кувейт\",\n \"AT\": \"Австрия\",\n \"US\": \"США\",\n \"CA\": \"Канада\",\n \"DE\": \"Германия\",\n \"GB\": \"Великобритания\",\n \"FR\": \"Франция\",\n \"BR\": \"Бразилия\",\n \"IT\": \"Италия\",\n \"ES\": \"Испания\",\n \"CL\": \"Чили\",\n \"NO\": \"Норвегия\",\n \"SE\": \"Швеция\",\n \"IE\": \"Ирландия\",\n \"PT\": \"Португалия\",\n \"FI\": \"Финляндия\",\n \"DK\": \"Дания\",\n \"CH\": \"Швейцария\",\n \"AR\": \"Аргентина\",\n \"PE\": \"Перу\",\n \"MX\": \"Мексика\",\n \"KZ\": \"Казахстан\",\n \"UZ\": \"Узбекистан\",\n \"AZ\": \"Азербайджан\",\n \"GE\": \"Грузия\",\n \"MD\": \"Молдова\",\n \"AM\": \"Армения\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"operationPolicy\": \"Kebijakan Operasional\",\n \"communityPolicy\": \"Kebijakan Komunitas\",\n \"youthProtectionPolicy\": \"Kebijakan Perlindungan Anak dan Remaja\",\n \"declarationOfSafety\": \"Deklarasi Keamanan\",\n \"cookiePolicy\": \"Kebijakan Cookie\",\n \"customerSupport\": \"Layanan Pelanggan\",\n \"guaranteeOfRights\": \"Hak Subjek Data\",\n \"privacyPolicy\": \"Kebijakan Privasi\",\n \"termsOfService\": \"Persyaratan Layanan\",\n \"companyLink\": \"Tentang Perusahaan\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"Informasi Tambahan Sesuai Undang-Undang Terkait Game\",\n \"brandInformation\": \"Informasi Nama Perusahaan\",\n \"copyright\": \"Hak Cipta\",\n \"channelingInfo\": \"NCSOFT Corporation hanya bertindak sebagai mediator dalam menyediakan channeling game dalam plaync. NCSOFT Corporation tidak menangani langsung penyediaan layanan game maupun transaksi elektronik pada game tersebut.
    Kewajiban dan tanggung jawab yang berkaitan dengan layanan dari channeling game ada pada perusahaan masing-masing game. NCSOFT Corporation tidak bertanggung jawab atas masalah yang terjadi berkaitan dengan game tersebut.\"\n },\n infoCS:{\n \"businessInformation\": \"Periksa Informasi Bisnis\",\n \"infoAddress\": \"NCSOFT Corporation CEO Kim Taek-jin Nomor Register Perusahaan 144-85-04244 Nomor Pendaftaran Perusahaan Perdagangan Elektronik 2013-Gyeonggi Seongnam-No. 1268\",\n \"infoEmail\": \"Email\",\n \"mobile\": \"Alamat: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republik Korea Layanan Pelanggan: +82-1566-7004 FAX: +82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"Alamat: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republik Korea Layanan Pelanggan: +82-1600-0020 (Game PC), +82-1566-7004 (Game Mobile) FAX: +82-2-2186-3550 (Game PC), +82-2-2186-3499 (Game Mobile)\",\n \"none\": '',\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(Game PC)/MobileCS@ncsoft.com/(Game Mobile)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"04 Novemver 2021\",\n \"jpReleaseDay\": \"Tanggal Rilis\",\n \"jpDevelopedBy\": \"Developer/Operator\",\n \"jpOs\": \"Sistem Operasi\",\n \"jpPriceValue\": \"Gratis (termasuk pembelian dalam aplikasi)\",\n \"jpPrice\": \"Harga\",\n \"jpGenre\": \"Genre\",\n \"jpTitle\": \"Judul\",\n },\n \"country\": {\n \"HK\": \"Hong Kong\",\n \"PH\": \"Filipina\",\n \"TH\": \"Thailand\",\n \"QA\": \"Qatar\",\n \"JP\": \"Jepang\",\n \"ID\": \"Indonesia\",\n \"AE\": \"Uni Emirat Arab\",\n \"SG\": \"Singapura\",\n \"SA\": \"Arab Saudi\",\n \"MY\": \"Malaysia\",\n \"RU\": \"Rusia\",\n \"TW\": \"Taiwan\",\n \"KR\": \"Republik Korea\",\n \"UA\": \"Ukraina\",\n \"BY\": \"Belarus\",\n \"LT\": \"Lituania\",\n \"PL\": \"Polandia\",\n \"GR\": \"Yunani\",\n \"IL\": \"Israel\",\n \"KW\": \"Kuwait\",\n \"AT\": \"Austria\",\n \"US\": \"Amerika Serikat\",\n \"CA\": \"Kanada\",\n \"DE\": \"Jerman\",\n \"GB\": \"Britania Raya\",\n \"FR\": \"Prancis\",\n \"BR\": \"Brasil\",\n \"IT\": \"Italia\",\n \"ES\": \"Spanyol\",\n \"CL\": \"Chili\",\n \"NO\": \"Norwegia\",\n \"SE\": \"Swedia\",\n \"IE\": \"Irlandia\",\n \"PT\": \"Portugal\",\n \"FI\": \"Finlandia\",\n \"DK\": \"Denmark\",\n \"CH\": \"Swiss\",\n \"AR\": \"Argentina\",\n \"PE\": \"Peru\",\n \"MX\": \"Meksiko\",\n \"KZ\": \"Kazakstan\",\n \"UZ\": \"Uzbekistan\",\n \"AZ\": \"Azerbaijan\",\n \"GE\": \"Georgia\",\n \"MD\": \"Moldova\",\n \"AM\": \"Armenia\",\n \"NC\": \"Global\"\n }\n};","export default {\n linkList : {\n \"operationPolicy\": \"سياسة الاستخدام\",\n \"communityPolicy\": \"السياسة المجتمعية\",\n \"youthProtectionPolicy\": \"سياية حماية القاصرين\",\n \"declarationOfSafety\": \"إعلان ألأمن والتأمين\",\n \"cookiePolicy\": \"سياسة سجل التتبع\",\n \"customerSupport\": \"خدمة العملاء\",\n \"guaranteeOfRights\": \"كفالة الحقوق\",\n \"privacyPolicy\": \"الخصوصية\",\n \"termsOfService\": \"شروط الخدمة\",\n \"companyLink\": \"مقدمة الشركة\",\n \"doNotSell\": \"Do Not Sell My Personal Information\",\n \"gameGrade\": \"게임이용등급\",\n \"communityPolicyView\": \"커뮤니티정책\",\n \"servicePolicy\": \"서비스정책\",\n \"termsOfUse\": \"회원정책\",\n \"operationPolicyNCJ\": \"운영방침\",\n },\n footerWords:{\n \"gameRelatedLaw\": \"علامة إضافية وفقًا للقوانين المتعلقة باللعبة\",\n \"brandInformation\": \"معلومات العلامة التجارية\",\n \"copyright\": \"حقوق التأليف والنشر\",\n \"channelingInfo\": \"NCSOFT Co.، Ltd. هي شركة وسيطة لشركات التعامل التجاري بالمراسلة. هي تتوسط في توفير ألعاب داخل plaync وليست معنية بالتعامل التجاري بالمراسلة مباشرة.
    جميع الالتزامات والمسؤوليات المتعلقة بتوفير الألعاب خاصة بشركات التعامل التجاري بالمراسلة، ونحن لا نتحمل مسؤولية أي مشاكل تنشأ فيما يتعلق بذلك.\"\n },\n infoCS:{\n \"businessInformation\": \"التحقق من المعلومات التجارية\",\n \"infoAddress\": \"اسم الشركة NCsoft Co.، Ltd. الرئيس التنفيذي كيم تايك جين رقم تسجيل الأعمال 144-85-04244 تقرير أعمال الطلب عبر البريد 2013-Gyeonggi Seongnam-1268\",\n \"mobile\": \"العنوان: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea الدعم:+82-1566-7004 الفاكس:+82-2-2186-3499\",\n \"pc\": \"\",\n \"other\": \"العنوان: 12, Daewangpangyo-ro 644beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do, Republic of Korea الدعم:+82-1600-0020(ألعاب الكمبيوتر), +82-1566-7004(ألعاب الجوال) الفاكس:+82-2-2186-3550(ألعاب الكمبيوتر), +82-2-2186-3499(ألعاب الجوال)\",\n \"none\": '',\n \"infoEmail\": \"البريد الإلكتروني\",\n \n \"infoEmail-mobile\": \"MobileCS@ncsoft.com\",\n \"infoEmail-pc\": \"credit@ncsoft.com\",\n \"infoEmail-other\": \"credit@ncsoft.com/(ألعاب الكمبيوتر)/MobileCS@ncsoft.com/(ألعاب الجوال)\",\n \"infoEmail-none\": \"\",\n },\n infoJP:{\n \"jpReleaseDayValue_LW\": \"4نوفمبر 2021\",\n \"jpReleaseDay\": \"يوم الاصدار\",\n \"jpDevelopedBy\": \"مطور/مشغل من طرف\",\n \"jpOs\": \"نظام تشغيل المراسلات\",\n \"jpPriceValue\": \"(مجاني (يحتوي على مشتريات داخل التطبيق\",\n \"jpPrice\": \"السعر\",\n \"jpGenre\": \"نوع\",\n \"jpTitle\": \"عنوان\",\n },\n \"country\": {\n \"HK\": \"هونغ كونغ\",\n \"PH\": \"الفيليبين\",\n \"TH\": \"تايلاند\",\n \"QA\": \"قطر\",\n \"JP\": \"اليابان\",\n \"ID\": \"أندونيسيا\",\n \"AE\": \"الإمارات العربية المتحدة\",\n \"SG\": \"سنغافورة\",\n \"SA\": \"المملكة العربية السعودية\",\n \"MY\": \"ماليزيا\",\n \"RU\": \"روسيا\",\n \"TW\": \"تايوان\",\n \"KR\": \"جمهورية كوريا الجنوبية\",\n \"UA\": \"أوكرانيا\",\n \"BY\": \"بيلاروس\",\n \"LT\": \"ليتوانيا\",\n \"PL\": \"بولندا\",\n \"GR\": \"اليونان\",\n \"IL\": \"إسرائيل\",\n \"KW\": \"الكويت\",\n \"AT\": \"النمسا\",\n \"US\": \"الولايات المتحدة الأمريكية\",\n \"CA\": \"كندا\",\n \"DE\": \"ألمانيا\",\n \"GB\": \"بريطانيا\",\n \"FR\": \"فرنسا\",\n \"BR\": \"البرازيل\",\n \"IT\": \"إيطاليا\",\n \"ES\": \"إسبانيا\",\n \"CL\": \"تشيلي\",\n \"NO\": \"النرويج\",\n \"SE\": \"السويد\",\n \"IE\": \"أيرلندا\",\n \"PT\": \"البرتغال\",\n \"FI\": \"فنلندا\",\n \"DK\": \"الدنمارك\",\n \"CH\": \"سويسرا\",\n \"AR\": \"الأرجنتين\",\n \"PE\": \"بيرو\",\n \"MX\": \"المكسيك\",\n \"KZ\": \"كازاخستان\",\n \"UZ\": \"أوزبكستان\",\n \"AZ\": \"أذربيجان\",\n \"GE\": \"جورجيا\",\n \"MD\": \"مولدوفا\",\n \"AM\": \"أرمينيا\",\n \"NC\": \"Global\"\n }\n};","import { IFooterL10nData, langType, countryType, IFooterConfig, IFooterConfigAllwithDefault, IChangeLanguage } from '../interface/IFooter';\nimport { footerL10n, footerL10nLang } from './L10n';\n\nconst DEFAULT_CONFIG: Required = {\n countryList: [],\n languageList: [],\n languageCountryList: [],\n snsList: [],\n linkList: [],\n gameGrade: '',\n csInfoType: 'mobile',\n copyright: '',\n companyLink: '',\n keepPath: false,\n keepPathForLang: true,\n operationPolicyLink: '',\n communityPolicyLink: '',\n familySiteList: []\n}\n\nexport default class DataStore {\n private static _instance: DataStore;\n\n public lang! : langType;\n public country! : countryType;\n public service! : string;\n public config! : IFooterConfig;\n public l10n! : IFooterL10nData;\n public l10nLang! : IChangeLanguage;\n public countryData! : Array<{country: string, text: string}>\n public geoCountry! : countryType;\n\n private constructor() {\n }\n\n public static get instance(){\n return this._instance || (this._instance = new this())\n }\n\n public init(_config: IFooterConfigAllwithDefault){\n const htmlEl = document.querySelector('html');\n if(htmlEl){\n this.lang = (htmlEl.getAttribute('lang') || 'ko') as langType;\n this.country = (htmlEl.getAttribute('data-country') || 'KR') as countryType;\n this.service = (htmlEl.getAttribute('data-service') || 'plaync');\n this.l10n = footerL10n[this.lang];\n this.l10nLang = footerL10nLang;\n this.config = this.setConfig(_config);\n this.countryData = this.sortCountry(this.config.countryList);\n for(var i in window){\n if(i === '_geolocationCountry'){\n this.geoCountry = window[i] as unknown as countryType;\n }\n }\n }\n }\n\n setConfig(_config: IFooterConfigAllwithDefault): IFooterConfig{\n let defaultConfig: IFooterConfig = Object.assign({},DEFAULT_CONFIG, _config.default);\n let currentConfig: IFooterConfig = _config[this.country];\n\n if(currentConfig){\n Object.assign(defaultConfig, currentConfig);\n }\n\n return defaultConfig;\n }\n\n sortCountry(_countryList: Array){\n const countryL10n = _countryList.map(it =>{\n return{\n country: it,\n text: this.l10n.country[it]\n }\n });\n\n return countryL10n.sort((a,b) => a.text.localeCompare(b.text, this.lang));\n }\n}\n","// svg codes\n\nexport const svgInfoTwLogo = `tw_15`;\n\nexport const svgIcoBtnChange = ``;\n\nexport const svgIcoChangeList = ``;\n\nexport const svgIcoChangePlus = ``;\n\n","import { addClass, removeClass, hasClass, toggleClass } from \"../common/Utils\";\n\nexport default class Layer {\n constructor(){\n this.addEvents();\n }\n\n addEvents(){\n document.querySelector('body')?.addEventListener('click', e =>{\n Layer.closeLayer();\n });\n }\n\n static closeLayer(){\n const toggleEl : HTMLElement | null = document.querySelector('.is-show-footer');\n if(toggleEl){\n removeClass(toggleEl, 'is-show-footer');\n }\n }\n\n static toggleLayer( _myId: string):void {\n const isShowEl : HTMLElement | null = document.getElementById(_myId);\n\n if( isShowEl ){\n if( !hasClass(isShowEl, 'is-show-footer') ){\n Layer.closeLayer();\n }\n toggleClass(isShowEl, 'is-show-footer');\n }\n }\n} // end of class","import {makeEl} from \"../../common/Utils\";\nimport DataStore from \"../DataStore\";\nimport {svgIcoBtnChange, svgIcoChangeList} from \"../SvgCode\";\nimport Layer from \"../Layer\";\n\nexport default class Country{\n private ds: DataStore;\n private btn!: HTMLButtonElement;\n private ul!: HTMLUListElement;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.countryList.length> 0){\n this.templ(_wrapper);\n this.addEvents();\n }\n }\n\n templ(_parent: HTMLElement){\n const tmpl = makeEl('div', _parent, {class: 'footer-change-inner footer-change-country'});\n this.btn = makeEl('button', tmpl, {class: 'btn-footer-change'});\n\n this.btn.innerHTML= `\n ${this.ds.l10n.country[this.ds.country]}\n ${svgIcoBtnChange}\n `;\n this.ul = makeEl('ul', tmpl, {class: 'footer-change-list', id: 'FooterCountryChangeList'});\n this.ds.countryData.map(it => this.liTempl(this.ul, it, svgIcoChangeList));\n if(this.ds.country === \"NC\"){\n this.liTempl(this.ul, {country: 'global', text: 'Global'}, svgIcoChangeList);\n }\n }\n\n liTempl(_parent: HTMLUListElement, _data: {country: string, text: string}, _svgCode: string){\n const li = makeEl('li', _parent, {class: 'footer-change-item'});\n const aEl = makeEl('a', li, {class: 'change-item-link', href: this.makeLink(_data.country), 'data-country': _data.country});\n\n if(_data.country === this.ds.country){\n aEl.innerHTML= _svgCode;\n makeEl('strong', aEl, undefined, _data.text);\n }\n else{\n makeEl('span', aEl, undefined, _data.text);\n }\n }\n\n makeLink(_country: string): string{\n let newCountry = _country.toLowerCase();\n let link = '/'+ newCountry + '/index';\n if(this.ds.config.keepPath){\n const reg = new RegExp(`^\\/${this.ds.country.toLowerCase()}\\/`, 'gi');\n const result = location.pathname.match(reg);\n if (result){\n link = `/${newCountry}${location.pathname.slice(3)}${location.search}${location.hash}`;\n }\n else{\n link = `/${newCountry}${location.pathname}${location.search}${location.hash}`;\n }\n }\n return link;\n }\n\n addEvents() {\n this.btn.addEventListener('click', e => {\n Layer.toggleLayer(this.ul.id);\n e.stopPropagation();\n });\n }\n}","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\nimport {langType} from \"../../interface/IFooter\";\nimport {svgIcoBtnChange, svgIcoChangeList} from \"../SvgCode\";\nimport Layer from \"../Layer\";\n\nexport default class Language{\n private ds: DataStore;\n private btn!: HTMLButtonElement;\n private ul!: HTMLUListElement;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.languageList.length> 0) {\n this.templ(_wrapper);\n this.addEvents();\n }\n }\n\n templ(_parent: HTMLElement){\n const tmpl = makeEl('div', _parent, {class: 'footer-change-inner footer-change-language'});\n this.btn = makeEl('button', tmpl, {class:'btn-footer-change'});\n\n this.btn.innerHTML= `\n ${this.ds.l10nLang[this.ds.lang]}\n ${svgIcoBtnChange}\n `;\n\n this.ul = makeEl('ul', tmpl, {class: 'footer-change-list', id: 'FooterLanguageChangeList'});\n this.ds.config.languageList.map(it => this.liTempl(this.ul, it, svgIcoChangeList));\n }\n\n liTempl(_parent: HTMLUListElement, _data: langType, _svgCode: string){\n const li = makeEl('li', _parent, {class: 'footer-change-item'});\n const aEl = makeEl('a', li, {class: 'change-item-link', href: this.makeLink(_data), 'data-language': _data});\n\n if(_data === this.ds.lang){\n aEl.innerHTML= _svgCode;\n makeEl('strong', aEl, undefined, this.ds.l10nLang[_data]);\n }\n else{\n makeEl('span', aEl, undefined, this.ds.l10nLang[_data]);\n }\n }\n\n makeLink(_lang: string): string{\n const originSearch = location.search;\n const originSearchArray = originSearch.substring(1).split('&');\n\n let resultSearch = `locale=${_lang}-${this.ds.country}`;\n\n if(originSearch !== ''){\n for(let i=0; i 0){\n link = `/${this.ds.country.toLowerCase()}/index?${resultSearch}`;\n }else{\n link = `/index?${resultSearch}`;\n }\n }\n\n return link;\n }\n\n addEvents(){\n this.btn.addEventListener('click', e => {\n Layer.toggleLayer(this.ul.id);\n e.stopPropagation();\n });\n }\n}\n","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\nimport {ISns} from \"../../interface/IFooter\";\n\nexport default class SnsList{\n private ds : DataStore;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.snsList.length> 0){\n this.templ(_wrapper);\n }\n }\n\n templ(_parent : HTMLElement){\n const tmpl = makeEl('div', _parent, {class: 'footer-sns'});\n const ul = makeEl('ul', tmpl, {class: 'footer-sns-list'})\n\n this.ds.config.snsList.map(it => this.liTempl(ul, it));\n }\n\n liTempl(_parent: HTMLUListElement, _data: ISns){\n const li = makeEl('li', _parent, {class: 'footer-sns-item footer-sns-item-'+ _data.name.toLowerCase()});\n makeEl('a', li, {href: _data.link, target: '_blank'});\n }\n}","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\nimport {ILinkList} from \"../../interface/IFooter\";\nimport Layer from \"../Layer\";\n\nexport default class Links{\n private ds : DataStore;\n private btn!: HTMLButtonElement;\n private gradeLayer!: HTMLSpanElement;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.linkList.length> 0){\n this.templ(_wrapper);\n this.addEvents();\n }\n }\n\n templ(_parent: HTMLElement){\n const tmpl = makeEl('nav', _parent, {class: 'footer-links'});\n const ul = makeEl('ul', tmpl, {class: 'footer-links-list'});\n this.ds.config.linkList.map(it => {\n if(it.name === 'doNotSell'){\n if(this.ds.geoCountry === 'US'){\n this.liTempl(ul, it);\n }\n }\n else{\n this.liTempl(ul, it);\n }\n });\n }\n\n liTempl(_parent: HTMLUListElement, _data: ILinkList){\n const li = makeEl('li', _parent, {class: 'footer-links-item'});\n const isBold = _data.isBold? _data.isBold : false;\n const text = this.ds.l10n.linkList[_data.name];\n\n if(_data.type === 'link'){\n const link = makeEl('a', li, {href: this.makeLink(_data.name, _data.link), target: _data.target});\n this.textTempl(link, isBold, text);\n }\n else if(_data.type === 'image' && this.ds.config.gameGrade){\n li.classList.add('grade-layer-item');\n this.btn = makeEl('button', li, {class: 'btn-grade-layer', href: _data.link, target: _data.target}, text);\n this.gradeLayer = makeEl('span', this.btn, {class: 'grade-layer', id: 'FooterGradeLayer'});\n makeEl('img', this.gradeLayer, {src: this.ds.config.gameGrade});\n }\n }\n\n makeLink(_linkName: string, _link: string): string{\n let resultLink: string = _link;\n if(_linkName === 'operationPolicy' && this.ds.config.operationPolicyLink){\n resultLink = this.ds.config.operationPolicyLink;\n }\n else if(_linkName === 'communityPolicy' && this.ds.config.communityPolicyLink){\n resultLink = this.ds.config.communityPolicyLink;\n }\n return resultLink;\n }\n\n textTempl(_parent: HTMLAnchorElement, _isBold: boolean, _text: string){\n const tagName = _isBold? 'strong': 'span';\n makeEl(tagName, _parent, undefined, _text);\n }\n\n addEvents(){\n if(this.gradeLayer){\n this.btn.addEventListener('click', e => {\n Layer.toggleLayer(this.gradeLayer.id);\n e.stopPropagation();\n });\n }\n }\n}","import {svgInfoTwLogo} from '../SvgCode'\n\nexport default class infoTW{\n constructor(_wrapper: HTMLElement) {\n this.templ(_wrapper);\n }\n\n templ(_parent: HTMLElement){\n\n _parent.classList.add('footer-info-tw');\n _parent.innerHTML= `\n
    \n ${svgInfoTwLogo}\n

    \n 本遊戲情節涉及角色穿著表達輕微性暗示、暴力、恐怖。
    \n 本遊戲部分內容或服務需另行支付其他費用,應避免過度消費。
    \n 注意使用時間,避免沉迷於遊戲,可能影響身心健康。\n

    \n
    \t\n `;\n }\n}","import DataStore from \"../DataStore\";\nimport {IJpInfoData} from \"../../interface/IFooter\";\n\nexport default class infoJP{\n private ds : DataStore\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n const infoData = this.getInfoData(this.ds.service);\n\n if(infoData){\n _wrapper.classList.add('footer-info-jp');\n _wrapper.innerHTML = this.templ(infoData);\n }\n }\n\n templ(_data: IJpInfoData){\n return `\n
    \n
    \n
    ${this.ds.l10n.infoJP.jpTitle}
    \n
    ${_data.title}
    \n
    \n
    \n
    ${this.ds.l10n.infoJP.jpGenre}
    \n
    ${_data.genre}
    \n
    \n
    \n
    ${this.ds.l10n.infoJP.jpPrice}
    \n
    ${this.ds.l10n.infoJP.jpPriceValue}
    \n
    \n
    \n
    ${this.ds.l10n.infoJP.jpOs}
    \n
    ${_data.os}
    \n
    \n
    \n
    ${this.ds.l10n.infoJP.jpDevelopedBy}
    \n
    NCSOFT
    \n
    \n
    \n
    ${this.ds.l10n.infoJP.jpReleaseDay}
    \n
    ${_data.releaseDay}
    \n
    \n
    \n `;\n }\n\n getInfoData(_service: string){\n if(_service === 'lineagew'){\n let resultInfoData : IJpInfoData = {\n title: 'リネージュ W',\n genre: 'MMORPG',\n os: 'iOS/Android/Windows',\n releaseDay: this.ds.l10n.infoJP.jpReleaseDayValue_LW\n }\n\n return resultInfoData;\n }\n if(_service === 'lineage2mncj'){\n let resultInfoData : IJpInfoData = {\n title: 'リネージュ2M',\n genre: 'MMORPG',\n os: 'iOS/Android/Windows',\n releaseDay: '2021年3月24日'\n }\n\n return resultInfoData;\n }\n return false;\n }\n}","export default class infoRU{\n constructor(_wrapper: HTMLElement) {\n this.templ(_wrapper);\n }\n\n templ(_parent: HTMLElement){\n _parent.classList.add('footer-info-ru');\n _parent.innerHTML= `\n
    \n \n \n
    \n `;\n }\n}","import {makeEl} from \"../../common/Utils\";\nimport DataStore from \"../DataStore\";\nimport {infoType} from \"../../interface/IFooter\";\n\nexport default class infoCS{\n private ds : DataStore\n\n constructor(_wrapper: HTMLElement, _csInfoType: infoType) {\n this.ds = DataStore.instance;\n const infoCSString = this.ds.l10n.infoCS[_csInfoType];\n\n if(infoCSString){\n this.templ(_wrapper, infoCSString, _csInfoType);\n }\n }\n\n templ(_parent: HTMLElement, _data: string, _infoType: infoType){\n makeEl('address', _parent, {class: 'footer-info-address'}).innerHTML = `\n ${this.ds.l10n.infoCS.infoAddress}\n \n ${this.ds.l10n.infoCS.businessInformation}\n `;\n\n type emailkeyType = \"infoEmail-pc\" | \"infoEmail-mobile\" | \"infoEmail-other\";\n let emailkey: emailkeyType = \"infoEmail-\"+_infoType as emailkeyType;\n\n if (_infoType==='other') {\n const mailArr = this.ds.l10n.infoCS[\"infoEmail-other\"].split('/');\n makeEl('div', _parent, {class: 'footer-info-cs'}).innerHTML = `\n ${_data}\n \n ${this.ds.l10n.infoCS.infoEmail}\n ${mailArr[0]}${mailArr[1]}\n ${mailArr[2]}${mailArr[3]}\n `;\n } else {\n makeEl('div', _parent, {class: 'footer-info-cs'}).innerHTML = `\n ${_data}\n \n ${this.ds.l10n.infoCS.infoEmail}\n ${this.ds.l10n.infoCS[emailkey]}\n `;\n\n }\n }\n}","export default class infoNAEU{\n constructor(_wrapper: HTMLElement) {\n this.templ(_wrapper);\n }\n\n templ(_parent: HTMLElement){\n _parent.classList.add('footer-info-naeu');\n _parent.innerHTML= `\n
    \n \n \n
    \n `;\n }\n}","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\nimport {IJpInfoData, infoType} from \"../../interface/IFooter\";\nimport infoTW from \"./InfoTW\";\nimport infoJP from \"./InfoJP\";\nimport infoRU from \"./InfoRU\";\nimport infoCS from \"./InfoCS\";\nimport infoNAEU from \"./InfoNAEU\";\n\nexport default class Info{\n private ds : DataStore;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n this.templ(_wrapper);\n }\n\n templ(_parent: HTMLElement){\n const infoEl = makeEl('div', _parent, {class: 'footer-info'})\n const csInfoType : infoType = this.ds.config.csInfoType;\n\n if((this.ds.country === 'JP') && (this.ds.service !== 'plaync')){\n new infoJP(infoEl);\n return;\n }\n if((this.ds.country === 'TW') && (this.ds.service !== 'plaync')){\n new infoTW(infoEl);\n return;\n }\n if(this.ds.service === 'lineage2mru'){\n new infoRU(infoEl);\n return;\n }\n if(this.ds.service === 'lineage2mnaeu'){\n new infoNAEU(infoEl);\n return;\n }\n new infoCS(infoEl, csInfoType);\n }\n}","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\n\nexport default class Copyright{\n private ds : DataStore;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.copyright){\n this.templ(_wrapper, this.ds.config.copyright);\n }\n }\n\n templ(_parent: HTMLElement, _copyright: string){\n const tmpl = makeEl('div', _parent, {class: 'footer-copyright'});\n tmpl.innerHTML= _copyright;\n }\n}","import DataStore from \"../DataStore\";\nimport {makeEl} from \"../../common/Utils\";\n\nexport default class Logo{\n private ds : DataStore;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n this.templ(_wrapper);\n }\n\n templ(_parent: HTMLElement){\n const tmpl = makeEl('div', _parent, {class: 'footer-logo-wrap'});\n if(this.ds.country === 'KR'){\n tmpl.innerHTML= `\n \n \n `;\n }\n else{\n tmpl.innerHTML= `\n \n `;\n }\n }\n}","import {makeEl} from \"../../common/Utils\";\nimport DataStore from \"../DataStore\";\nimport {svgIcoChangePlus} from \"../SvgCode\";\nimport Layer from \"../Layer\";\nimport {IFamilySiteList} from \"../../interface/IFooter\";\n\nexport default class FamilySite{\n private ds: DataStore;\n private btn!: HTMLButtonElement;\n private ul!: HTMLUListElement;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.familySiteList && this.ds.config.familySiteList.length > 0){\n this.templ(_wrapper, this.ds.config.familySiteList);\n this.addEvents();\n }\n }\n\n templ(_parent: HTMLElement, _familySiteInfo: Array){\n const tmpl = makeEl('div', _parent, {class: 'footer-change-wrap'});\n tmpl.classList.add('footer-family-sites');\n const innerTmpl = makeEl('div',tmpl, {class: 'footer-change-inner'} );\n this.btn = makeEl('button', innerTmpl, {class: 'btn-footer-change'});\n\n this.btn.innerHTML= `\n Family Site\n ${svgIcoChangePlus}\n `;\n this.ul = makeEl('ul', tmpl, {class: 'footer-change-list', id: 'FooterFamilySiteChangeList'});\n _familySiteInfo.map(it => this.liTempl(this.ul, it));\n }\n\n liTempl(_parent: HTMLUListElement, _data: {siteName: string, siteLink: string}){\n const li = makeEl('li', _parent, {class: 'footer-change-item'});\n const aEl = makeEl('a', li, {class: 'change-item-link', href: _data.siteLink});\n makeEl('span', aEl, undefined, _data.siteName);\n }\n\n addEvents() {\n this.btn.addEventListener('click', e => {\n Layer.toggleLayer(this.ul.id);\n e.stopPropagation();\n });\n }\n}","import {makeEl} from \"../../common/Utils\";\nimport DataStore from \"../DataStore\";\nimport {svgIcoBtnChange, svgIcoChangeList} from \"../SvgCode\";\nimport Layer from \"../Layer\";\nimport { countryType, langType, IlanguageCountry } from '../../interface/IFooter';\n\nexport default class LanguageCountry{\n private ds: DataStore;\n private btn!: HTMLButtonElement;\n private ul!: HTMLUListElement;\n\n constructor(_wrapper: HTMLElement) {\n this.ds = DataStore.instance;\n if(this.ds.config.languageCountryList && this.ds.config.languageCountryList.length> 0){\n this.templ(_wrapper);\n this.addEvents();\n }\n }\n\n templ(_parent: HTMLElement){\n const tmpl = makeEl('div', _parent, {class: 'footer-change-inner footer-change-lanco'});\n this.btn = makeEl('button', tmpl, {class: 'btn-footer-change'});\n this.ul = makeEl('ul', tmpl, {class: 'footer-change-list', id: 'FooterLanguageCountryChangeList'});\n this.ds.config.languageCountryList.map(it => this.liTempl(this.ul, it, svgIcoChangeList));\n }\n\n liTempl(_parent: HTMLUListElement, _data: IlanguageCountry, _svgCode: string){\n const li = makeEl('li', _parent, {class: 'footer-change-item'});\n const path = _data.path? _data.path: _data.code;\n const aEl = makeEl('a', li, {class: 'change-item-link', href: '/'+path+'/index', 'data-code': _data.code});\n\n if(_data.code.toLowerCase() === this.ds.lang+'-'+this.ds.country.toLowerCase()){\n aEl.innerHTML= _svgCode;\n makeEl('strong', aEl, undefined, _data.title);\n this.btn.innerHTML= `${_data.title}${svgIcoBtnChange}`;\n } else {\n makeEl('span', aEl, undefined, _data.title);\n }\n }\n\n addEvents(){\n this.btn.addEventListener('click', e => {\n Layer.toggleLayer(this.ul.id);\n e.stopPropagation();\n });\n }\n}"," export default class Index {\n\n private el: HTMLElement;\n\n constructor() {\n this.el = document.createElement('div');\n\n if (window.userData?.isLogin) {\n this.setting();\n }\n }\n \n private setting(){\n let msg = this.checkMsg()\n if ( !msg ) return;\n this.template( msg );\n document.body.appendChild( this.el );\n this.addEvents();\n }\n\n private checkMsg(): string {\n let msg = '';\n window.userData.accountState?.map( it =>{\n if(it.case==7 || it.case==8) msg = it.msg;\n });\n return msg;\n }\n\n private template(_msg: string): void {\n this.el.id = \"id-verify\";\n this.el.classList.add(\"id-verify\");\n this.el.innerHTML = `\n
    \n ${_msg}\n
    `;\n }\n\n private addEvents(){\n document.querySelector(\".id-verify__close\")?.addEventListener('click', () => {\n this.el.parentNode?.removeChild(this.el);\n });\n }\n\n} // end of class","/*\n Dropdown은 내부 store를 통해 열고 닫는 등의 상태를 관리하고 있어,\n 상태관리 싱크를 맞추기 위해 내부에서 DOM 조작으로 닫지 않고 instance들을 배열에 담아 열린 Dropdown만 닫도록 함\n*/\n\nimport Dropdown from './index';\n\nclass DropdownInstControl {\n private dropdownInstanceArr: Dropdown[] = [];\n\n addInstance(inst: Dropdown) {\n this.dropdownInstanceArr.push(inst);\n }\n\n closeOpenDropdown() {\n const openDropdown = this.dropdownInstanceArr.filter(v => v.isOpen);\n if(openDropdown?.length > 0) {\n openDropdown.forEach(v => {\n v.closeLayer();\n });\n }\n }\n}\n\nexport default new DropdownInstControl();","import DropdownStore from \"./DropdownStore\";\nimport DropdownInstControl from './DropdownInstControl';\nimport { ActiveDataType, BtnType, IDropdownBtnConfig, StateType } from \"../interface/IDropdown\";\n\nexport default class DropdownBtn {\n private btnEle: HTMLButtonElement | null = null;\n private btnType: BtnType;\n private useSelectExceptPc: boolean;\n private btnShowDepthLength: number;\n private store: DropdownStore;\n\n constructor({parent, btnType, useSelectExceptPc, btnShowDepthLength, store}: IDropdownBtnConfig) {\n this.btnType = btnType || 'no-border';\n this.useSelectExceptPc = useSelectExceptPc;\n this.btnShowDepthLength = btnShowDepthLength;\n this.store = store;\n\n this.init(parent);\n }\n\n private init(parent: Element) {\n parent?.insertAdjacentHTML('afterbegin', this.template());\n\n this.btnEle = parent?.querySelector('.dropdown-btn');\n this.addEvent();\n\n this.store.addListener('isOpen', (isOpen: boolean) => {\n this.active(isOpen);\n });\n\n this.store.addListener('activeKey', (activeKey: string) => {\n const { activeData, isLastDepth } = this.store.state;\n\n // 마지막 뎁스값 선택 시\n if(isLastDepth) {\n this.setValue(activeData, this.btnShowDepthLength);\n }\n });\n }\n\n private template(): string {\n let template = '';\n\n template += `\n
    \n \n
    \n `;\n\n return template;\n }\n\n private addEvent() {\n this.btnEle?.addEventListener('click', (e: MouseEvent) => {\n const curIsOpen = this.store.state.isOpen;\n if(!curIsOpen) {\n DropdownInstControl.closeOpenDropdown(); // 현재 Dropdown을 열 때, 열려있는 다른 Dropdown 닫음\n }\n this.store.dispatch<'isOpen', StateType['isOpen']>('isOpen', !curIsOpen);\n });\n }\n\n /*\n 버튼 스타일 활성화\n @param {boolean} isOpen dropdown layer 오픈 여부\n */\n active(isOpen: boolean) {\n const $parent = this.btnEle?.parentElement;\n \n if(isOpen) $parent?.classList?.add('is-active');\n else $parent?.classList?.remove('is-active');\n }\n\n /*\n 버튼명 변경\n - btnShowDepthLength: 0이면 모든 뎁스 value 노출, 그 외에는 해당 뎁스 value 노출\n @param {ActiveDataType} activeData 활성화하려는 뎁스별 데이터\n @param {number} btnShowDepthLength 버튼에 노출할 value값 뎁스 (0이면 전체 뎁스, 0보다 크면 각 뎁스에 해당하는 value값 노출) // TODO. 2뎁스까지 노출하고자 할 때 1, 2 둘다 노출하도록 수정 필요.\n @param {number} maxDepth 최대 뎁스\n */\n setValue(activeData: ActiveDataType, btnShowDepthLength: number) {\n const $strong = this.btnEle?.querySelector('strong');\n if(!$strong) return;\n\n let btnText = '';\n\n if(btnShowDepthLength === 0) {\n btnText = activeData.map(v => v?.title).join(' : ');\n } else {\n const active = activeData?.slice(-btnShowDepthLength);\n btnText = active.map(v => v.title).join(' : ');\n }\n\n $strong.innerText = btnText;\n }\n}","import { IDropdownConfig, DeviceType, OriginDataType, IOriginDataItem, ActiveDataType, NewDataType, IItem } from \"../interface/IDropdown\";\n\n/*\n option 밸리데이션\n @param {IDropdownConfig} option 옵션값\n @return {boolean} 밸리데이션 통과 여부 (true: 이상 없음, false: 이상 있음)\n*/\nexport const validateOption = (option: IDropdownConfig): boolean => {\n if(!option?.parent) {\n console.log('Dropdown을 생성할 부모 node가 없습니다.');\n return false;\n }\n\n if(!Array.isArray(option?.data) || option?.data?.length === 0) {\n console.log('Dropdown을 생성할 데이터가 존재하지 않습니다.');\n return false;\n }\n\n return true;\n}\n\n/*\n (재귀) 최대 뎁스 찾기 - 각 뎁스별 뎁스 확인\n @param {DataType | IOriginDataItem} data 원형 데이터(_config.data)\n @param {number} depth 뎁스 (1부터 시작)\n @return {number | void} maxDepth 최대 뎁스\n*/\nexport const checkDepth = (depth: number, data?: OriginDataType | IOriginDataItem): number | void => {\n let maxDepth = depth;\n\n if(Array.isArray(data) && data.length > 0) {\n data.forEach((v: IOriginDataItem) => {\n const calcDepth = checkDepth(depth + 1, v.children);\n if(typeof calcDepth === 'number' && maxDepth < calcDepth) {\n maxDepth = calcDepth;\n }\n });\n\n return maxDepth;\n } else {\n if(!Array.isArray(data) && !(data?.children)) {\n return maxDepth;\n }\n }\n}\n\n/*\n 최대 뎁스 찾기\n @param {originData} data 원형 데이터(_config.data)\n @return {number} maxDepth 최대 뎁스\n*/\nexport const findMaxDepth = (originData: OriginDataType) => {\n let maxDepth = 1;\n\n originData.forEach((v: IOriginDataItem) => {\n const depth = checkDepth(1, v.children);\n if(typeof depth === 'number' && maxDepth < depth) {\n maxDepth = depth;\n }\n });\n\n return maxDepth;\n}\n\n/*\n (재귀) 데이터 가공 - 각 뎁스별 데이터 가공\n @param {DataType} data 원형 데이터(_config.data)\n @param {number} curDepth 현재 뎁스 (curDepth는 1부터 시작, 가공 데이터의 뎁스 인덱스는 0부터 시작)\n @param {string} depthKey Map 저장에 사용할 키 (부모인덱스-본인인덱스, ex. 2depth이면 1-0)\n @param {NewDataType} newData 반환할 가공 데이터\n @return {NewDataType} newData\n*/\nexport const setEachDepthNewData = (data: OriginDataType, curDepth: number, depthKey: string, newData: NewDataType): NewDataType => {\n let itemArr: IItem[] = [];\n\n data.forEach((v, i) => {\n const { title, value, children } = v;\n const key = curDepth === 1 ? `${i}` : `${depthKey}-${i}`;\n const data = newData[curDepth - 1];\n\n if(Array.isArray(data)) {\n data.push({ title, value: typeof value !== 'string' ? `${value}` : value, key });\n } else {\n itemArr.push({ title, value: typeof value !== 'string' ? `${value}` : value, key });\n data.set(depthKey, itemArr);\n }\n\n if(Array.isArray(children) && children.length > 0) {\n setEachDepthNewData(children, curDepth + 1, key, newData);\n }\n });\n\n return newData;\n};\n\n/*\n 데이터 가공 (원형 데이터(트리) -> 사용하기 좋은 구조([1depth는 array, 2depth부터 각각 Map으로 구성])\n @param {OriginDataType} data 원형 데이터(_config.data)\n @param {number} maxDepth 원형 데이터의 최대 뎁스\n @return {NewDataType} newData\n*/\nexport const setNewData = (originData: OriginDataType, maxDepth: number): NewDataType => {\n let newData = [] as NewDataType;\n let depth = 1;\n\n for(depth; depth <= maxDepth; depth++) {\n if(depth === 1) newData[depth - 1] = [];\n else newData[depth - 1] = new Map();\n }\n\n newData = setEachDepthNewData(originData, 1, '', newData);\n\n return newData;\n};\n\n/*\n 가공한 데이터에서 현재 활성화된 요소 중 마지막 요소의 키값을 통해, 1뎁스부터 마지막 뎁스까지 활성화된 뎁스별 데이터 추출 \n @param {NewDataType} data 가공한 데이터\n @param {string} key 마지막 뎁스 요소의 키값 (why? 부모인덱스들이 전부 포함되어 있음)\n @return {ActiveDataType | null} activeData\n*/\nexport const getActiveData = (newData: NewDataType, key: string): ActiveDataType => {\n if(!Array.isArray(newData) || newData.length === 0 || !key) return [];\n \n let activeData = [];\n const splitKey: number[] = key.split('-').map(v => parseInt(v, 10));\n const maxDepth = splitKey.length;\n\n for(let i = 0; i < maxDepth; i++) {\n const valueIndex = splitKey[i];\n const depthData = newData[i];\n\n if(Array.isArray(depthData)) {\n const depth1Arr = newData[i];\n\n if(depthData[valueIndex]) {\n activeData[i] = depthData[valueIndex];\n continue;\n }\n return [];\n } else {\n const depthKey = splitKey.slice(0, i).join('-');\n const depthArr = depthData.get(depthKey) || [];\n\n if(Array.isArray(depthArr) && depthArr.length > 0 && !!depthArr[valueIndex]) {\n activeData[i] = depthArr[valueIndex];\n continue;\n }\n return [];\n }\n }\n\n return activeData;\n};\n\n/*\n activeValue 호출시 전달받은 valueArr을 통해 key값을 추출하는 함수\n @param {string[]} valueArr 뎁스별 value array\n @param {NewDataType} newData 가공한 메뉴 데이터\n @return {string | null} activeKey\n*/\nexport const getActiveKeyFromValueArr = (valueArr: string[], newData: NewDataType): string | null => {\n let keyArr: string[] = [];\n let key: string | null = null;\n\n if(!Array.isArray(valueArr) || valueArr?.length === 0) return key;\n\n // 마지막 뎁스값 기준으로 키 찾기\n const curMaxDepth = valueArr.length;\n\n // 마지막 뎁스 요소 키값에는 부모뎁스도 알 수 있으므로, 마지막 뎁스에서 value값 동일한 요소의 키값 추출\n const lastIndex = curMaxDepth - 1;\n const value = valueArr[lastIndex];\n \n newData[lastIndex].forEach(v => {\n if(Array.isArray(v)) {\n v.forEach(x => {\n if(x?.value === value) {\n keyArr.push(x?.key);\n }\n });\n } else {\n if(v?.value === value) {\n keyArr.push(v?.key);\n }\n }\n });\n\n if(keyArr.length > 0) {\n const copyKeyArr = [...keyArr];\n copyKeyArr.forEach((k, i) => {\n const splitKey = k.split('-')?.map(v => parseInt(v, 10));\n let parentKey = '';\n\n // 부모 뎁스 확인하여 최종 키값 추출\n for(let depth = 0; depth < splitKey.length; depth++) {\n const parentIndex = splitKey[depth];\n const data = newData[depth];\n const depthData = Array.isArray(data) ? data : data?.get(parentKey) || [];\n const parentData = Array.isArray(depthData) ? depthData[parentIndex] : null;\n const parentValue = parentData?.value;\n\n if(parentValue !== valueArr[depth]) {\n keyArr.splice(i, 1);\n break;\n }\n\n parentKey = splitKey.slice(0, depth + 1).join('-');\n }\n });\n }\n\n if(keyArr.length === 1) {\n key = keyArr[0];\n }\n\n return key;\n};\n\n/*\n 현재 메뉴 키값이 마지막 뎁스인지 여부 확인\n @param {string} activeKey 활성화 키\n @param {NewDataType} newData 가공한 메뉴 데이터\n @param {number} maxDepth 최대 뎁스\n @return {boolean} 마지막 뎁스인지 여부\n*/\nexport const getIsLastDepth = (activeKey: string, newData: NewDataType, maxDepth: number) => {\n if(!activeKey || !Array.isArray(newData) || !maxDepth) return false;\n\n const curMaxDepth = activeKey.split('-')?.length;\n const curNextDepthData = newData[curMaxDepth];\n const children = Array.isArray(curNextDepthData) ? curNextDepthData : curNextDepthData?.get(activeKey) || []; // curMaxDepth의 다음 뎁스 데이터\n\n return curMaxDepth === maxDepth || !Array.isArray(children) || children?.length === 0;\n};\n\n/*\n 디폴트 활성화 key값 (뎁스별 첫번째 요소 활성화)\n @param {number} maxDepth 최대 뎁스\n @return {string}\n*/\nexport const getDefaultActiveKey = (maxDepth: number = 0): string => {\n return Array(maxDepth).fill('0').join('-');\n};\n\n/*\n activeData를 {d1: value, d2: value, ...} 구조로 변경하는 함수\n @param {ActiveData} activeData 현재 활성화 데이터\n @return {{[key: string]: string}}\n*/\nexport const setActiveDataToObject = (activeData: ActiveDataType): {[key: string]: string} => {\n let activeDataObj: {[key: string]: string} = {};\n\n if(Array.isArray(activeData) && activeData.length > 0) {\n activeData.forEach((v: IItem, i: number) => {\n activeDataObj[`d${i + 1}`] = v.value;\n });\n }\n\n return activeDataObj;\n};\n\n/*\n 현재 디바이스가 pc인지 여부 확인\n @return {boolean}\n*/\nexport const getIsPc = (): boolean => {\n return document.body.classList.contains('pc');\n};\n\n/*\n device 변경 (body className 변경)\n - Jest 단위테스트에 사용됨\n @param {DeviceType} device 변경하고자 하는 디바이스명\n*/\nexport const switchDevice = (device: DeviceType) => {\n const bodyClassArr = document.body.className.split(' ');\n const deviceType = ['pc', 'tablet', 'mobile'];\n const curDeviceIndex = deviceType.findIndex(v => v === device);\n let newBodyClassArr = [];\n\n deviceType.splice(curDeviceIndex, 1);\n\n if(bodyClassArr.includes(device)) return;\n \n bodyClassArr.forEach(v => {\n if(!deviceType.includes(v)) {\n newBodyClassArr.push(v);\n }\n });\n \n newBodyClassArr.push(device);\n document.body.className = newBodyClassArr.join(' ');\n};\n\n/*\n state 변화 여부\n @param {any} originState\n @param {any} newState\n @return {boolean} isMutation state 변화 여부\n*/\nexport const getIsMutation = (originState: any, newState: any): boolean => {\n return originState !== newState;\n};","import DropdownStore from './DropdownStore';\nimport { getDefaultActiveKey, setActiveDataToObject } from './util';\nimport { IDropdownLayerConfig, LayerType, NewDataType, IItem, ActiveDataType, StateType, ActiveDataObjType } from \"../interface/IDropdown\";\n\nexport default class DropdownLayer {\n private layerEle: HTMLDivElement | null = null;\n private data: NewDataType;\n private layerType: LayerType;\n private useFitModeExceptPc: boolean;\n private defaultActiveKey: string;\n private changeCallback: ((curVal: ActiveDataObjType) => any) | null;\n private store: DropdownStore;\n\n constructor(_config: IDropdownLayerConfig) {\n const {data, parent, layerType, useFitModeExceptPc, changeCallback, store} = _config;\n\n this.store = store;\n this.data = data;\n this.layerType = layerType;\n this.useFitModeExceptPc = useFitModeExceptPc;\n this.defaultActiveKey = getDefaultActiveKey(this.store.state.maxDepth);\n this.changeCallback = changeCallback;\n\n this.init(parent);\n }\n\n private init(parent: Element) {\n this.renderLayerWrap(parent);\n\n if(this.layerType === 'basic') {\n this.renderLayerBasic();\n } else {\n this.renderLayerWide();\n }\n\n this.store.addListener('isOpen', (isOpen: boolean) => {\n isOpen ? this.open() : this.close();\n });\n\n this.store.addListener('activeKey', (activeKey: string) => {\n const { activeData } = this.store.state;\n if(activeData?.length === 0) return;\n\n this.setValue(activeKey, activeData);\n });\n }\n\n private templateMenuWrap(): string {\n let tmpl = '';\n\n for(let depth = 1; depth <= this.store.state.maxDepth; depth++) {\n tmpl += `
    `;\n }\n \n return tmpl;\n }\n\n /*\n 뎁스별 리스트 템플릿\n @param {IItem[]} data 뎁스별 리스트 데이터\n @return {string} tmpl 템플릿\n */\n private templateMenuList(data?: IItem[]): string {\n let tmpl = '';\n\n if(Array.isArray(data) && data?.length > 0) {\n let listTmpl = '';\n\n data.forEach((v: IItem) => {\n listTmpl += `
  • \n ${v?.title || ''}\n
  • `;\n });\n\n tmpl = `
      ${listTmpl}
    `;\n }\n \n return tmpl;\n }\n\n /*\n dropdownlayer wrap 동적 생성\n @param {Element} parent dropdownlayer wrap append할 부모 element\n */\n private renderLayerWrap(parent: Element) {\n const wrapTmpl = `
    `;\n parent?.insertAdjacentHTML('beforeend', wrapTmpl.trim());\n\n this.layerEle = parent.querySelector('.dropdown-layer-wrap');\n }\n\n /*\n dropdownlayer 기본 타입 (2단, 3단, ... 단 구성)\n */\n private renderLayerBasic() {\n const tmpl = this.templateMenuWrap();\n this.layerEle?.insertAdjacentHTML('beforeend', tmpl);\n this.renderMenuList(0, this.defaultActiveKey);\n }\n\n /*\n dropdownlayer wide 타입 (시세 등 1뎁스 첫번째 요소가 width: 100%로 노출)\n */\n private renderLayerWide() {\n if(!Array.isArray(this.data[0]) || this.data[0].length === 0) {\n return;\n }\n\n const depth1Data = this.data[0];\n const firstData = depth1Data[0];\n const tmpl = `\n
    \n ${this.templateMenuWrap()}\n
    `;\n\n this.layerEle?.insertAdjacentHTML('beforeend', tmpl);\n this.renderMenuList(0, this.defaultActiveKey);\n }\n\n\n /*\n 뎁스별 리스트 동적 생성\n @param {number} depth 리스트를 생성할 뎁스\n @param {string} activeKey 현재 활성화된 마지막 요소의 키값\n */\n private renderMenuList(depth: number = 0, activeKey: string) {\n const { maxDepth } = this.store.state;\n const activeSplitKey = activeKey ? activeKey?.split('-') : getDefaultActiveKey(maxDepth)?.split('-');\n\n for(let i = depth; i < maxDepth; i++) {\n const $wrap = this.layerEle?.querySelector(`.menu-${i + 1}`);\n if($wrap) {\n const key = activeSplitKey.slice(0, i).join('-');\n const data = this.data[i];\n const depthData = Array.isArray(data) ? data : data.get(key) || [];\n const copyDepthData = Array.isArray(depthData) ? [...depthData] : [];\n\n if(this.layerType === 'wide' && i === 0) {\n copyDepthData.splice(0, 1);\n }\n \n $wrap.innerHTML = this.templateMenuList(copyDepthData);\n }\n }\n }\n\n /*\n 레이어 오픈, 닫기 시 document 이벤트 add/remove\n @param {boolean} isAddEvent event 추가 여부\n */\n private toggleDocumentClickEvent(isAddEvent: boolean) {\n if(isAddEvent) {\n document.addEventListener('click', this.addDocumentClickEvent);\n } else {\n document.removeEventListener('click', this.addDocumentClickEvent);\n }\n }\n\n /*\n document 이벤트 핸들러\n @param {MouseEvent} e event 객체\n */\n private addDocumentClickEvent = (e: MouseEvent) => {\n const target = e.target as HTMLAnchorElement;\n const isTargetContainsDropdown = !!target.closest('.ncui-dropdown-wrap');\n const isTargetContainsLayer = this.layerEle?.contains(target);\n\n // 버튼 이벤트 위임 (this.$layer안의 a태그 / button 태그)\n if(isTargetContainsLayer && (target.tagName === 'A' || target.tagName === 'button')) {\n e.preventDefault();\n e.stopPropagation();\n\n const key = target.dataset.key || null;\n \n this.store.dispatch<'prevActiveKey', StateType['prevActiveKey']>('prevActiveKey', this.store.state.activeKey);\n this.store.dispatch<'activeKey', StateType['activeKey']>('activeKey', key);\n \n // 마지막 뎁스값 선택 시\n const { isLastDepth, activeData } = this.store.state;\n if(isLastDepth) {\n typeof this.changeCallback === 'function' && this.changeCallback(setActiveDataToObject(activeData));\n this.store.dispatch<'isOpen', StateType['isOpen']>('isOpen', false);\n }\n\n return;\n }\n\n // 외부 영역 클릭 시 dropdown 닫힘\n if(!isTargetContainsDropdown && !isTargetContainsLayer) {\n this.store.dispatch<'isOpen', StateType['isOpen']>('isOpen', false);\n }\n }\n\n /*\n 메뉴 a태그 스타일 활성화\n @param {ActiveDataType} activeData 활성화하려는 뎁스별 데이터\n */\n private dropdownActive(activeData: ActiveDataType) {\n activeData?.forEach((v, i) => {\n const depth = i + 1;\n let $wrap = this.layerEle?.querySelector(`.menu-${depth}`);\n let $prevDropdown = $wrap?.querySelector(`.is-active`);\n let $curDropdown = $wrap?.querySelector(`[data-key=\"${v?.key || ''}\"]`);\n\n if(this.layerType === 'wide' && i === 0) {\n const $menuWide = this.layerEle?.querySelector(`.menu-wide`);\n const $menuWideDropdown = $menuWide?.querySelector('a');\n\n if(v?.key === '0') {\n $curDropdown = $menuWideDropdown;\n } else {\n if($menuWideDropdown?.classList?.contains('is-active')) {\n $prevDropdown = $menuWideDropdown;\n }\n } \n }\n\n $prevDropdown?.classList?.remove('is-active');\n $curDropdown?.classList?.add('is-active');\n });\n }\n\n /*\n 이전, 현재 activeKey에서 depth별 index가 다른 depth 찾기\n @param {string} activeKey activeKey 활성화하려는 마지막 뎁스 요소의 키값\n @return {number | null} diffDepth 기존과 index값이 변경된 뎁스\n */\n private findDiffDepth(activeKey: string): number | null {\n const curSplitKey = activeKey?.split('-') || [];\n const prevSplitKey = this.store.state.prevActiveKey?.split('-') || [];\n let diffDepth = null;\n\n // 이전, 현재 activeKey에서 depth별 index가 다른 depth 찾기\n const hasDiffDepth = curSplitKey.some((depthIndex, i) => {\n if(depthIndex !== prevSplitKey[i]) {\n diffDepth = i;\n return true;\n }\n });\n\n if(!hasDiffDepth && (curSplitKey?.length !== prevSplitKey?.length)) {\n diffDepth = curSplitKey?.length < prevSplitKey?.length ? prevSplitKey?.length - 1 : curSplitKey?.length - 1;\n }\n\n return diffDepth;\n }\n\n open() {\n this.layerEle?.classList?.add('is-open');\n this.toggleDocumentClickEvent(true);\n }\n\n close() {\n this.layerEle?.classList?.remove('is-open');\n this.toggleDocumentClickEvent(false);\n }\n \n /*\n activeKey / activeData에 따른 DropdownLayer 활성화\n @param {string} activeKey 활성화하려는 마지막 뎁스 요소의 키값\n @param {ActiveDataType} activeData 활성화하려는 뎁스별 데이터\n */\n setValue(activeKey: string, activeData: ActiveDataType) {\n const diffDepth = this.findDiffDepth(activeKey);\n\n // diffDepth부터 새로 렌더링\n if(typeof diffDepth === 'number') {\n this.renderMenuList(diffDepth, activeKey);\n }\n\n this.dropdownActive(activeData);\n }\n}","import DropdownStore from './DropdownStore';\nimport { setActiveDataToObject } from './util';\nimport { IItem, ActiveDataObjType, IDropdownSelectConfig, StateType } from \"../interface/IDropdown\";\n\nclass DropdownSelect {\n private selectEle: HTMLSelectElement | null = null;\n private data: IItem[];\n private changeCallback: ((curVal: ActiveDataObjType) => any) | null;\n private store: DropdownStore;\n private isInitialCallbackCall: boolean;\n\n constructor({ data, parent, isInitialCallbackCall, changeCallback, store }: IDropdownSelectConfig) {\n this.data = data;\n this.changeCallback = changeCallback;\n this.store = store;\n this.isInitialCallbackCall = isInitialCallbackCall;\n\n this.init(parent);\n }\n\n private init(parent: Element) {\n parent?.insertAdjacentHTML('beforeend', this.template());\n this.selectEle = parent.querySelector('.dropdown-select');\n\n this.addEvent();\n\n this.store.addListener('activeKey', (activeKey: string) => {\n const isInitial = this.store.state.isInitial;\n\n this.setValue(activeKey);\n if((isInitial && this.isInitialCallbackCall) || !isInitial) {\n typeof this.changeCallback === 'function' && this.changeCallback(setActiveDataToObject(this.store.state.activeData));\n }\n });\n }\n\n private template() {\n let optionTmpl = '';\n\n this.data.forEach((v, i) => {\n optionTmpl += ``;\n });\n\n return `
    \n \n \n \n \n
    `;\n }\n\n private addEvent() {\n this.selectEle?.addEventListener('change', (e: Event) => {\n const target = e.target as HTMLSelectElement;\n const value = target?.value;\n const key = this.selectEle?.querySelector(`option[value=\"${value}\"]`)?.getAttribute('data-key') || null;\n this.store.dispatch<'activeKey', StateType['activeKey']>('activeKey', key);\n });\n }\n\n public setValue(key: string) {\n const value = this.selectEle?.querySelector(`option[data-key=\"${key}\"]`)?.getAttribute('value') || '';\n if(this.selectEle) {\n this.selectEle.value = value;\n }\n }\n}\n\nexport default DropdownSelect;","type CallbackType = (...args: any[]) => any;\n\nclass EventEmitter {\n private events: Map = new Map();\n private maxListenerLength = 10;\n\n constructor() {\n\n }\n\n addEvent(eventName: string, callback: CallbackType) {\n const eventList = this.events.get(eventName) || [];\n if(eventList.length > this.maxListenerLength) {\n console.log(`${eventName} 이벤트에 등록된 핸들러 개수가 최대 개수를 초과하였습니다.`);\n return;\n }\n\n eventList.push(callback);\n this.events.set(eventName, eventList);\n }\n\n removeEvent(eventName: string, callback: CallbackType) {\n const eventList = this.events.get(eventName);\n\n if(Array.isArray(eventList) && eventList.length > 0) {\n const funcIndex = eventList.findIndex((cb: CallbackType) => cb === callback);\n\n if(funcIndex > 0) {\n eventList.splice(funcIndex, 1);\n eventList.length > 0 ? this.events.set(eventName, eventList) : this.events.delete(eventName);\n }\n }\n }\n\n removeAllEvent() {\n this.events.clear();\n }\n\n emit(eventName: string, ...args: any[]) {\n const eventList = this.events.get(eventName);\n\n if(Array.isArray(eventList) && eventList.length > 0) {\n eventList.forEach((cb: CallbackType) => {\n cb(...args);\n });\n }\n }\n}\n\nexport default EventEmitter;","import EventEmitter from './EventEmitter';\nimport { getActiveData, getIsMutation, getIsLastDepth } from './util';\nimport { StateType } from '../interface/IDropdown';\n\nclass DropdownStore {\n private defaultStateData: StateType = {\n isOpen: false,\n activeKey: null,\n prevActiveKey: null,\n maxDepth: 1,\n newData: [],\n isLastDepth: false,\n activeData: [],\n isInitial: true\n };\n private stateData: StateType = this.defaultStateData;\n private emitter: EventEmitter = new EventEmitter();\n\n constructor() {\n\n }\n\n get state(): StateType {\n return this.stateData;\n }\n\n addListener(eventType: keyof StateType, callback: (...args: any[]) => any) {\n this.emitter.addEvent(eventType, callback);\n }\n\n setState(stateKey: K, data: T) {\n this.state[stateKey] = data;\n }\n\n dispatch(stateKey: K, data: T) {\n const prevState = this.state[stateKey];\n let isMutation = false;\n\n this.setState(stateKey, data);\n\n if(stateKey === 'activeKey' && typeof data === 'string') {\n const { newData, maxDepth } = this.state;\n this.setState('activeData', getActiveData(newData, data));\n this.setState('isLastDepth', getIsLastDepth(data, newData, maxDepth!));\n }\n\n isMutation = getIsMutation(prevState, this.state[stateKey]);\n isMutation && this.emitter.emit(stateKey, data);\n }\n\n reset() {\n this.stateData = this.defaultStateData;\n this.emitter.removeAllEvent();\n }\n}\n\nexport default DropdownStore;","import DropdownBtn from './DropdownBtn';\nimport DropdownLayer from './DropdownLayer';\nimport DropdownSelect from './DropdownSelect';\nimport DropdownStore from './DropdownStore';\nimport DropdownInstControl from './DropdownInstControl';\nimport { validateOption, findMaxDepth, setNewData, getActiveKeyFromValueArr, getDefaultActiveKey, getIsPc, setActiveDataToObject } from './util';\nimport { IDefaultOption, IDropdownConfig, OptionType, StateType, ActiveDataObjType, IItem } from '../interface/IDropdown';\nexport default class Dropdown {\n private dropdownBtn: DropdownBtn | null = null;\n private dropdownLayer: DropdownLayer | null = null;\n private dropdownSelect: DropdownSelect | null = null;\n private isPc: boolean = getIsPc();\n private option: OptionType;\n private store: DropdownStore = new DropdownStore();\n\n constructor(config: IDropdownConfig) {\n const defaultOption: IDefaultOption = {\n name: null,\n btnType: 'no-border',\n btnShowDepthLength: 0,\n layerType: 'basic',\n useSelectExceptPc: false,\n useFitModeExceptPc: false,\n isInitialActive: false,\n isInitialCallbackCall: false,\n changeCallback: null\n };\n\n this.option = {...defaultOption, ...config};\n\n if(!validateOption(this.option)) {\n return;\n }\n\n this.init();\n DropdownInstControl.addInstance(this); // 열려있는 다른 Dropdown 닫기 위해, Dropdown instance 생성 시 array에 담아둠\n\t}\n\n private init() {\n const maxDepth = findMaxDepth(this.option.data); // 최대 뎁스 구하기\n const newData = setNewData(this.option.data, maxDepth); // 데이터 가공\n\n this.option.parent.classList.add('ncui-dropdown-wrap');\n if(this.option.name) {\n this.option.parent.setAttribute('dropdown-name', this.option.name);\n }\n if(this.option.useFitModeExceptPc) {\n this.option.parent.classList.add('fit-mode');\n }\n this.store.dispatch<'maxDepth', StateType['maxDepth']>('maxDepth', maxDepth);\n this.store.dispatch<'newData', StateType['newData']>('newData', newData);\n \n // 버튼 생성\n this.dropdownBtn = new DropdownBtn({\n ...this.option,\n store: this.store\n });\n\n // 레이어 생성\n this.dropdownLayer = new DropdownLayer({\n ...this.option,\n data: this.store.state.newData,\n store: this.store\n });\n\n // Tablet, mobile일 때 select 사용 및 데이터 뎁스가 최대 1뎁스일 때 select 사용 가능\n if(this.option.useSelectExceptPc && this.store.state.maxDepth === 1 && !this.isPc) {\n this.dropdownSelect = new DropdownSelect({\n ...this.option,\n data: this.store.state.newData[0]!,\n store: this.store\n });\n }\n\n // 초기 로딩 시, 첫번째 요소 활성화할 때\n if(this.option.isInitialActive) {\n this.activeKey(getDefaultActiveKey(this.store.state.maxDepth));\n }\n }\n\n get isOpen(): boolean {\n return this.store.state.isOpen;\n }\n\n get activeData(): IItem[] {\n return this.store.state.activeData;\n }\n\n public openLayer() {\n DropdownInstControl.closeOpenDropdown(); // 열려있는 다른 Dropdown 닫음\n this.store.dispatch<'isOpen', StateType['isOpen']>('isOpen', true);\n }\n\n public closeLayer() {\n this.store.dispatch<'isOpen', StateType['isOpen']>('isOpen', false);\n }\n\n /*\n 외부에서 호출 - key값으로 활성화 (depth1Index-depth2Index-..., ex. 1-0-0)\n @param {string} key 활성화하려는 마지막 요소의 키값\n @return {ActiveDataType | void} this.activeData 현재 활성화된 전체 뎁스의 데이터\n */\n public activeKey(key: string): ActiveDataObjType {\n this.store.dispatch<'prevActiveKey', StateType['prevActiveKey']>('prevActiveKey', this.store.state.activeKey);\n this.store.dispatch<'activeKey', StateType['activeKey']>('activeKey', key);\n\n const { activeData, isLastDepth, isInitial } = this.store.state;\n const isCallbackCall = ((isInitial && this.option.isInitialCallbackCall) || !isInitial);\n const isNotSelectbox = !this.option.useSelectExceptPc || (this.option.useSelectExceptPc && this.isPc);\n \n // 초기 실행 시 콜백 실행 막을 수 있도록 옵션 추가 및 selectbox일 때는 DropdownSelectbox에서 콜백 실행 처리\n if(isCallbackCall && isNotSelectbox && isLastDepth) {\n typeof this.option.changeCallback === 'function' && this.option.changeCallback(setActiveDataToObject(activeData));\n }\n\n if(isInitial) {\n this.store.setState('isInitial', false);\n }\n\n return setActiveDataToObject(activeData);\n }\n\n /*\n 외부에서 호출 - value값으로 활성화 ([depth1Value, depth2Value, ...], ex. ['dropdown1', 'dropdown2'])\n - 단 뎁스별 데이터는 정확해야 함 (뎁스 한군데라도 데이터가 다르면 활성화 안됨)\n @param {string[]} valueArr 활성화하려는 요소의 각 뎁스별 value\n @return {ActiveDataObjType} this.activeData 현재 활성화된 전체 뎁스의 데이터\n */\n public activeValue(valueArr: string[]): ActiveDataObjType{\n const key = getActiveKeyFromValueArr(valueArr, this.store.state.newData);\n \n if(key) {\n return this.activeKey(key);\n }\n\n if(this.store.state.isInitial) {\n this.store.setState('isInitial', false);\n }\n\n return {};\n }\n\n /*\n 외부에서 호출 - 완전 초기화\n - 새로운 옵션값 받아서 초기화 가능\n @param {IDropdownConfig} _config 새로운 옵션값\n */\n public reset(config: IDropdownConfig) {\n this.option = {...this.option, ...config};\n\n if(!validateOption(this.option)) {\n return;\n }\n\n this.option.parent.innerHTML = '';\n this.store.reset();\n this.init();\n };\n\n static otherDropdownClose(dropdownInstArr: Dropdown[]) {\n if(!Array.isArray(dropdownInstArr) || dropdownInstArr?.length === 0) {\n return;\n }\n\n dropdownInstArr.forEach(v => {\n if(v.isOpen) {\n v.closeLayer();\n } \n });\n }\n}\n// end of class","export function getLang( { onlyUsingLanguageArr, defaultLang, }: { onlyUsingLanguageArr: Lang[]; defaultLang: Lang } = { onlyUsingLanguageArr: [], defaultLang: 'en'} ): Lang {\n let lang = document.documentElement.getAttribute('lang') || defaultLang;\n let langs: Lang;\n\n // html의 lang 속성이 허용된 언어안에 있는지 확인\n if(isPermitLanguage(onlyUsingLanguageArr, lang)){\n langs = lang;\n }else{\n langs = defaultLang\n }\n return langs;\n}\n\nfunction isPermitLanguage(onlyUsingLanguageArr: Lang[], lang: string): lang is Lang {\n if(onlyUsingLanguageArr.length > 0 ){\n return onlyUsingLanguageArr.includes(lang as Lang);\n }else{\n return true;\n }\n}\n\nexport function getCountry( { onlyUsingCountry, defaultCountry, }: { onlyUsingCountry?: string[]; defaultCountry: string } = { defaultCountry: 'KR', } ): string {\n // let country = $('html').attr('data-country') || defaultCountry;\n let country = document.documentElement.dataset.country || defaultCountry;\n\n // html의 data-country 속성이 허용된 국가안에 있는지 확인\n if ( onlyUsingCountry && onlyUsingCountry.length > 0 && !onlyUsingCountry.includes(country) ) {\n country = defaultCountry;\n }\n\n return country;\n}\n\nexport function getPlayncDomain(): string {\n let env = getSeviceEnv();\n let url = '';\n switch (env) {\n case 'opdev':\n url = 'https://opdev-www.plaync.com';\n break;\n case 'sandbox':\n url = 'https://opdev-www.plaync.com';\n break;\n case 'rc':\n url = 'https://rc-www.plaync.com';\n break;\n default:\n url = 'https://www.plaync.com';\n break;\n }\n return url;\n}\n\nexport function getWstaticUrlObjectStorage(): string {\n let env = getSeviceEnv();\n let url = '';\n switch (env) {\n case 'opdev':\n url = 'https://op-assets.ncsoft.com';\n break;\n case 'sandbox':\n url = 'https://sb-assets.plaync.com';\n break;\n case 'rc':\n url = 'https://rc-assets.playnccdn.com';\n break;\n default:\n url = 'https://assets.playnccdn.com';\n break;\n }\n return url;\n}\n\n\nexport function getWstaticUrl(): string {\n let env = getSeviceEnv();\n let url = '';\n switch (env) {\n case 'opdev':\n url = 'https://op-wstatic.ncsoft.com';\n break;\n case 'sandbox':\n url = 'https://sb-static.plaync.com';\n break;\n case 'rc':\n url = 'https://rc-wstatic.plaync.co.kr';\n break;\n default:\n url = 'https://wstatic-cdn.plaync.com';\n break;\n }\n return url;\n}\n\nexport const getSeviceEnv = (): string => {\n if (/^(rc-tw.)/.test(location.hostname)) {\n return 'rc-tw';\n } else if (/^(tw.)/.test(location.hostname)) {\n return 'tw';\n } else if (/^(rc\\.|rc-)/.test(location.hostname)) {\n return 'rc';\n } else if (/^opdev/.test(location.hostname)) {\n return 'opdev';\n } else if (/^op-/.test(location.hostname)) {\n return 'opdev';\n } else if (/^op./.test(location.hostname)) {\n return 'opdev';\n } else if (/^sb-|sb\\./.test(location.hostname)) {\n return 'sandbox';\n } else if (/^local/.test(location.hostname)) {\n return 'opdev';\n } else {\n return 'live';\n }\n};\n\nexport function getContiApiLocale(lang: string): string {\n let result = '';\n switch (lang) {\n case 'ar':\n result = 'ar-AE';\n break;\n case 'en':\n result = 'en-US';\n break;\n case 'id':\n result = 'id-ID';\n break;\n case 'ja':\n result = 'ja-JP';\n break;\n case 'ko':\n result = 'ko-KR';\n break;\n case 'th':\n result = 'th-TH';\n break;\n case 'zh':\n result = 'zh-TW';\n break;\n case 'ru':\n result = 'ru-RU';\n break;\n default:\n result = 'en-US';\n break;\n }\n return result;\n}\n\nexport function getPlayncContiDomain(): string {\n let env = getSeviceEnv();\n let domain = '';\n switch (env) {\n case 'opdev':\n domain = 'https://rc-www.plaync.com';\n break;\n case 'sandbox':\n domain = 'https://rc-www.plaync.com';\n break;\n case 'rc':\n domain = 'https://rc-www.plaync.com';\n break;\n default:\n domain = 'https://www.plaync.com';\n break;\n }\n return domain;\n}\n\n","\n\nconst l10n: I18NCookieSetLayerTextData = {\n\t\"confirmToast\":{\n \"content\":\"تقوم NCSOFT بإدارة معلوماتك الشخصية بأمان.
    نحن نستخدم ملفات تعريف الارتباط (Cookie) وتقنيات التتبع الأخرى لتحسين أداء موقع الويب، ولإرسال إعلانات على اهتماماتك، ولتحسين خدماتنا باستمرار عن طريق تخزين معلوماتك لأغراض تحليل حركة المرور وإحصاءات الزوار.
    \\\"بالنقر على 'موافق على الكل' ، فإنك توافق على تخزين ملفات تعريف الارتباط على جهازك، وبالنقر فوق 'رفض الكل'، لا يتم تخزين ملفات تعريف الارتباط باستثناء ملفات تعريف الارتباط الإجبارية.
    يمكنك التحقق من التفاصيل وتغيير الموافقة أو سحبها في أي وقت عن طريق سياسة ملفات تعريف الارتباط.\",\n \"BtnApply\": \"الموافقة على الكل\",\n \"BtnDeny\": \"رفض الكل\",\n \"BtnApplyOptional\": \"موافقة اختيارية\",\n \"BtnSetting\": \"إعداد\"\n },\n \"settingModal\":{\n \"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\n\nexport default l10n;\n","import ar from './ar'\nimport en from './en'\nimport id from './id'\nimport ja from './ja'\nimport ko from './ko'\nimport ru from './ru'\nimport th from './th'\nimport zh from './zh'\n\nconst l10n: Record = { ar, en, id, ja, ko, ru, th, zh }\nexport default l10n\n","const l10n: I18NCookieSetLayerTextData = {\n\n \"confirmToast\":{\n \"content\": \"NCSOFT manages your personal information with safety.
    We use cookies and other tracking technologies to enhance website performance and provide targeted ads. We aim to improve continuously by saving user-related information for the purpose of traffic analysis and visitor statistics.
    By clicking “Agree to All”, you’re agreeing to save cookies on your device, and by clicking “Decline All”, only the strictly necessary cookies will be saved.
    You can always find the details from Cookie Policy and change the agreement settings or withdraw.\",\n \"BtnApply\": \"Agree to All\",\n \"BtnDeny\": \"Decline All\",\n \"BtnApplyOptional\": \"Optional consent\",\n \"BtnSetting\": \"Settings\"\n },\n \"settingModal\":{\n \"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\t\"confirmToast\":{\n \"content\": \"NCSOFT mengelola informasi pribadi Anda dengan aman.
    Kami menggunakan cookie dan teknologi pelacakan lainnya untuk senantiasa meningkatkan kinerja situs web dan memberikan iklan yang sesuai dengan preferensi Anda. Kami menyimpan informasi yang berkaitan dengan Anda untuk tujuan analisis lalu lintas dan statistik pengunjung, guna menyediakan layanan yang lebih baik.
    Dengan memilih \\\"Setujui Semua\\\", Anda menyetujui penyimpanan cookie di perangkat Anda. Klik \\\"Tolak Semua\\\" untuk menolak penyimpanan semua cookie kecuali cookie wajib.
    Anda dapat melihat rincian dan mengubah persetujuan kapan saja melalui Kebijakan Cookie.\",\n \"BtnApply\": \"Setujui Semua\",\n \"BtnDeny\": \"Tolak Semua\",\n\t\t\"BtnApplyOptional\": \"Setujui Pilihan\",\n \"BtnSetting\": \"Pengaturan\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\t\"confirmToast\":{\n \"content\": \"NCSOFTはお客様の個人情報を安全に管理しています。
    当社はCookieやその他追跡技術を使用し、Webサイトの性能向上を行うとともに関心のありそうな広告を送信し、トラフィック分析および閲覧者の統計を目的としたお客様に関連する情報を保存することで、サービスを改善し続けていきます。
    「すべて同意」をクリックすると、お客様のデバイスにCookieを保存することに同意したとみなされ、「すべて拒否」をクリックすると、必須Cookie以外のすべてが保存されません。
    いつでもクッキーポリシーから詳細内容の確認および同意の有無を変更、撤回することができます。\",\n \"BtnApply\": \"すべて同意\",\n \"BtnDeny\": \"すべて拒否\",\n\t\t\"BtnApplyOptional\": \"選択同意\",\n \"BtnSetting\": \"設定\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\n\t\"confirmToast\":{\n \"content\": \"NCSOFT는 귀하의 개인정보를 안전하게 관리하고 있습니다.
    당사는 쿠키 및 기타 추적 기술을 사용하여 웹사이트 성능 향상과 함께 선호도에 맞는 광고를 전송하며, 트래픽 분석 및 방문자 통계 목적으로 귀하와 관련된 정보를 저장하여 서비스를 지속적으로 개선하고자 합니다.
    \\\"모두 동의\\\"를 클릭하면 귀하의 기기에 쿠키를 저장하는 데 동의하는 것이며, \\\"모두 거부\\\"를 클릭하면 필수 쿠키 외 모두 저장되지 않습니다.
    언제든지 쿠키정책을 통해 세부내용 확인 및 동의여부를 변경하거나 철회 할 수 있습니다.(EN)\",\n \"BtnApply\": \"모두 동의\",\n \"BtnDeny\": \"모두 거부\",\n\t\t\"BtnApplyOptional\": \"선택 동의\",\n \"BtnSetting\": \"설정\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\n\t\"confirmToast\":{\n \"content\": \"NCSOFT использует информацию пользователей, соблюдая меры безопасности.
    NCSOFT использует файлы куки и иные функции отслеживания в целях повышения функциональности сайта, предоставления персонализированной рекламы, анализа трафика, а также ведения статистики пользователей.
    Нажав «Разрешить все», вы соглашаетесь с использованием всех файлов куки. В случае нажатия «Запретить все», будут сохраняться только обязательные файлы куки.
    Вы можете в любое время ознакомиться с дополнительной информацией, а также изменить или отменить согласие с использованием файлов куки в разделе Политика использования Cookies\",\n \"BtnApply\": \"Разрешить все\",\n \"BtnDeny\": \"Запретить все\",\n\t\t\"BtnApplyOptional\": \"Согласие (не обязательно)\",\n \"BtnSetting\": \"Настройки\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\n\t\"confirmToast\":{\n \"content\": \"NC SOFT ได้ดูแลข้อมูลส่วนตัวของท่านไว้อย่างปลอดภัย
    ทางเราใช้คุกกี้และเทคโนโลยีการติดตามอื่นๆ เพื่อปรับปรุงประสิทธิภาพของเว็บไซต์ รวมถึงการส่งโฆษณาที่เหมาะกับความต้องการของท่าน เพื่อปรับปรุงบริการของเราอย่างต่อเนื่องโดยจัดเก็บข้อมูลเกี่ยวกับท่านเพื่อวัตถุประสงค์ในการวิเคราะห์การเข้าชมและสถิติผู้เยี่ยมชม
    หากกดปุ่ม \\\"ยอมรับทั้งหมด\\\" จะยอมรับการบันทึกคุกกี้ในอุปกรณ์ของท่าน และหากกดปุ่ม \\\"ไม่ยอมรับทั้งหมด\\\" จะไม่บันทึกคุกกี้ทั้งหมดยกเว้นคุกกี้ที่จำเป็น
    ท่านสามารถตรวจสอบรายละเอียดและเปลี่ยนแปลงหรือถอนความยินยอมได้ตลอดเวลาผ่าน นโยบายคุกกี้\",\n \"BtnApply\": \"ยอมรับทั้งหมด\",\n \"BtnDeny\": \"ไม่ยอมรับทั้งหมด\",\n\t\t\"BtnApplyOptional\": \"ยอมรับการเลือก\",\n \"BtnSetting\": \"ตั้งค่า\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","const l10n: I18NCookieSetLayerTextData = {\n\n\t\"confirmToast\":{\n \"content\": \"NCSOFT安全地管理您的個人資訊。
    我司使用Cookie及其他追蹤技術來提高網站功能,同時會根據您的喜好來傳送合適的廣告,並以流量分析及訪問者統計為目的,儲存您的相關資訊以便能持續改善服務。
    若點選「全部同意」,則表示同意在您的裝置中儲存Cookie;若點選「全部拒絕」,則除了必要Cookie外,不會儲存任何Cookie。
    您隨時皆可透過Cookie政策來確認詳細內容,並可變更或取消同意與否選項。\",\n \"BtnApply\": \"全部同意\",\n \"BtnDeny\": \"全部拒絕\",\n\t\t\"BtnApplyOptional\": \"同意選擇\",\n \"BtnSetting\": \"設定\"\n },\n \"settingModal\":{\n\t\t\"msgSuccess\": \"Changes made to settings have been saved.\",\n \"titleLayer\": \"PLAYNC COOKIE SETTINGS\",\n \"topDesc\": \"When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience.
    Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and change our default settings. However, blocking some types of cookies may impact your experience of the site and the services we are able to offer.
    In some cases, data obtained from cookies is shared with third parties and may be considered a “sale of personal information” under the California Consumer Privacy Act(CCPA). You can exercise your right to opt-out of that sharing at any time by disabling cookies. To find out more please read our cookie policy.\",\n \"chkRequired\": \"Necessary cookies\",\n \"chkOptional\": \"Functional cookies\",\n \"chkOptional2\": \"Performance or Analytical Cookies\",\n \"chkOptional3\": \"Targeting / Advertising Cookies\",\n \"btnApply\": \"Save settings\",\n \"tabRequired\": \"Necessary cookies\",\n \"tabOptional\": \"Functional cookies\",\n \"tabOptional2\": \"Performance or Analytical Cookies\",\n \"tabOptional3\": \"Targeting / Advertising Cookies\",\n \"requiredDesc\": \"These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in, or filling in forms. You can set your browser to block or alert you to the use of these cookies, but please note that if you block necessary cookies, then some parts of the website may not function properly.\",\n \"optionalDesc\": \"These cookies enable the website to provide enhanced functionality and personalization (such as choice of language or mobile device preferences). They may be set by us or by third party providers whose services we have added to our pages. If you block these cookies then some or all of these services may not function properly.\",\n \"optional2Desc\": \"These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our website. They help us to know which pages are the most and least popular and see how visitors move around the website. The information collected by these cookies is aggregated. If you do not allow these cookies we will not know when you have visited our website, and will not be able to monitor its performance.\",\n \"optional3Desc\": \"These cookies may be set through our website by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They store information that is based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\",\n \"providerColum\": \"Provider\",\n \"nameColum\": \"Cookie name\",\n \"purposeColum\": \"Purpose\",\n \"dataColum\": \"Lifespan\",\n \"typeColum\": \"Type\"\n }\n}\nexport default l10n;\n","import axios from 'axios';\nimport { getLang, getWstaticUrlObjectStorage, getWstaticUrl, getContiApiLocale, getPlayncContiDomain, getPlayncDomain } from '../util/util';\nimport l10n from '../l10n';\n// 서버에서 쿠키 동의 내용 저장 하기\nexport async function cookieLog(data: unknown): Promise {\n try{\n let result = await axios({\n method: 'post',\n headers: {\n 'content-type': 'application/json',\n },\n responseType: 'json',\n url: `${getPlayncDomain()}/cookie/log`,\n data\n });\n\n return result.data;\n\n }catch(err){\n // console.error('cookieLog fail');\n // return testData;\n throw(err);\n }\n}\n\n// i18n 텍스트 가져오기\nexport async function getI18NMessage(lang: 'ar' | 'en' | 'id' | 'ja' | 'ko' | 'th' | 'zh' | 'ru'): Promise{\n let wstaticUrl = getWstaticUrlObjectStorage();\n\n try{\n // let result = await axios({\n // method: 'get',\n // responseType: 'json',\n // url: `${wstaticUrl}/i18n/global-cookie/${lang}.json`\n // });\n\n return l10n[lang];\n\n }catch(err){\n // console.error(`Get Json: ${lang} fail`);\n // return testData;\n throw(err);\n }\n}\n\n// Conti 에서 쿠키정보 가져오기\nexport async function getCookieData(country:string, contiApiUrl: string): Promise{\n let _country = country.toLowerCase();\n let _service = document.documentElement.dataset.service;\n\n // https://www.plaync.com/global/index\n // https://lineage2m.plaync.com/naeu/index?redirect=false\n if(_country === 'us' || _country === 'nc'){\n _country = 'global'\n }else if(_country === 'mo'){\n // https://tl.plaync.com/mo/index?redirect=false\n _country = 'my'\n }\n\n // let path = `/${_country}/conti/getContentGroup?service=plaync&groupAlias=global-cookie-list-group&subAlias=en-US`;\n // let path = `${getPlayncContiDomain()}/${_country}/conti/getContentGroup?service=plaync&groupAlias=global-cookie-list-group&subAlias=en-US`;\n // let path = contiApiUrl || `${getPlayncContiDomain()}/${_country}/conti/getContentGroup?service=plaync&groupAlias=global-cookie-list-group&subAlias=en-US`;\n let path = contiApiUrl || `${getPlayncContiDomain()}/conti/getContentGroup?service=plaync&groupAlias=global-cookie-list-group&subAlias=en-US`;\n\n try{\n let result = await axios({\n method: 'get',\n responseType: 'json',\n url: path,\n withCredentials: true,\n });\n\n return result.data;\n\n }catch(err){\n // console.error('Get Conti Data fail');\n // return tempCookieDatas;\n throw(err);\n }\n}\n\n\n// let tempCookieDatas: ContiAPIResponse = {\n// 'service': 'plaync',\n// 'alias': 'global-cookie-list',\n// 'acceptLanguage': 'en-US',\n// 'contentId': 4740,\n// 'version': 2,\n// 'compiledResource': '',\n// 'domAttribute': {\n// 'html': '',\n// 'script': '',\n// 'css': '',\n// 'scss': '',\n// 'jsonData': '{ \"required\": [ { \"name\": \"필수쿠키1 - 이름\", \"purpose\": \"필수쿠키1 - 목적\", \"date\": \"2달\", \"type\": \"필수쿠키1 - 유형\" }, { \"name\": \"필수쿠키2 - 이름\", \"purpose\": \"필수쿠키2 - 목적\", \"date\": \"1달\", \"type\": \"필수쿠키2 - 유형\" }, { \"name\": \"필수쿠키3 - 이름\", \"purpose\": \"필수쿠키3 - 목적\", \"date\": \"2일\", \"type\": \"필수쿠키3 - 유형\" }, { \"name\": \"필수쿠키4 - 이름\", \"purpose\": \"필수쿠키4 - 목적\", \"date\": \"세션\", \"type\": \"필수쿠키4 - 유형\" } ], \"optional\": [ { \"name\": \"선택쿠키1 - 이름\", \"purpose\": \"선택쿠키1 - 이름\", \"date\": \"2달\", \"type\": \"선택쿠키1 - 이름\" }, { \"name\": \"선택쿠키2 - 이름\", \"purpose\": \"선택쿠키2 - 이름\", \"date\": \"6달\", \"type\": \"선택쿠키2- 이름\" }, { \"name\": \"\", \"purpose\": \"\", \"date\": \"\", \"type\": \"\" } ]}'\n// },\n// 'enabled': true,\n// 'groupAlias': '',\n// 'subAlias': '',\n// 'script': '',\n// 'html': '',\n// 'css': '',\n// 'scss': '',\n// 'jsonData': '{ \"required\": [ { \"name\": \"필수쿠키1 - 이름\", \"purpose\": \"필수쿠키1 - 목적\", \"date\": \"2달\", \"type\": \"필수쿠키1 - 유형\" }, { \"name\": \"필수쿠키2 - 이름\", \"purpose\": \"필수쿠키2 - 목적\", \"date\": \"1달\", \"type\": \"필수쿠키2 - 유형\" }, { \"name\": \"필수쿠키3 - 이름\", \"purpose\": \"필수쿠키3 - 목적\", \"date\": \"2일\", \"type\": \"필수쿠키3 - 유형\" }, { \"name\": \"필수쿠키4 - 이름\", \"purpose\": \"필수쿠키4 - 목적\", \"date\": \"세션\", \"type\": \"필수쿠키4 - 유형\" } ], \"optional\": [ { \"name\": \"선택쿠키1 - 이름\", \"purpose\": \"선택쿠키1 - 이름\", \"date\": \"2달\", \"type\": \"선택쿠키1 - 이름\" }, { \"name\": \"선택쿠키2 - 이름\", \"purpose\": \"선택쿠키2 - 이름\", \"date\": \"6달\", \"type\": \"선택쿠키2- 이름\" }, { \"name\": \"\", \"purpose\": \"\", \"date\": \"\", \"type\": \"\" } ]}'\n// };\n\nlet testData: I18NCookieSetLayerTextData = {\n confirmToast:{\n content: 'PLAYNC 사이트는 보다 향상된 사이트 이용을 위해 쿠키를 사용합니다. 본 레이어를 닫거나 동의 버튼을 클릭하면 귀하의 동의를 나타냅니다. 쿠키에 대한 자세한 안내는 쿠키정책 에서 확인 가능합니다.',\n BtnApply: '모두 동의',\n BtnApplyOptional: '선택 동의',\n BtnDeny: '모두 거부',\n BtnSetting: '설정'\n },\n settingModal:{\n msgSuccess:'저장하였습ㄴ디ㅏ.',\n titleLayer: 'PLAYNC 쿠키 설정',\n topDesc: 'NCSOFT ( \"당사\")는 쿠키를 사용하여 웹 사이트를 운영하고 개인화 된 콘텐츠를 표시하고 비즈니스로서의 목표를 관리합니다. 아래에서 당사가 쿠키를 사용하는 방법에 대해 자세히 알아볼 수 있습니다. 모든 쿠키를 허용하거나 개별적으로 선택하거나 모두 거부 할 수 있습니다. 언제든지 쿠키정책에서 더 많은 정보를 확인할 수 있습니다 .',\n chkRequired: '필수쿠키 허용',\n chkOptional: '선택쿠키 허용',\n chkOptional2: '선택쿠키2 허용',\n chkOptional3: '선택쿠키2 허용',\n btnApply: '저장하기',\n tabRequired: '필수쿠키',\n tabOptional: '선택쿠키',\n tabOptional2: '선택쿠키2',\n tabOptional3: '선택쿠키2',\n requiredDesc: '필수 쿠키는 보안, 네트워크 관리 및 접근성과 같은 핵심 기능을 활성화합니다. 브라우저 설정을 변경하여 이러한 기능을 비활성화 할 수 있지만 이는 웹 사이트 작동 방식에 영향을 미칠 수 있습니다.',\n optionalDesc: '선택 쿠키는 보안, 네트워크 관리 및 접근성과 같은 핵심 기능을 활성화합니다. 브라우저 설정을 변경하여 이러한 기능을 비활성화 할 수 있지만 이는 웹 사이트 작동 방식에 영향을 미칠 수 있습니다.',\n optional2Desc: '선택 쿠키2는 보안, 네트워크 관리 및 접근성과 같은 핵심 기능을 활성화합니다. 브라우저 설정을 변경하여 이러한 기능을 비활성화 할 수 있지만 이는 웹 사이트 작동 방식에 영향을 미칠 수 있습니다.',\n optional3Desc: '선택 쿠키2는 보안, 네트워크 관리 및 접근성과 같은 핵심 기능을 활성화합니다. 브라우저 설정을 변경하여 이러한 기능을 비활성화 할 수 있지만 이는 웹 사이트 작동 방식에 영향을 미칠 수 있습니다.',\n providerColum: '이름',\n nameColum: '이름',\n purposeColum: '목적',\n dataColum: '기간',\n typeColum: '유형',\n }\n};\n\n","\nexport const GCookieConfirmToastId = 'gCookieConfirmToast';\nexport const GCookieConfirmToastClass = 'g-cookie-confirm-toast';\n\n\nexport const ContentWrap = 'g-cookie-content';\nexport const BtnWrap = 'g-cookie-btn-wrap';\nexport const Btn = 'g-cookie-btn';\nexport const BtnApply = 'g-cookie-btn-apply';\nexport const BtnApplyOptional = 'g-cookie-btn-apply-optional';\nexport const BtnDeny = 'g-cookie-btn-deny';\nexport const BtnConfig = 'g-cookie-btn-config';\nexport const GCookieConfirmDimmedId = 'gCookieConfirmDimmed';\nexport const GCookieConfirmDimmedClass = 'g-cookie-confirm-dimmed';\nexport const IsActive= 'is-active';\n\n// ConfirmToast 탬플릿\nexport function getConfirmToastTemplate(textData: ConfirmToastTextData, zIndex?: number): string {\n return `\n
    \n
    \n
    \n
    \n ${textData.content}\n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n ${textData.BtnSetting}\n
    \n
    \n
    \n
    ${textData.BtnDeny}
    \n
    ${textData.BtnApplyOptional}
    \n
    ${textData.BtnApply}
    \n
    \n
    \n
    \n
    \n`;\n}\n\n","\nexport const namespace = (_namespace = 'window.console', _parent = window) => {\n if (typeof _namespace === 'string' && _namespace) {\n let parts = _namespace.split('.');\n for (let i = 0, max = parts.length; i < max; i++) {\n if (!_parent[parts[i]]) _parent[parts[i]] = {};\n _parent = _parent[parts[i]];\n }\n }\n return _parent;\n};\n\n\n\nexport const getUriParam = (uri, parameterName) => {\n if (uri.length < 1) return '';\n uri = uri.split('#')[0];\n\n let tmpArr = uri.split('?');\n if (tmpArr.length < 2) return '';\n\n let paramStr = tmpArr[1],\n params = paramStr.split('&');\n\n for (let param = '', eqIndex = -1, keyStr = '', valueStr = '', i = 0, max = params.length; i < max; ++i) {\n param = params[i];\n\n eqIndex = param.indexOf('=');\n if (eqIndex >= 0) {\n keyStr = param.substr(0, eqIndex);\n valueStr = param.substr(eqIndex + 1);\n\n if (keyStr === parameterName) return valueStr;\n }\n }\n\n return '';\n};\n\n\n/**\n * 쿠키 세팅\n * @param {String} name 쿠키이름\n * @param {String} value 쿠키값\n * @param {Number} expiredays 만료날짜\n * @example\n * setCookie('topBanner', 'show', 1);\n */\n export const setCookie = (name = '', value = '', expiredays = 1, domain) => {\n let todayDate = new Date();\n todayDate.setDate(todayDate.getDate() + expiredays);\n\n\n // expiredays가 0이면 session 쿠키가 만들어짐\n\n if(expiredays === 0){\n document.cookie = `${name}=${encodeURIComponent(value)}; path=/; SameSite=Lax;; domain=${domain ? domain : ''}`;\n }else{\n document.cookie = `${name}=${encodeURIComponent(value)}; path=/; expires=${todayDate.toGMTString()};SameSite=Lax;; domain=${domain ? domain : ''}`;\n }\n};\n\n/**\n* 쿠키 확인\n* @param {String} name 쿠키이름\n* @returns {String}\n* @example\n* getCookie('topBanner') == 'show' // true : 쿠키가 입력 되어 있는 상태\n*/\nexport const getCookie = (name = '') => {\n let cookies = document.cookie;\n if (cookies.indexOf(name) == -1) return false;\n let cookie = cookies.substr(cookies.indexOf(name));\n cookie = cookie.split(';')[0];\n cookie = cookie.substr(cookie.indexOf('=') + 1);\n return cookie;\n};\n\n\nexport const getCookies = function(){\n var pairs = document.cookie.split(';');\n var cookies = {};\n for (var i=0; i string[];\n\n abstract cookieNamesToDelete: ReturnType['_getNotAppiedCookieNames']>;\n\n constructor(){\n this.APPLY_COOKIE = 'applyCookie';\n // this.URL_COOKIE_POLICY = `${getPlayncDomain()}/policy/cookiepolicy?locale=${getLang({onlyUsingLanguageArr: ['ar', 'en', 'id', 'ja', 'ko', 'th', 'zh', 'ru'], defaultLang: 'en'})}-${getCountry()}`;\n this.URL_COOKIE_POLICY = `${getPlayncDomain()}/policy/cookiepolicy`;\n this.URL_COOKIE_POLICY_LAYER_OPEN = `${this.URL_COOKIE_POLICY}?showLayer=true`;\n // this.URL_COOKIE_POLICY_LAYER_OPEN = `${this.URL_COOKIE_POLICY}?showLayer=true&locale=${getLang({onlyUsingLanguageArr: ['ar', 'en', 'id', 'ja', 'ko', 'th', 'zh', 'ru'], defaultLang: 'en'})}-${getCountry()}`;\n\n }\n\n // 필수쿠키만 저장하기\n _applyCookieOnlyRequired(curOptCookieListVer: string, targetHref: string): void{\n this._applyCookie(['NECESSARY'], curOptCookieListVer, targetHref);\n }\n\n // 모든타입의 쿠키 저장하기\n _applyCookieAll(curOptCookieListVer: string, targetHref: string): void{\n let applyCookieTypeAll: ApplyCookieTypeAll = ['NECESSARY', 'FUNCTIONAL', 'PERFORMANCE', 'ADVERTISING'];\n this._applyCookie(applyCookieTypeAll, curOptCookieListVer, targetHref);\n }\n\n\n // 쿠키허용상태 저장하기 클릭\n _applyCookie(applyCookieTypeArr: ApplyCookieTypeArr, optCookieListVer: string, targetHref: string): boolean{\n let data: ApplyCookieStateCookie = {\n typeArr: applyCookieTypeArr,\n optCookieListVer\n };\n let dataJson = JSON.stringify(data);\n\n // applyCookie 쿠키생성\n setCookie(this.APPLY_COOKIE, dataJson, 180, '.plaync.com');\n\n // 서버에 전송\n cookieLog(dataJson);\n\n // 저장하지 않은 타입의 First-party 쿠키 삭제\n this.deleteCookies(this.cookieNamesToDelete);\n\n // 페이지 리로드\n setTimeout(()=>{\n if(targetHref === location.href) {\n location.reload();\n }else{\n location.href = targetHref;\n }\n },0);\n\n\n return false;\n }\n\n // 토스트창 출력해도 되는지 확인\n _chkIsOpenLayer(curOptCookieListVer: string): boolean{\n // 언어가 한국어 일경우 토스트창 출력 안함!\n if(this.isKoreaLanguge()) return false;\n\n let data = getCookie(this.APPLY_COOKIE);\n\n // 쿠키허용상태를 저장한 쿠키가 없는경우 & 6개월 초과된 경우(6개월 초과되면 자동으로 쿠키허용상태를 저장한 쿠키가 삭제)\n if(!data) return true;\n\n try{\n let dataObj: ApplyCookieStateCookie = JSON.parse(window.decodeURIComponent(data)); // setCookie 유틸에서 자동으로 encodeURIComponent 를 실행한다.\n\n // 기존에 전부 허용이 아니면서 && 쿠키리스트의 갱신이 있었던 경우\n if(!this._isAllCookieApply(dataObj.typeArr) && dataObj.optCookieListVer !== curOptCookieListVer){\n return true;\n }\n }catch(err){\n setCookie(this.APPLY_COOKIE, '', 0, '.plaync.com');\n\n return true;\n }\n\n return false;\n }\n\n // 모든 타입의 쿠키를 허용한 상태인지 확인\n _isAllCookieApply(typeArr: ApplyCookieTypeArr): boolean{\n let applyCookieTypeAll: ApplyCookieTypeAll = ['NECESSARY', 'FUNCTIONAL', 'PERFORMANCE', 'ADVERTISING'];\n return this._isArrHasAllTraget(typeArr, applyCookieTypeAll);\n }\n\n // (유틸) 어떤 배열에 주어진 값이 전부 있는지 확인\n _isArrHasAllTraget(targetArr: unknown[], searchArr: unknown[]): boolean{\n let result = true;\n\n searchArr.forEach((search)=>{\n if(!targetArr.includes(search)){\n result = false;\n }\n });\n\n return result;\n }\n\n // 브라우저에 저장된 쿠키중에 진짜로 제거되어야 하는 쿠키\n _getNotAppiedCookieNames(AllCookieNamesFromConti:Record< keyof CookieDatas, string[]>, cookieTypeIsBeenApplied: ApplyCookieTypeArr): string[]{\n let appliedCookies: string[] = [];\n let notAppliedCookies: string[] = [];\n let currentBrowserCookieName = Object.keys(getCookies());\n\n appliedCookies.push(...AllCookieNamesFromConti.required);\n cookieTypeIsBeenApplied.includes('FUNCTIONAL') && appliedCookies.push(...AllCookieNamesFromConti.optional) || notAppliedCookies.push(...AllCookieNamesFromConti.optional);\n cookieTypeIsBeenApplied.includes('PERFORMANCE') && appliedCookies.push(...AllCookieNamesFromConti.optional2) || notAppliedCookies.push(...AllCookieNamesFromConti.optional2);\n cookieTypeIsBeenApplied.includes('ADVERTISING') && appliedCookies.push(...AllCookieNamesFromConti.optional3) || notAppliedCookies.push(...AllCookieNamesFromConti.optional3);\n\n appliedCookies = Array.from(new Set(appliedCookies)); // 콘티에서 받은 동의한 쿠키 이름 ( * 표시 포함 )\n notAppliedCookies = Array.from(new Set(notAppliedCookies)); // 콘티에서 받은 비동의한 쿠키 이름 ( * 표시 포함 )\n\n // console.log('all Conti Cookie name: ', AllCookieNamesFromConti); // 콘티에서 넘어온 모든 쿠키\n // console.log('all appliedCookies: ', appliedCookies);\n // console.log('all notAppliedCookies: ', notAppliedCookies);\n // console.log('all Browser Cookie name: ', currentBrowserCookieName); // 브라우저에 저장된 모든 쿠키\n\n // 브라우저에 저장된 쿠키 중에 동의 하지 않은 쿠키 (동의하지 않은 쿠키에 대해 * 정규식 적용)\n let targetToDeleteIncludeLive = Array.from(new Set(this._getSelectCookieIncludedTargets(currentBrowserCookieName, notAppliedCookies)));\n // console.log('targetToDeleteIncludeLive: ', targetToDeleteIncludeLive);\n\n // 브라우저에 저장된 쿠키 중에 동의 하지 않은 쿠키 중에 포함된 동의 한 쿠키 (동의 하지 않은 쿠기와, 동의한 쿠키에 중복으로 있는 것이 있다.) (동의한 쿠키에 대해 * 정규식 적용)\n let targetToLive = Array.from(new Set(this._getSelectCookieIncludedTargets(targetToDeleteIncludeLive, appliedCookies)));\n // console.log('targetToLive: ', targetToLive);\n\n // 브라우저에 저장도니 쿠키 중에 동의 하지 않은 쿠키 - 브라우저에 저장된 쿠키 중에 동의 하지 않은 쿠키 중에 포함된 동의 한 쿠키\n let targetToDeleteExceptLive = this.ArrayToRemoveArray(targetToDeleteIncludeLive, targetToLive);\n // console.log('targetToDeleteExceptLive: ', targetToDeleteExceptLive);\n\n return targetToDeleteExceptLive;\n }\n\n\n // 콘티에서 가져온 선택타입 쿠키 정보\n _getCookieDataOptionals(cookieDataWrap: ContiGroupAPIResponse): ContiContentAPIResponse<'global-cookie-list-optionals'>{\n return cookieDataWrap.find((e)=>{return e.alias === 'global-cookie-list-optionals';}) as ContiContentAPIResponse;\n }\n\n // 콘티에서 가져온 필수타입 쿠키 정보\n _getCookieDataRequired(cookieDataWrap: ContiGroupAPIResponse): ContiContentAPIResponse<'global-cookie-list-required'>{\n return cookieDataWrap.find((e)=>{return e.alias === 'global-cookie-list-required';}) as ContiContentAPIResponse;\n }\n\n // 콘티에서 가져온 쿠키정보 (이름, 유형...등)\n _getCookeDatas(cookieDataOptionals: ContiContentAPIResponse<'global-cookie-list-optionals'>, cookieDataRequired: ContiContentAPIResponse<'global-cookie-list-required'>):CookieDatas{\n return Object.assign({},JSON.parse(cookieDataOptionals.jsonData), JSON.parse(cookieDataRequired.jsonData));\n }\n\n // 현재 언어가 한국어인지 확인\n isKoreaLanguge(): boolean{\n return getLang().toLowerCase() === 'ko';\n }\n\n // 기존에 동의한 내용이 있는지 확인 (쿠키가 있는지 확인)\n get hasBeenAppliedCookie(): boolean{\n return !!getCookie(this.APPLY_COOKIE);\n }\n\n // 현재 applyCookie 라는 이름의 쿠키에 저장되어 있는, 유저가 허용한 쿠키 타입 반환\n getHasBeenAppliedCookieTypes(): ApplyCookieTypeArr {\n if(!this.hasBeenAppliedCookie) return [];\n\n let dataObj: ApplyCookieStateCookie = JSON.parse(window.decodeURIComponent(getCookie(this.APPLY_COOKIE))); // setCookie 유틸에서 자동으로 encodeURIComponent 를 실행한다.\n\n return dataObj.typeArr;\n }\n\n get isAppliedNecessaryCookie(): boolean{\n return this.getHasBeenAppliedCookieTypes().includes('NECESSARY');\n }\n\n get isAppliedFunctionalCookie(): boolean{\n return this.getHasBeenAppliedCookieTypes().includes('FUNCTIONAL');\n }\n\n get isAppliedPerformanceOrAnalyticalCookie(): boolean{\n return this.getHasBeenAppliedCookieTypes().includes('PERFORMANCE');\n }\n\n get isAppliedTargetingAdvertisingCookie(): boolean{\n return this.getHasBeenAppliedCookieTypes().includes('ADVERTISING');\n }\n\n // 콘티에 저장된 쿠키들의 이름 빼오기\n getAllCookieNamesFromConti(cookieDatas: CookieDatas): Record< keyof CookieDatas, string[]>{\n\n let result: Record< keyof CookieDatas, string[] >= {\n required: [],\n optional: [],\n optional2: [],\n optional3: []\n };\n\n let key: keyof CookieDatas;\n\n for (key in cookieDatas){\n let names = cookieDatas[key].reduce((acc, cookieData) => {\n return acc.concat(cookieData.name);\n },[]);\n\n result[key] = (names);\n }\n\n return result;\n }\n\n // // 유저가 허용하지 않은 타입의 쿠키 이름 반환\n getCookieNamesToDeleteSuper(cookieDatas: CookieDatas): ReturnType['_getNotAppiedCookieNames']>{\n let AllCookieNamesFromConti = this.getAllCookieNamesFromConti(cookieDatas); // 콘티에서 받은 모든 쿠키 이름\n let cookieTypeIsBeenApplied = this.getHasBeenAppliedCookieTypes(); // 허용한 쿠키 타입\n // if(!target) return false;\n\n // 유저가 허용하지 않은 타입의 쿠키 이름 반환\n return this._getNotAppiedCookieNames(AllCookieNamesFromConti, cookieTypeIsBeenApplied);\n }\n\n // 쿠키 지우기\n deleteCookies(targetCookies: string[]): void{\n targetCookies.forEach( (name: string) => {\n document.cookie = `${name}=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT; domain=plaync.com`; // .plaync.com 를 명시하고 만든 쿠키 && 루트 path에 해당하는 쿠키만 날림 (만들때 도메인을 명시하지 않은 경우라면)\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; // 현재의 도메인 && 현재의 path 에 해당 하는 쿠키만 날림 (쿠키 만들때 도메인 지정 안한경우 - 만들 당시의 도메인 = 현재의 도메인)\n document.cookie = `${name}=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; // 현재의 도메인 && 루트 path 에 해당 하는 쿠키만 날림\n\n document.cookie = `${name}=; path=/naeu; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; // lineage2m.plaync.com/naeu/를 위한 쿠키날림\n document.cookie = `${name}=; path=/ru ; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; // lineage2m.plaync.com/ru/를 위한 쿠키날림\n // 위 두가지 케이스에 대한 쿠키에 대해서 (/naeu, /ru)\n // IP별로 다르게 동작하는 쿠키가 필요하다고 한다.\n // lineage2m의 경우 ru와 naeu는 모두 다른 IP로 취급한다.\n // 즉, ru와 naeu 각각에서 다르게 동작하는 쿠키를 생성하기 하기 위해서는 path가 /ru/ 이거나 /naeu/ 가 필요하게 된다.\n\n // 도메인 값을 지정해주지 않은 이유는, /ru 패스의 경우 lineagew 와 같은 글로벌 서비스에는 포함 되어 있기 때문이다.\n // 즉 도메인을 plaync.com 으로 지정하고, /ru 패스를 지정한 쿠키를 생성하고, 나중에 해당 쿠키를 덮어 쓸경우\n // 덮어 쓴다는 의미이가, 여기서 지우는게 아니라, 예를 들면 lineage2m/ru/ 에서 쿠키를 설정 하고, 나중에 lineagw/ru/에서 쿠키를 설정하면,\n // 두 개의 쿠키는 같은 쿠키로 취급되며 충될이 날것이다.\n // 그래서 도메인 값을 지정해주지 않는다.\n\n // 쿠키 지우기 한계점\n // 1. 기본적으로 쿠키를 만들때 path를 지정하지 않은 쿠키는 지워지지 않는다. (/kr/ 또는 /community_aaaa/list/ 와 같이...)\n // 2. 도메인은 지정하지 않은채 만든 쿠키의 경우(쿠키를 만들 당시의 도메인이 저장되어 있는경우) 다른 도메인에서 이로직이 실행된다고 해서 그 쿠키가 지워지지 않는다.\n // 3. 어떤 페이지든 진입할때 마다 이 로직을 돌리지 않는이상... 다른 plaync 도메인에 있는 모든 쿠키를 지우는 것은 불가능 하다.\n // => 진입할때 마다 지워주고 있었다. confirmToast.ts 의 init(); 에 this.deleteCookies를 사용하고 있다.\n // => 즉 다른 plaync 도메인에 진입하면 쿠키가 지워진다. (루트 패스 혹은 진입했을때의 패스에 한정됨 (1)번 한계점은 그대로 남아 있음)\n\n // 참고\n // 읽을수 있다는 것과 지운다(즉, 덮어쓴다)는 다른 이야기 이다.\n // 만들때 도메인을 eTLD로(예를들면 plaync.com) 지정하고 만들면\n // plaync.com 하위 도메인에서 읽을 수 있다.\n // 단 덮어쓰기 위해서는 만들때와 동일하게 도메인을 eTLD로(예를들면 plaync.com)지정하고 덮어 써야 한다.\n // 하위 도메인에서 읽을 수 있다고, 도메인을 지정하지 않고 덮어쓰면\n // 현재의 도메인을 값으로 가지고 있는 전혀 새로운 쿠키가 생성된다.\n });\n }\n\n // 주어진 타켓 쿠키 이름에 대해 해당 하는 쿠키 선정\n _getSelectCookieIncludedTargets(browserCoocookieNames: string[], targetCookieNames: string[]): string[]{\n\n let selectedCookieNames = targetCookieNames.reduce((acc, name)=>{\n let targetArr;\n\n if(/\\*/.test(name)){\n let regex = new RegExp(`^${name.replace('*','.*')}`);\n targetArr = browserCoocookieNames.filter(e => regex.test(e));\n }else{\n targetArr = browserCoocookieNames.filter(e => e === name);\n }\n\n acc = acc.concat(...targetArr);\n\n return acc;\n\n }, []);\n\n selectedCookieNames = selectedCookieNames.flat(Infinity);\n return selectedCookieNames;\n }\n\n // 1번 배열에서, 2번 배열에 없는 요소를 제거\n ArrayToRemoveArray(baseArr: string[], targetArr:string[]) :string[]{\n return baseArr.reduce((acc, cur)=>{\n if(!targetArr.includes(cur)) {\n acc = acc.concat(cur);\n }\n return acc;\n\n },[]);\n }\n}\n\n","// import $ from 'jquery';\nimport { getCookieData, getI18NMessage } from '../service';\nimport { getConfirmToastTemplate, BtnApply, BtnDeny, BtnConfig, GCookieConfirmToastId, GCookieConfirmDimmedId, IsActive, BtnApplyOptional, ContentWrap } from '../template/confirmToast';\nimport { getCountry, getLang, getPlayncDomain } from '../util/util';\nimport AbsGlobalCookie from './AbsGlobalCookie';\n\nexport default class ConfirmToast extends AbsGlobalCookie{\n curOptCookieListVer!: string;\n zIndex: number;\n apiDomain: string;\n contiCookieDataApi: string;\n contiApiUrl: string;\n // getAllCookieNamesFromConti!: () => Record;\n\n cookieNamesToDelete!: ReturnType['_getNotAppiedCookieNames']>;\n\n constructor({zIndex = 1, apiDomain = '', contiCookieDataApi = ''}: {zIndex?: number, apiDomain?: string, contiCookieDataApi?: string} = {}){\n super();\n\n this.zIndex = zIndex;\n this.apiDomain = apiDomain;\n this.contiCookieDataApi = contiCookieDataApi;\n this.contiApiUrl = this.apiDomain + this.contiCookieDataApi\n this.init();\n\n // console.log(this.zIndex);\n }\n\n async init(): Promise{\n\n try{\n // 허용된 언어만 선택\n let lang = getLang({onlyUsingLanguageArr: ['ar', 'en', 'id', 'ja', 'ko', 'th', 'zh', 'ru'], defaultLang: 'en'});\n let country = getCountry();\n\n // 국가정보가 한국일때는 출력 안함\n if(this.isKoreaLanguge()) {\n // console.log('한국어 입니다.');\n return;\n }\n\n // I18N 받아오기 & 쿠키 리스트 받아오기 (쿠키 리스트 언어는 항상 en)\n let textData = (await getI18NMessage(lang)).confirmToast;\n let cookieDataWrap = await getCookieData(country, this.contiApiUrl);\n\n let cookieDataOptionals = this._getCookieDataOptionals(cookieDataWrap) as ContiContentAPIResponse;\n let cookieDataRequired = this._getCookieDataRequired(cookieDataWrap) as ContiContentAPIResponse;\n\n // 선택 쿠키 버전\n this.curOptCookieListVer = String(cookieDataOptionals.version);\n\n // 쿠키 데이터\n let cookieDatas: CookieDatas = this._getCookeDatas(cookieDataOptionals, cookieDataRequired);\n\n // 쿠키 데이터가 필요한 메서드 (왜 this.cookeDatas 로 하여 사용하지 않는가? 그냥.)\n // this.getAllCookieNamesFromConti = super.getAllCookieNamesFromConti.bind(this, cookieDatas);\n this.cookieNamesToDelete = this.getCookieNamesToDeleteSuper(cookieDatas);\n\n\n\n // 저장하지 않은 타입의 First-party 쿠키 삭제 (여기서 해줘야 하나?)\n // window.onload 시점으로 잡을수 없는 이유는\n // ConfirmToast 의 init() 이 async 함수로,\n // init() 내부에서 ajax 통신을 통해 쿠키 데이터를 가져오는데,\n // 이때 비동기 화 되면서, window.onload 이벤트 걸기전에,\n // window load 가 완료 되버리는 경우가 생긴다.\n\n // 테스트 결과 간헐적으로 window.onload 이벤트 거는 곳까지 window load가 안되는 경우가 있는데,\n // 그건 init() 내부의 ajax 통신이 document 의 스크립트 로드보다 빨라서 window load 시점이 안되었기 때문으로 보인다.\n\n // ajax로 파일을 로드 할경우 ajax 호출의 경우 완료가 안되도, window.onload 가 발생하고, 이후에 파일을 이어서 받아온다.\n // https://docs.newrelic.com/docs/browser/new-relic-browser/page-load-timing-resources/page-load-timing-process/\n // The page finishes rendering in the user's browser and the window load event fires. (For pages that use asynchronous loading, some elements may continue to load after the window load event occurs.)\n this.deleteCookies(this.cookieNamesToDelete);\n\n // 토스트창 출력해도 되는지 API로 확인\n let isOpenLayer = this._chkIsOpenLayer(this.curOptCookieListVer);\n\n if(!isOpenLayer) return;\n\n\n // 템플릿 세팅\n this.setTemplate(textData, this.zIndex);\n\n // 이벤트 바인딩\n this.bindEvent();\n\n // 토스트 레이어 오픈\n this.diplayToastAndDimmed(true);\n\n window.showToast = this.diplayToastAndDimmed.bind(null, true);\n\n\n }catch(err){\n // console.error(err);\n }\n }\n\n setTemplate(textData: ConfirmToastTextData, zIndex?: number): void{\n // 템플릿 만들기\n let template = getConfirmToastTemplate(textData, zIndex);\n\n // 템플릿 붙이기\n\n // $('body').append(template);\n document.body.insertAdjacentHTML('beforeend',template);\n\n }\n\n bindEvent(): void{\n // 모두 동의하기 클릭\n // $(document).on('click', `#${GCookieConfirmToastId} .${BtnApply}`, (this.onClickBtnApply));\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmToastId} .${BtnApply}`);\n delegateTarget && this.onClickBtnApply();\n });\n\n // 모두 거부하기 클릭\n // $(document).on('click', `#${GCookieConfirmToastId} .${BtnDeny}`, this.onClickBtnDeny);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmToastId} .${BtnDeny}`);\n delegateTarget && this.onClickBtnDeny();\n });\n\n // 선택 통의하기 클릭\n // $(document).on('click', `#${GCookieConfirmToastId} .${BtnApplyOptional}`, this.onClickBtnApplyOptional);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmToastId} .${BtnApplyOptional}`);\n delegateTarget && this.onClickBtnApplyOptional();\n });\n // 설정 클릭\n // $(document).on('click', `#${GCookieConfirmToastId} .${BtnConfig}`, this.onClickBtnSetting);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmToastId} .${BtnConfig}`);\n delegateTarget && this.onClickBtnSetting();\n });\n // 쿠키정책(a 태크) 클릭시\n // $(document).on('click', `#${GCookieConfirmToastId} .${ContentWrap} a`, this.onClickContentWrapAnchorTag);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmToastId} .${ContentWrap} a`);\n delegateTarget && this.onClickContentWrapAnchorTag(e);\n });\n // 딤드 클릭\n // $(document).on('click', `#${GCookieConfirmDimmedId}`, this.onClickDimmed);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieConfirmDimmedId}`);\n delegateTarget && this.onClickDimmed();\n });\n }\n\n // a 태그(쿠키정책) 클릭시\n onClickContentWrapAnchorTag = (e: MouseEvent):void => {\n e.preventDefault();\n\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieOnlyRequired(this.curOptCookieListVer, this.URL_COOKIE_POLICY_LAYER_OPEN);\n\n };\n\n // 딤드 클릭\n onClickDimmed = (): void => {\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieOnlyRequired(this.curOptCookieListVer, location.href);\n\n // 레이어 닫기\n this.diplayToastAndDimmed(false);\n };\n\n // 선택 동의 클릭\n onClickBtnApplyOptional = ():void => {\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieOnlyRequired(this.curOptCookieListVer, this.URL_COOKIE_POLICY_LAYER_OPEN);\n };\n\n // 설정 클릭\n onClickBtnSetting = (): void => {\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieOnlyRequired(this.curOptCookieListVer, this.URL_COOKIE_POLICY_LAYER_OPEN);\n };\n\n // 모두 거부하기 클릭\n onClickBtnDeny = ():void => {\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieOnlyRequired(this.curOptCookieListVer, location.href);\n\n // 레이어 닫기\n this.diplayToastAndDimmed(false);\n };\n\n // 모두 동의 하기 클릭\n onClickBtnApply = (): void => {\n\n // 쿠키허용상태를 저장하는 쿠키 생성\n this._applyCookieAll(this.curOptCookieListVer, location.href);\n\n // 레이어 닫기\n this.diplayToastAndDimmed(false);\n };\n\n\n /**\n * 토스트 팝업 디스 플레이\n */\n diplayToastAndDimmed = (flag: boolean):void => {\n this.displayDimmed(flag);\n this.displayToast(flag);\n };\n\n displayDimmed(flag: boolean): void{\n if(flag){\n // $(`#${GCookieConfirmDimmedId}`).addClass(IsActive);\n document.getElementById(GCookieConfirmDimmedId)?.classList.add(IsActive);\n }else{\n // $(`#${GCookieConfirmDimmedId}`).removeClass(IsActive);\n document.getElementById(GCookieConfirmDimmedId)?.classList.remove(IsActive);\n }\n }\n\n displayToast(flag: boolean): void{\n if(flag){\n // $(`#${GCookieConfirmToastId}`).addClass(IsActive);\n document.getElementById(GCookieConfirmToastId)?.classList.add(IsActive);\n }else{\n // $(`#${GCookieConfirmToastId}`).removeClass(IsActive);\n document.getElementById(GCookieConfirmDimmedId)?.classList.remove(IsActive);\n }\n }\n\n\n\n\n}\n\n","export const GCookieSetLayerId = 'gCookieSettingLayer';\nexport const GCookieSetLayerClass = 'g-cookie-set-layer';\n\nexport const GCookieSetDimmedId = 'gCookieSettingDimmed';\nexport const GCookieSetDimmedClass = 'g-cookie-set-dimmed';\nexport const BtnClose = 'g-cookie-btn-close';\nexport const TopDesc = 'g-cookie-desc';\nexport const Chks = 'g-cookie-chk';\nexport const ChkRquired = 'g-cookie-chk-required';\nexport const ChkOptional = 'g-cookie-chk-optional';\nexport const ChkOptional2 = 'g-cookie-chk-optional-2';\nexport const ChkOptional3 = 'g-cookie-chk-optional-3';\nexport const ChkRquiredId = 'gCookieChkRequired';\nexport const ChkOptionalId = 'gCookieChkOptional';\nexport const ChkOptional2Id = 'gCookieChkOptional2';\nexport const ChkOptional3Id = 'gCookieChkOptional3';\nexport const RadioTabs = 'g-cookie-tab';\nexport const RadioTabRequired = 'g-cookie-tab-required';\nexport const RadioTabOptional = 'g-cookie-tab-optional';\nexport const RadioTabOptional2 = 'g-cookie-tab-optional-2';\nexport const RadioTabOptional3 = 'g-cookie-tab-optional-3';\nexport const RadioTabRequiredId = 'gCookieTabRequired';\nexport const RadioTabOptionalId = 'gCookieTabOptional';\nexport const RadioTabOptional2Id = 'gCookieTabOptional2';\nexport const RadioTabOptional3Id = 'gCookieTabOptional3';\nexport const RadioTabsName = 'gCookieTab';\nexport const Infos = 'g-cookie-info';\nexport const InfosContent = `${Infos}-content`;\nexport const InfosContentRow = `${InfosContent}-row`;\nexport const InfosContentCol = `${InfosContent}-col`;\nexport const InfoRequired = 'g-cookie-info-required';\nexport const InfoOptional = 'g-cookie-info-optional';\nexport const InfoOptional2 = 'g-cookie-info-optional-2';\nexport const InfoOptional3 = 'g-cookie-info-optional-3';\nexport const IsActive= 'is-active';\nexport const BtnApply = 'g-cookie-btn-apply';\n\n\n\n\n// settingModal 탬플릿\nexport function getSeetingLayerTemplate(textData: SettingModalTextData, cookieDatas: CookieDatas, zIndex?: number): string{\n\n return `\n
    \n
    \n ${getTopTemplate(textData)}\n ${getMidTemplate(textData)}\n ${getBottomTemplaete(textData, cookieDatas)}\n
    \n `;\n\n}\n\nfunction getTopTemplate(textData: SettingModalTextData){\n return `\n
    \n \n
    \n ${textData.topDesc}\n
    \n
    \n `;\n}\n\nfunction getMidTemplate(textData: SettingModalTextData){\n return `\n
    \n
      \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    \n
    \n
    ${textData.btnApply}
    \n
    \n
    \n `;\n}\n\nfunction getBottomTemplaete(textData: SettingModalTextData, cookieDatas: CookieDatas){\n return `\n
    \n
      \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    • \n \n \n
    • \n
    \n
    \n
    \n
    \n ${textData.requiredDesc}\n
    \n
    \n
      \n
    • \n

      ${textData.providerColum}

      \n

      ${textData.nameColum}

      \n

      ${textData.purposeColum}

      \n

      ${textData.dataColum}

      \n

      ${textData.typeColum}

      \n
    • \n ${getCookieTemplate(cookieDatas.required)}\n
    \n
    \n
    \n
    \n
    \n ${textData.optionalDesc}\n
    \n
    \n
      \n
    • \n

      ${textData.providerColum}

      \n

      ${textData.nameColum}

      \n

      ${textData.purposeColum}

      \n

      ${textData.dataColum}

      \n

      ${textData.typeColum}

      \n
    • \n ${getCookieTemplate(cookieDatas.optional)}\n
    \n
    \n
    \n
    \n
    \n ${textData.optional2Desc}\n
    \n
    \n
      \n
    • \n

      ${textData.providerColum}

      \n

      ${textData.nameColum}

      \n

      ${textData.purposeColum}

      \n

      ${textData.dataColum}

      \n

      ${textData.typeColum}

      \n
    • \n ${getCookieTemplate(cookieDatas.optional2)}\n
    \n
    \n
    \n
    \n
    \n ${textData.optional3Desc}\n
    \n
    \n
      \n
    • \n

      ${textData.providerColum}

      \n

      ${textData.nameColum}

      \n

      ${textData.purposeColum}

      \n

      ${textData.dataColum}

      \n

      ${textData.typeColum}

      \n
    • \n ${getCookieTemplate(cookieDatas.optional3)}\n
    \n
    \n
    \n
    \n
    \n `;\n}\n\nfunction getCookieTemplate(cookieDatas: CookieData[]): string{\n let result = '';\n // for(let a = 0; a < 50; a++){\n cookieDatas.forEach(cookieData => {\n if(!cookieData.name) return ;\n result += `\n
  • \n

    ${cookieData.provider}

    \n

    ${cookieData.name}

    \n

    ${cookieData.purpose}

    \n

    ${cookieData.date}

    \n

    ${cookieData.type}

    \n
  • \n `;\n });\n // }\n\n\n return result;\n}\n","// import $ from 'jquery';\nimport { getI18NMessage, getCookieData } from '../service';\nimport { BtnApply, BtnClose, ChkOptional2Id, ChkOptional3Id, ChkOptionalId, ChkRquired, GCookieSetDimmedId, GCookieSetLayerId, getSeetingLayerTemplate, InfoOptional, InfoOptional2, InfoRequired, Infos, InfosContent, IsActive, RadioTabRequired, RadioTabs, TopDesc } from '../template/settingLayer';\nimport {getUriParam} from '../util/util2';\nimport { LoaderTargetPlugin } from 'webpack';\nimport { getCountry, getLang } from '../util/util';\nimport AbsGlobalCookie from './AbsGlobalCookie';\n\n\nconst TAB_REQUIRED = 'TAB_REQUIRED';\nconst TAB_OPTIONAL = 'TAB_OPTIONAL';\ntype TABS = typeof TAB_REQUIRED | typeof TAB_OPTIONAL;\n\nexport default class SettingModal extends AbsGlobalCookie {\n curOptCookieListVer!: string;\n zIndex: number;\n apiDomain: string;\n contiCookieDataApi: string;\n contiApiUrl: string;\n\n // getAllCookieNamesFromConti!: () => Record;\n cookieNamesToDelete!: ReturnType['_getNotAppiedCookieNames']>;\n\n constructor({zIndex = 1, apiDomain = '', contiCookieDataApi = ''}: {zIndex?: number, apiDomain?: string, contiCookieDataApi?: string} = {}){\n super();\n\n this.zIndex = zIndex;\n this.apiDomain = apiDomain;\n this.contiCookieDataApi = contiCookieDataApi;\n this.contiApiUrl = this.apiDomain + this.contiCookieDataApi\n this.init();\n }\n\n async init(): Promise{\n try{\n let lang = getLang({onlyUsingLanguageArr: ['ar', 'en', 'id', 'ja', 'ko', 'th', 'zh', 'ru'], defaultLang: 'en'});\n let country = getCountry();\n\n // I18N 받아오기 & 쿠키 리스트 받아오기 (쿠키 리스트 언어는 항상 en)\n let textData = (await getI18NMessage('en')).settingModal;\n let cookieDataWrap = await getCookieData(country, this.contiApiUrl);\n\n let cookieDataOptionals = this._getCookieDataOptionals(cookieDataWrap) as ContiContentAPIResponse;\n let cookieDataRequired = this._getCookieDataRequired(cookieDataWrap) as ContiContentAPIResponse;\n\n // 선택 쿠키 버전\n this.curOptCookieListVer = String(cookieDataOptionals.version);\n\n // 쿠키 데이터\n let cookieDatas: CookieDatas = this._getCookeDatas(cookieDataOptionals, cookieDataRequired);\n\n // 쿠키 데이터가 필요한 메서드 (왜 this.cookeDatas 로 하여 사용하지 않는가? 그냥.)\n // this.getAllCookieNamesFromConti = super.getAllCookieNamesFromConti.bind(this, cookieDatas);\n this.cookieNamesToDelete = this.getCookieNamesToDeleteSuper(cookieDatas);\n\n // 저장하지 않은 타입의 First-party 쿠키 삭제 (여기서 해줘야 하나?)\n // window.onload 시점으로 잡을수 없는 이유는\n // ConfirmToast 의 init() 이 async 함수로,\n // init() 내부에서 ajax 통신을 통해 쿠키 데이터를 가져오는데,\n // 이때 비동기 화 되면서, window.onload 이벤트 걸기전에,\n // window load 가 완료 되버리는 경우가 생긴다.\n\n // 테스트 결과 간헐적으로 window.onload 이벤트 거는 곳까지 window load가 안되는 경우가 있는데,\n // 그건 init() 내부의 ajax 통신이 document 의 스크립트 로드보다 빨라서 window load 시점이 안되었기 때문으로 보인다.\n\n // ajax로 파일을 로드 할경우 ajax 호출의 경우 완료가 안되도, window.onload 가 발생하고, 이후에 파일을 이어서 받아온다.\n // https://docs.newrelic.com/docs/browser/new-relic-browser/page-load-timing-resources/page-load-timing-process/\n // The page finishes rendering in the user's browser and the window load event fires. (For pages that use asynchronous loading, some elements may continue to load after the window load event occurs.)\n !this.isKoreaLanguge() && this.deleteCookies(this.cookieNamesToDelete);\n\n\n // 레이어 템플릿\n this._setTemplate( textData, cookieDatas, this.zIndex );\n\n // 이벤트 바인딩하고\n this._bindEvent(textData);\n\n // 리셋\n this.reset();\n\n // temp\n window.showLayer = this.showLayer;\n }catch(err){\n // console.error(err);\n }\n }\n\n _setTemplate(textData:SettingModalTextData, cookieData: CookieDatas, zIndex?: number): void{\n // 레이어 템플릿\n let template = getSeetingLayerTemplate(textData, cookieData, zIndex);\n // $('body').append(template);\n document.body.insertAdjacentHTML('beforeend',template);\n\n // $(`.${TopDesc} a`).attr('href', URL_COOKIE_POLICY);\n }\n\n // 레이어 보여주기\n showLayer = ():void => {\n this.displayLayer(true);\n };\n\n // 레이어 닫기\n hideLayer = (): void => {\n this.displayLayer(false);\n };\n\n _bindEvent(textData: SettingModalTextData): void{\n // 레이어 닫기 클릭\n // $(document).on('click', `#${GCookieSetLayerId} .${BtnClose}`, this.onClickBtnClose);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetLayerId} .${BtnClose}`);\n delegateTarget && this.onClickBtnClose();\n });\n // 저장하기 클릭\n // $(document).on('click', `#${GCookieSetLayerId} .${BtnApply}`, this.onClickBtnApply.bind(null, textData));\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetLayerId} .${BtnApply}`);\n delegateTarget && this.onClickBtnApply(textData);\n });\n // 필수쿠키 허용 클릭\n // $(document).on('click', `#${GCookieSetLayerId} .${ChkRquired}`, this.onClickChkRquired);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetLayerId} .${ChkRquired}`);\n delegateTarget && this.onClickChkRquired(e);\n });\n // 탭 클릭 (필수쿠키 / 선택 쿠키)\n // $(document).on('click', `#${GCookieSetLayerId} .${RadioTabs}`, this.onClickRadioTabs);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetLayerId} .${RadioTabs}`);\n delegateTarget && this.onClickRadioTabs(e);\n });\n // 딤드 클릭\n // $(document).on('click', `#${GCookieSetDimmedId}`, this.onClickDimmed);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetDimmedId}`);\n delegateTarget && this.onClickDimmed();\n });\n // 쿠키정책(a 태크) 클릭시\n // $(document).on('click', `#${GCookieSetLayerId} .${TopDesc} a`, this.onClickTopDescAnchorTag);\n document.addEventListener('click', (e) => {\n const delegateTarget = (e.target as HTMLElement)?.closest(`#${GCookieSetLayerId} .${TopDesc} a`);\n delegateTarget && this.onClickTopDescAnchorTag(e);\n });\n // 성공메시지 확인 클릭 (메시지창 닫기) - [TODO]\n\n }\n\n // 쿠키정책(a 태크) 클릭시\n onClickTopDescAnchorTag = (e: MouseEvent):void => {\n e.preventDefault();\n\n window.open(this.URL_COOKIE_POLICY, '_blank');\n };\n\n // 딤드 클릭\n onClickDimmed = (): void => {\n\n // 기존에 동의한 내용이 있다면 (쿠키가 있다면) 그대로 두고 / 없다면 필수 동의\n if(!this.hasBeenAppliedCookie) this._applyCookieOnlyRequired(this.curOptCookieListVer, location.href);\n\n // 레이어 닫기\n this.hideLayer();\n };\n\n // 레이어 닫기 클릭\n onClickBtnClose = ():void => {\n\n // 기존에 동의한 내용이 있다면 (쿠키가 있다면) 그대로 두고 / 없다면 필수 동의\n if(!this.hasBeenAppliedCookie) this._applyCookieOnlyRequired(this.curOptCookieListVer, location.href);\n\n // 레이어 닫기\n this.hideLayer();\n };\n\n // 레이어 출력/닫기\n displayLayer(flag: boolean): void{\n if(flag){\n // $(`#${GCookieSetLayerId}`).addClass(IsActive);\n // $(`#${GCookieSetDimmedId}`).addClass(IsActive);\n document.getElementById(GCookieSetLayerId)?.classList.add(IsActive);\n document.getElementById(GCookieSetDimmedId)?.classList.add(IsActive);\n\n }else{\n // $(`#${GCookieSetLayerId}`).removeClass(IsActive);\n // $(`#${GCookieSetDimmedId}`).removeClass(IsActive);\n document.getElementById(GCookieSetLayerId)?.classList.remove(IsActive);\n document.getElementById(GCookieSetDimmedId)?.classList.remove(IsActive);\n }\n }\n\n // 저장하기 클릭\n onClickBtnApply = (textData: SettingModalTextData):void => {\n let applyCookieTypeArr: ApplyCookieTypeArr = [];\n\n applyCookieTypeArr.push('NECESSARY');\n this.isCheckedOptional && applyCookieTypeArr.push('FUNCTIONAL');\n this.isCheckedOptional2 && applyCookieTypeArr.push('PERFORMANCE');\n this.isCheckedOptional3 && applyCookieTypeArr.push('ADVERTISING');\n\n window.alert(textData.msgSuccess);\n\n this._applyCookie(applyCookieTypeArr, this.curOptCookieListVer, location.href);\n\n // this.hideLayer();\n };\n\n // 필수쿠키 허용 클릭\n onClickChkRquired = (evt: MouseEvent):void => {\n evt.preventDefault();\n };\n\n // 탭 클릭 (필수쿠키 / 선택 쿠키)\n onClickRadioTabs = (evt: MouseEvent):void => {\n // let targetSelector: typeof InfoRequired | typeof InfoOptional | typeof InfoOptional2 = $(evt.target).data('target');\n let targetSelector = (evt.target as HTMLElement).dataset.target;\n\n this._showCookieInfoByRadioTabls(targetSelector as typeof InfoRequired | typeof InfoOptional | typeof InfoOptional2 );\n };\n\n // 클릭된 탭에 따라 보여줄 쿠키정보 선택\n _showCookieInfoByRadioTabls(targetSelector: typeof InfoRequired | typeof InfoOptional | typeof InfoOptional2): void {\n const infoEls = Array.from(document.getElementsByClassName('g-cookie-info'));\n\n for(let infoEl of infoEls){\n infoEl.classList.remove(IsActive);\n }\n\n infoEls.find(e => e.classList.contains(targetSelector))?.classList.add(IsActive);\n // $(`.${Infos}`).removeClass(IsActive);\n // $(`.${Infos}.${targetSelector}`).addClass(IsActive);\n }\n\n // 리셋\n reset(): void{\n // 만약 파라미터에 showLayer 있으면 showLayer 실행\n getUriParam(location.href, 'showLayer') === 'true' && this.showLayer();\n\n // 필수 쿠키 탭클릭\n // $(`.${RadioTabRequired}`).trigger('click');\n for(let El of document.getElementsByClassName(RadioTabRequired)){\n El.dispatchEvent(new PointerEvent('click',{bubbles:true}));\n }\n\n // [TODO] 기존에 선택 되어 있던 쿠키에 따라 탭클릭\n this.selectRadioAsHasAppliedCookieType();\n }\n\n // 기존에 선택 되어 있던 쿠키에 따라 탭클릭\n selectRadioAsHasAppliedCookieType(): void{\n let targetArr = this.getHasBeenAppliedCookieTypes();\n if(!targetArr) return;\n\n // targetArr.includes('FUNCTIONAL') && $(`#${ChkOptionalId}`).trigger('click');\n // targetArr.includes('PERFORMANCE') && $(`#${ChkOptional2Id}`).trigger('click');\n // targetArr.includes('ADVERTISING') && $(`#${ChkOptional3Id}`).trigger('click');\n targetArr.includes('FUNCTIONAL') && document.getElementById(ChkOptionalId)?.dispatchEvent(new PointerEvent('click',{bubbles:true}));\n targetArr.includes('PERFORMANCE') && document.getElementById(ChkOptional2Id)?.dispatchEvent(new PointerEvent('click',{bubbles:true}));\n targetArr.includes('ADVERTISING') && document.getElementById(ChkOptional3Id)?.dispatchEvent(new PointerEvent('click',{bubbles:true}));\n }\n\n // 선택쿠키 허용 체크박스 체크 여부\n get isCheckedOptional(): boolean{\n // return $(`#${ChkOptionalId}`).is(':checked');\n return (document.getElementById(ChkOptionalId) as HTMLInputElement).checked;\n }\n\n // 선택쿠키2 허용 체크박스 체크 여부\n get isCheckedOptional2(): boolean{\n // return $(`#${ChkOptional2Id}`).is(':checked');\n return (document.getElementById(ChkOptional2Id) as HTMLInputElement).checked;\n\n }\n\n // 선택쿠키3 허용 체크박스 체크 여부\n get isCheckedOptional3(): boolean{\n // return $(`#${ChkOptional3Id}`).is(':checked');\n return (document.getElementById(ChkOptional3Id) as HTMLInputElement).checked;\n\n }\n\n // 필수쿠키 허용 체크박스 체크 여부 : 무조건 true\n get isCheckedRequired(): boolean{\n return true;\n }\n\n\n}\n","import { l10nAllLang } from '../common/L10n';\nimport { escapeTag, getCookie, setCookie, toggle, makeEl, removeClass, addClass } from '../common/Utils';\nimport { IAutoSuggest } from \"../interface/IAutoSuggest\";\n\nexport default class RecentSearch {\n\n private recentData: string[] = [];\n private recentWrap: HTMLElement;\n private recentUL!: HTMLElement;\n private recentAllDel!: HTMLElement;\n private recentNone!: HTMLElement;\n\n private isCookieApply: boolean = false;\n private isUseRecent: boolean = false;\n\n constructor(private option: IAutoSuggest, private suggestWrap:HTMLElement, private inputEl: HTMLInputElement, private deleteBtn: HTMLElement, private submitFn: ()=>void){\n this.isUseRecent = this.checkUseRecent(this.option.useRecent);\n this.recentWrap = makeEl('div', this.suggestWrap, {'data-name':\"suggest_recent\"});\n this.recentWrap.style.display = 'none';\n\n if ( !this.isUseRecent ) return;\n\n const htmlEl = document.getElementsByTagName(\"html\")[0];\n const lang = htmlEl.getAttribute('lang') || 'en';\n const l10n = l10nAllLang[lang].autoSuggest;\n\n const scroller = makeEl('div', this.recentWrap, {'data-name':\"suggest_recent_scroll\"});\n this.recentUL = makeEl('ul', scroller);\n this.recentNone = makeEl('div', scroller, {'data-name':\"suggest_recent-none\"}, l10n.noRecentSearchHistory);\n this.recentNone.style.display = 'none';\n this.recentAllDel = makeEl('div', this.recentWrap, {'data-name':\"suggest_recent-del\"});\n makeEl('button', this.recentAllDel, {type: 'button'}, l10n.deleteAllRecent);\n\n const cookieData = unescape( getCookie(this.option.cookieName) );\n this.recentData = cookieData? JSON.parse( cookieData ): [];\n\n this.recentAllDel.addEventListener( 'click', () => {\n this.recentData = [];\n setCookie(this.option.cookieName, JSON.stringify(this.recentData));\n this.makeRecentList();\n this.inputEl.value = '';\n this.inputEl.focus();\n });\n\n this.makeRecentList();\n }\n\n public setRecentList(_keyword: string){\n if (!this.isUseRecent) return false;\n if( this.recentData.indexOf(_keyword) === -1 ){\n this.recentData.unshift(_keyword);\n this.recentData.splice(5);\n setCookie(this.option.cookieName, JSON.stringify(this.recentData));\n this.makeRecentList();\n }\n }\n\n public isShow: boolean = false;\n public toggleRecent(_isShow: boolean){\n if (!this.isUseRecent) return false;\n this.isShow = _isShow;\n toggle(this.recentWrap, _isShow);\n }\n\n private checkUseRecent(_useRecent: boolean | undefined): boolean{\n const htmlEl = document.getElementsByTagName(\"html\")[0];\n const lang = htmlEl.getAttribute('lang') || 'ko';\n\n if (lang==='ko') {\n this.isCookieApply = true;\n }else{\n let cookieStr = decodeURIComponent( getCookie('applyCookie') );\n if (cookieStr) {\n let cookieData: {optCookieListVer: string; typeArr: string[]} = JSON.parse(cookieStr);\n this.isCookieApply = cookieData.typeArr.indexOf('FUNCTIONAL') > -1;\n }else{\n this.isCookieApply = false;\n }\n }\n return (!!_useRecent && this.isCookieApply);\n }\n\n private makeRecentList(){\n if (!this.isUseRecent) return false;\n \n let list = this.recentData.map( (it: string) => {\n return `
  • ${escapeTag(it)}
  • `;\n } ).join('');\n toggle(this.recentNone, !this.recentData.length);\n toggle(this.recentAllDel, this.recentData.length>0);\n this.recentUL.innerHTML = list;\n this.addEvents();\n }\n\n private addEvents(){\n if (!this.isUseRecent) return false;\n document.querySelectorAll( this.option.selector + \" [data-name='suggest_recent_scroll'] ul li\" ).forEach( it =>{\n it.addEventListener('click', (e: MouseEvent) => {\n const eleT = e.target as HTMLInputElement;\n const eleCT = e.currentTarget as HTMLElement;\n if(eleT.value === \"X\") return;\n this.inputEl.value = eleCT.dataset.keyword as string;\n this.submitFn();\n\n if(this.option.useDelbtn){\n const noneOrBlock = (this.inputEl.value)? 'block': 'none';\n this.deleteBtn.style.display = noneOrBlock;\n }\n });\n });\n\n this.recentUL.querySelectorAll('li input').forEach((it: HTMLElement)=>{\n it.addEventListener( 'click', (e: MouseEvent) => {\n const ele = e.currentTarget;\n const key = ele.dataset.key;\n const idx = this.recentData.indexOf( key );\n\n this.recentData.splice(idx,1);\n setCookie(this.option.cookieName, JSON.stringify(this.recentData));\n this.makeRecentList();\n this.inputEl.value = '';\n this.inputEl.focus();\n });\n });\n }\n\n public focusChange( _direction = 1 ){\n let newFocusEl: HTMLElement | null = null;\n let oldFocusEl: HTMLElement | null = this.recentUL.querySelector('.focus');\n\n if(_direction === 1){\n newFocusEl = ( oldFocusEl )? oldFocusEl.nextElementSibling: this.recentUL.querySelector('li:first-child');\n }\n if(_direction === -1){\n newFocusEl = ( oldFocusEl )? oldFocusEl.previousElementSibling: this.recentUL.querySelector('li:last-child');\n }\n\n this.recentUL.querySelectorAll('li').forEach(it=>removeClass(it, 'focus'));\n\n let dbKeyword = '';\n\n if( newFocusEl !== null ){\n addClass(newFocusEl, 'focus');\n dbKeyword = newFocusEl.dataset.keyword as string;\n this.inputEl.value = dbKeyword;\n }\n\n return dbKeyword;\n }\n\n} // end of class","import { addClass, removeClass, toggle, makeEl } from '../common/Utils';\nimport { IAutoSuggest } from \"../interface/IAutoSuggest\";\n\nexport default class SuggestList {\n\n private wrapper: HTMLElement;\n private resultUL: HTMLElement;\n\n constructor(private option: IAutoSuggest, private suggestWrap:HTMLElement, private inputEl: HTMLInputElement, private submitFn: ()=>void){\n this.wrapper = makeEl('div', this.suggestWrap, {'data-name':\"suggest_list\"});\n const scroller = makeEl('div', this.wrapper, {'data-name':\"suggest_scroll\"});\n this.resultUL = makeEl('ul', scroller);\n }\n\n public reset(_loadedKeyword: string, _data: {id:string; keyword:string;}[]){\n this.removeEvents();\n this.toggleResult(_data.length>0);\n this.resultUL.innerHTML = this.templ(_loadedKeyword, _data);\n this.addEvents();\n }\n\n private templ(_loadedKeyword: string, _data: {id:string; keyword:string;}[]){\n let list = '';\n if(_data.length){\n let key = _loadedKeyword.replace('(', '\\\\(').replace(')', '\\\\)');\n let reg = new RegExp(key, 'i');\n list = _data.map( (item, idx) => {\n const regStr = reg.exec(item.keyword);\n if (!regStr) return '';\n const str = item.keyword.replace(regStr[0], `${regStr[0]}`);\n return `
  • ${str}
  • `; \n } ).join('');\n }\n return list;\n }\n\n private addEvents(){\n document.querySelectorAll( this.option.selector + \" [data-name='suggest_scroll'] ul li\" ).forEach(it=>{\n it.addEventListener('click', (e: MouseEvent) => {\n const ele = e.currentTarget as HTMLElement;\n this.inputEl.value = ele.dataset.keyword as string;\n this.submitFn();\n });\n });\n }\n\n private removeEvents(){\n document.querySelectorAll( this.option.selector + \" [data-name='suggest_scroll'] ul li\" ).forEach(it=>{\n it.removeEventListener('click', (e: MouseEvent) => {\n const ele = e.currentTarget as HTMLElement;\n this.inputEl.value = ele.dataset.keyword as string;\n this.submitFn();\n });\n });\n }\n\n public focusChange( _direction = 1 ){\n let newFocusEl: HTMLElement | null = null;\n let oldFocusEl: HTMLElement | null = this.resultUL.querySelector('.focus');\n\n if(_direction === 1){\n newFocusEl = ( oldFocusEl )? oldFocusEl.nextElementSibling: this.resultUL.querySelector('li:first-child');\n }\n if(_direction === -1){\n newFocusEl = ( oldFocusEl )? oldFocusEl.previousElementSibling: this.resultUL.querySelector('li:last-child');\n }\n\n this.toggleResult(newFocusEl !== null);\n this.resultUL.querySelectorAll('li').forEach(it=>removeClass(it, 'focus'));\n\n let dbKeyword = '';\n\n if( newFocusEl !== null ){\n addClass(newFocusEl, 'focus');\n dbKeyword = newFocusEl.dataset.keyword as string;\n this.inputEl.value = dbKeyword;\n }\n\n return dbKeyword;\n }\n\n public get ilLength(){\n return this.resultUL.querySelectorAll('li').length;\n }\n\n public get inner(){\n return this.resultUL.innerHTML;\n }\n\n public set inner(_str:string){\n this.resultUL.innerHTML = _str;\n }\n\n public removeFocus(){\n this.resultUL.querySelectorAll('li').forEach(it=>removeClass(it, 'focus'));\n }\n\n public toggleResult(_isShow=true){\n toggle( this.wrapper, _isShow);\n if(!_isShow) this.removeFocus();\n }\n\n} // end of class","import { IAutoSuggest } from '../interface/IAutoSuggest';\nimport axios from \"axios\";\nimport { param, toggle, makeEl } from '../common/Utils';\nimport RecentSearch from './RecentSearch';\nimport SuggestList from './SuggestList';\n\nexport default class Index {\n\n private option!: IAutoSuggest;\n private loadedKeyword: string = '';\n private dataBaseKeyword: string = '';\n private isValueFunctionText: string = '';\n private sto: NodeJS.Timeout | null = null;\n private suggestWrap!: HTMLElement;\n private inputEl!: HTMLInputElement;\n private submitBtn!: HTMLElement;\n private deleteBtn!: HTMLElement;\n\n private result: SuggestList;\n private recent: RecentSearch;\n \n constructor(_config: IAutoSuggest) { \n console.log('-------AutoSuggest START-------', _config);\n const initOption = {\n apiUrl: '',\n cookieName: 'autosuggest',\n selector : '#autoSuggest',\n size: 10,\n useDelbtn: false,\n useRecent: false,\n addParam: {},\n locale: 'ko-KR',\n keywordParamName: 'keyword',\n placeholderStr: '',\n submitCallback: (_q: string) => console.log( 'query :', _q, '::: option.submitCallback 필수 option 입니다' ),\n };\n\n this.option = {\n ...initOption,\n ..._config\n };\n\n this.setTempl();\n this.result = new SuggestList(this.option, this.suggestWrap, this.inputEl, ()=>this.submitGo());\n this.recent = new RecentSearch(this.option, this.suggestWrap, this.inputEl, this.deleteBtn, ()=> this.submitGo());\n \n this.addEvents();\n\t}\n\n private setTempl() {\n const container = document.querySelector( this.option.selector )!;\n const formEl = makeEl('form', container, {\n id: \"autoSuggest\",\n role: \"search\",\n 'data-name': 'suggest_form',\n onsubmit: \"return false;\",\n } );\n this.inputEl = makeEl('input', formEl, {\n 'data-name': \"suggest_input\",\n type: \"search\", autocomplete: \"off\",\n placeholder: this.option.placeholderStr || '',\n });\n this.deleteBtn = makeEl('button', formEl, {\n 'data-name': \"suggest_delete\", type: \"button\", value: \"Delete\",\n });\n this.deleteBtn.style.display = 'none';\n\n this.submitBtn = makeEl('button', formEl, {\n 'data-name': \"suggest_submit\", type: \"button\", value: \"Search\",\n });\n this.suggestWrap = makeEl('div', formEl, { 'data-name': \"suggest_wrap\" });\n }\n\n private async load(_newKeyword: string){\n this.loadedKeyword = _newKeyword;\n\n try {\n const res = await axios({\n method: 'get',\n withCredentials: true,\n url: this.option.apiUrl + '?' + param({\n [this.option.keywordParamName!]: this.loadedKeyword, \n locale: this.option.locale!,\n size: this.option.size!.toString(),\n ...this.option.addParam\n }),\n });\n this.drawList(res.data.searchHits);\n } catch (e) {\n console.log('no data');\n }\n }\n\n private addEvents(){\n let eventT: keyof HTMLElementEventMap = (window._device && window._device==='ingame')? 'keypress': 'keydown';\n \n this.inputEl.addEventListener(eventT, (e: KeyboardEvent)=>{\n if ( e.keyCode === 27 ) { // ESC\n this.inputEl.value = this.loadedKeyword;\n this.result.toggleResult(false);\n return false;\n }\n\n if ( e.keyCode === 13 ) { // Enter\n this.submitGo();\n // this.submitBtn.focus();\n return false;\n }\n\n if ( e.keyCode === 9 ) { // Tab\n this.focusChange( !e.shiftKey? 1: -1 );\n return false;\n }\n\n if ( e.keyCode === 40) { // ↓\n this.focusChange(1);\n return false;\n }\n\n if ( e.keyCode === 38 ) { // ↑\n this.focusChange(-1);\n return false;\n }\n });\n\n this.inputEl.addEventListener( 'blur', () => {\n if(this.sto){\n clearTimeout( this.sto );\n this.sto = null;\n }\n setTimeout( () => {\n this.result.toggleResult(false);\n this.recent.toggleRecent(false);\n } , 150 );\n });\n\n this.inputEl.addEventListener( 'focus', () => {\n this.isValueFunctionText = '';\n if( !this.sto ) this.realTimeInputCheck();\n toggle(this.suggestWrap, true);\n if( this.result.ilLength > 0 ) {\n this.result.toggleResult(true);\n }\n });\n\n this.submitBtn.addEventListener( 'click', () => this.submitGo() );\n\n this.deleteBtn.addEventListener( 'click', () => {\n this.loadedKeyword = '';\n this.inputEl.value = '';\n this.inputEl.focus();\n });\n }\n\n private realTimeInputCheck(){\n if(this.sto){\n clearTimeout( this.sto );\n this.sto = null;\n }\n\n const inputTxt = this.inputEl.value.trim();\n\n // 문자열이 있나?\n if( inputTxt ){\n // 바로 앞에서 api 호출한 문자열 인가?\n // 화살표 이동을 통해 입력된 문자열 인가?\n if( this.loadedKeyword !== inputTxt && this.dataBaseKeyword !== inputTxt && this.isValueFunctionText !== inputTxt ){\n this.recent.toggleRecent(false);\n this.load( inputTxt );\n this.isValueFunctionText = '';\n }\n } else {\n this.recent.toggleRecent(true);\n \n if(this.loadedKeyword != '') {\n setTimeout(()=>{\n if( this.inputEl.value.trim() ) return;\n this.loadedKeyword = '';\n }, 10);\n }\n if(this.result.inner != '') {\n setTimeout(()=>{\n this.result.inner = '';\n this.result.toggleResult(false);\n }, 10);\n }\n }\n\n this.deleteBtnToggle(inputTxt);\n this.sto = setTimeout(()=>this.realTimeInputCheck(), 10);\n }\n\n private deleteBtnToggle(inputTxt = ''){\n if(!this.option.useDelbtn) return false;\n this.deleteBtn.style.display = (inputTxt? 'block': 'none');\n }\n\n private drawList(_data: {id:string; keyword:string;}[]){\n // 인풋에 문자열 없으면 데이터가 들어와도 보여주지 않는다.\n if(!this.inputEl.value.trim()) return;\n this.result.reset(this.loadedKeyword, _data);\n }\n\n private focusChange( _direction = 1 ){\n let dbKeyword = '';\n if (this.recent.isShow) {\n dbKeyword = this.recent.focusChange(_direction);\n }else{\n dbKeyword = this.result.focusChange(_direction);\n }\n\n if( dbKeyword ){\n this.dataBaseKeyword = dbKeyword;\n }\n }\n\n private submitGo() {\n this.result.toggleResult(false);\n this.recent.toggleRecent(false);\n\n const keyword = this.inputEl.value.trim();\n\n if (typeof this.option.submitCallback === 'function' && keyword !== '') {\n this.recent.setRecentList( keyword );\n this.option.submitCallback( keyword );\n }\n }\n \n // public ---------------------------------------------------------------------\n public value(_txt: string){\n this.isValueFunctionText = _txt;\n this.inputEl.value = _txt;\n }\n\n}// end of class","import { ModalOption } from '../../interface/IModal';\n\n// * Init Options\nexport const initialOptions: ModalOption = {\n customClass: '', // Custom class for custom design\n isVertical: true, // Toast type (true ? vertical : horizontal)\n position: 'center', // Modal position ('top-start', 'top', 'top-end', 'center-start', 'center', 'center-end', 'bottom-start', 'bottom', 'bottom-end')\n title: '', // Title html or text\n html: '', // Content html or text\n width: undefined, // Modal content width\n allowOutsideClick: true, // Allow close modal to click outside\n timer: undefined, // Autoclose timer\n showCloseButton: true, // Show close button\n showConfirmButton: true, // Show confirm button\n showCancelButton: false, // Show cancel button\n confirmButtonText: '확인', // Confirm button text\n cancelButtonText: '취소', // Cancel button text\n confirmButtonColor: undefined, // Confirm button color\n cancelButtonColor: undefined, // Cancel button color\n showClass: '', // Show animation class\n hideClass: '', // Hide animation class\n willOpen: undefined, // Execute when modal is open\n preConfirm: undefined, // Execute when click confirm\n willClose: undefined, // Execute when click cancel\n allowEscapeKey: true, // Allow Esc keyboardEvent\n allowEnterKey: true, // Allow Enter keyboardEvent\n} as const;\n\n// * Default Options\nexport const toastDefaultOptions: Partial = {\n position: 'bottom',\n};\n\nexport const confirmDefaultOptions: Partial = {\n showCloseButton: false,\n showCancelButton: true,\n};\n\nexport const alertDefaultOptions: Partial = {\n showCloseButton: false,\n};\n\nexport const layerDefaultOptions: Partial = {\n showCancelButton: true,\n};\n","export const NCUI_MODAL_PREFIX = 'ncuim-';\nconst NCUI_TOAST_PREFIX = `${NCUI_MODAL_PREFIX}toast`;\n\nexport const modalClass = {\n BACKDROP: `${NCUI_MODAL_PREFIX}backdrop`,\n BACKDROP_SHOW: `${NCUI_MODAL_PREFIX}backdrop-show`,\n BACKDROP_HIDE: `${NCUI_MODAL_PREFIX}backdrop-hide`,\n CONTAINER: `${NCUI_MODAL_PREFIX}container`,\n BUTTON_CANCEL: `${NCUI_MODAL_PREFIX}button__cancel`,\n BUTTON_CONFIRM: `${NCUI_MODAL_PREFIX}button__confirm`,\n BUTTON_CLOSE: `${NCUI_MODAL_PREFIX}close`,\n} as const;\n\nexport const toastClass = {\n TOAST: NCUI_TOAST_PREFIX,\n TOAST_TYPE_VERTICAL: 'vertical',\n TOAST_TYPE_HORIZONTAL: 'horizontal',\n TOAST_SHOW: `${NCUI_TOAST_PREFIX}-show`,\n TOAST_HIDE: `${NCUI_TOAST_PREFIX}-hide`,\n} as const;\n\nexport const popupClass = {\n POPUP: `${NCUI_MODAL_PREFIX}modal`,\n POPUP_SHOW: `${NCUI_MODAL_PREFIX}shown`,\n POPUP_CONTAINER_SHOW: `${modalClass.CONTAINER}-show`,\n POPUP_CONTAINER_HIDE: `${modalClass.CONTAINER}-hide`,\n} as const;\n","// Fix iOS scrolling\n\nexport const iOSfix = (modalContainer: HTMLDivElement) => {\n const modalContent =\n document.querySelector('.ncuim-wrapper')!;\n const iOS =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.userAgentData?.platform === 'macOS' &&\n navigator.maxTouchPoints > 1);\n\n if (iOS && !document.body.classList.contains('iosFix')) {\n const offset = document.body.scrollTop;\n document.body.style.top = `${offset * -1}px`;\n document.body.classList.add('iosFix');\n _lockBodyScroll(modalContainer);\n _addBottomPaddingForTallPopups(modalContent, modalContainer);\n }\n};\nexport const undoIOSfix = () => {\n if (!document.body.classList.contains('iosFix')) return;\n const offset = parseInt(document.body.style.top, 10);\n document.body.classList.remove('iosFix');\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n};\n\n// 하단에 확인 버튼이 있는 경우 사파리에서 브라우저 입력창이 뜨는 이슈\nconst _addBottomPaddingForTallPopups = (\n modalContent: HTMLDivElement,\n modalContainer: HTMLDivElement\n) => {\n const ua = navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n const iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\n if (iOSSafari) {\n const bottomPanelHeight = 44;\n if (\n modalContent.scrollHeight >\n window.innerHeight - bottomPanelHeight\n ) {\n modalContainer.style.paddingBottom = `${bottomPanelHeight}px`;\n }\n }\n};\n\nconst _lockBodyScroll = (modalContainer: HTMLDivElement) => {\n let preventTouchMove: boolean;\n modalContainer.ontouchstart = (event: TouchEvent) => {\n preventTouchMove = _shouldPreventTouchMove(event, modalContainer);\n };\n modalContainer.ontouchmove = (event: TouchEvent) => {\n if (!preventTouchMove) return;\n event.preventDefault();\n event.stopPropagation();\n };\n};\n\nconst _shouldPreventTouchMove = (\n event: TouchEvent,\n modalContainer: HTMLDivElement\n) => {\n const htmlContainer = document.body.querySelector(\n '.ncuim-html-container'\n )!;\n const target = event.target;\n\n if (isStylus(event) || isZoom(event)) {\n return false;\n }\n if (target === modalContainer) {\n return true;\n }\n if (\n !isScrollable(modalContainer) &&\n target instanceof HTMLElement &&\n target.tagName !== 'INPUT' &&\n target.tagName !== 'TEXTAREA' &&\n !(isScrollable(htmlContainer) && htmlContainer.contains(target))\n ) {\n return true;\n }\n return false;\n};\n\n// 터치 방식이 펜일 경우\nconst isStylus = (event: TouchEvent) => {\n return (\n event.touches &&\n event.touches.length &&\n (event.touches[0] as TouchInit).touchType === 'stylus'\n );\n};\n\nconst isScrollable = (elem: HTMLElement) =>\n !!(elem.scrollHeight > elem.clientHeight);\n\n// 축소 및 줌 금지\nconst isZoom = (event: TouchEvent) => {\n return event.touches && event.touches.length > 1;\n};\n","export const htmlContent = (html: string): HTMLElement | string => {\n let tmp = document.createElement('div');\n tmp.innerHTML = html;\n return tmp.innerHTML || html;\n};\n\nexport const setTagClass = (classProperties: string[] | string) => {\n if (Array.isArray(classProperties)) {\n return classProperties.every((i) => i.length === 0)\n ? ''\n : ` ${classProperties.join(' ').trim()}`;\n } else {\n return classProperties ? ` ${classProperties}` : '';\n }\n};\n\nexport const setTagStyle = (...styleProperties: string[]) => {\n return styleProperties.every((i) => i.length === 0)\n ? ''\n : ` style=\"${styleProperties.join(' ').trim()}\"`;\n};\n\nexport const clearTimer = (timer: number | null) => {\n if (timer) clearTimeout(timer);\n};\n\nexport function removeAllElements(\n elements: T[] | undefined\n) {\n if (!elements || elements.length === 0) {\n return;\n }\n\n elements.forEach((element) => {\n element.remove();\n });\n}\n\nexport const isFunction = (value: unknown): value is Function => {\n return typeof value === 'function';\n};\n","export const handleState = {\n CLOSE: 'close',\n CANCEL: 'cancel',\n CONFIRM: 'confirm',\n TIMER: 'timer',\n BACKDROP: 'backdrop',\n ESC: 'esc',\n} as const;\n\nexport const langArr = [\n 'ko',\n 'en',\n 'ar',\n 'zh',\n 'id',\n 'ja',\n 'ru',\n 'th',\n] as const;\n\nexport const modalPosition = [\n 'top-start',\n 'top',\n 'top-end',\n 'center-start',\n 'center',\n 'center-end',\n 'bottom-start',\n 'bottom',\n 'bottom-end',\n] as const;\n","import { htmlContent, setTagStyle, setTagClass } from '../util/util';\nimport { ModalOption } from '../../interface/IModal';\n\nexport const makeModalContent = (options: ModalOption): string => {\n const $modalTemplate = `
    \n
    \n ${renderCloseBtn(options)}\n
    \n ${renderTitle(options)}\n ${renderHtml(options)}\n
    \n ${renderButtons(options)}\n
    \n
    `;\n\n return $modalTemplate;\n};\n\nconst renderCloseBtn = (options: ModalOption): string => {\n return options.showCloseButton\n ? ``\n : '';\n};\nconst renderTitle = (options: ModalOption): string => {\n return options.title\n ? `
    ${htmlContent(options.title)}
    `\n : '';\n};\nconst renderHtml = (options: ModalOption): string => {\n return options.html\n ? `
    ${htmlContent(options.html)}
    `\n : '';\n};\nconst renderButtons = (options: ModalOption): string => {\n return options.showConfirmButton || options.showCancelButton\n ? `
    \n ${\n options.showCancelButton\n ? ``\n : ''\n }\n ${\n options.showConfirmButton\n ? ``\n : ''\n }\n
    `\n : '';\n};\n","import { IModalL10n } from '../../interface/IModal';\nimport { ko, zh, ja, en, th, ru, id, ar } from './lang';\n\nexport const modalL10n: IModalL10n = { ko, zh, ja, en, th, ru, id, ar };\n","const lang = {\n actionButton: {\n confirm: '확인',\n cancel: '취소',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: '確認',\n cancel: '取消',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: '確認',\n cancel: 'キャンセル',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: 'Confirm',\n cancel: 'Cancel',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: 'ตกลง',\n cancel: 'ยกเลิก',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: 'ОК',\n cancel: 'Отмена',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: 'OK',\n cancel: 'Batal',\n },\n};\nexport default lang;\n","const lang = {\n actionButton: {\n confirm: 'موافق',\n cancel: 'إلغاء',\n },\n};\nexport default lang;\n","import { makeElement, addClass, toggleClass } from '../../common/Utils';\nimport { clearTimer, isFunction } from '../util/util';\nimport { NCUI_MODAL_PREFIX, modalClass, popupClass } from '../constants/class';\nimport { handleState, langArr } from '../constants/state';\nimport { makeModalContent } from '../util/renderModal';\nimport {\n ModalOption,\n ModalPromiseResolve,\n langType,\n ModalL10n,\n} from '../../interface/IModal';\nimport { modalL10n } from '../l10n';\nimport { initialOptions } from '../constants/options';\n\nexport default abstract class AbstractNotification {\n private l10n!: ModalL10n;\n protected $backdrop!: HTMLDivElement;\n protected $modalContent!: HTMLDivElement;\n protected $confirmButton: HTMLButtonElement | null = null;\n protected $cancelButton: HTMLButtonElement | null = null;\n protected $closeButton: HTMLButtonElement | null = null;\n protected modalTimer: number | null = null;\n protected isOpen: boolean = false;\n protected options: ModalOption = initialOptions;\n\n // 모달 열기\n protected open(options: ModalOption): void {\n this.initModal();\n this.optionsSetting(options);\n\n this.isOpen = true;\n this.$backdrop.innerHTML = makeModalContent(this.options);\n this.setModalDom();\n\n this.addClass();\n this.addClassForAnimation();\n\n this.addEvents();\n this.appendModalInBody();\n\n this.addWillOpen();\n }\n // 모달 닫기\n protected close(): void {\n clearTimer(this.modalTimer);\n if (!this.$backdrop.classList.contains(modalClass.BACKDROP_SHOW))\n return;\n this.isOpen = false;\n this.removeClassForAnimation();\n }\n // modal 초기화\n protected initModal(): void {\n if (this.$backdrop) this.$backdrop.remove();\n this.options = initialOptions;\n this.makeBackdropElement();\n clearTimer(this.modalTimer);\n\n this.setLang();\n this.setL10nText();\n }\n private setLang(): void {\n const lang =\n (document\n .querySelector('html')!\n .getAttribute('lang') as langType) || langArr[0];\n this.l10n = modalL10n[langArr.indexOf(lang) !== -1 ? lang : 'ko'];\n }\n private setL10nText(): void {\n this.options = {\n ...this.options,\n cancelButtonText: this.l10n.actionButton.cancel,\n confirmButtonText: this.l10n.actionButton.confirm,\n };\n }\n private makeBackdropElement(): void {\n this.$backdrop = makeElement(\n `
    `\n ) as HTMLDivElement;\n }\n private optionsSetting(options: ModalOption): void {\n this.options = { ...this.options, ...options };\n }\n private setModalDom(): void {\n this.$modalContent = this.$backdrop.querySelector(\n `.${modalClass.CONTAINER}`\n )!;\n this.$cancelButton = this.$backdrop.querySelector(\n `.${modalClass.BUTTON_CANCEL}`\n );\n this.$confirmButton = this.$backdrop.querySelector(\n `.${modalClass.BUTTON_CONFIRM}`\n );\n this.$closeButton = this.$backdrop.querySelector(\n `.${modalClass.BUTTON_CLOSE}`\n );\n }\n private addEvents(): void {\n this.$cancelButton?.addEventListener('click', () => this.close());\n this.$confirmButton?.addEventListener('click', () => this.close());\n this.$closeButton?.addEventListener('click', () => this.close());\n this.$backdrop.addEventListener('animationend', () => {\n if (!this.isOpen) this.initModal();\n });\n }\n protected addEventsByOptions(resolve: ModalPromiseResolve): void {\n this.addConfirmBtnListener(resolve);\n this.addEnterKeyListener(resolve);\n this.addCancelBtnListener(resolve);\n this.addCloseBtnListener(resolve);\n }\n private addEnterKeyListener(resolve: ModalPromiseResolve): void {\n if (this.options.allowEnterKey) {\n this.$cancelButton?.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n resolve({\n value: handleState.CANCEL,\n isConfirmed: false,\n isCancel: true,\n });\n }\n });\n this.$confirmButton?.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n resolve({\n value: handleState.CONFIRM,\n isConfirmed: true,\n isCancel: false,\n });\n }\n });\n }\n }\n private addConfirmBtnListener(resolve: ModalPromiseResolve): void {\n this.$confirmButton?.addEventListener('click', (e) => {\n e.stopPropagation();\n if (this.options.preConfirm && isFunction(this.options.preConfirm))\n this.options.preConfirm();\n resolve({\n value: handleState.CONFIRM,\n isConfirmed: true,\n isCancel: false,\n });\n });\n }\n private addCancelBtnListener(resolve: ModalPromiseResolve): void {\n this.$cancelButton?.addEventListener('click', (e) => {\n e.stopPropagation();\n if (this.options.willClose && isFunction(this.options.willClose))\n this.options.willClose();\n resolve({\n value: handleState.CANCEL,\n isConfirmed: false,\n isCancel: true,\n });\n });\n }\n private addCloseBtnListener(resolve: ModalPromiseResolve): void {\n this.$closeButton?.addEventListener('click', (e) => {\n e.stopPropagation();\n resolve({\n value: handleState.CLOSE,\n isConfirmed: false,\n isCancel: false,\n });\n });\n }\n private addWillOpen() {\n if (this.options.willOpen && isFunction(this.options.willOpen))\n this.options.willOpen();\n }\n private appendModalInBody(): void {\n document.body.appendChild(this.$backdrop);\n }\n protected focusOnButton(): void {\n if (!this.options.showConfirmButton && !this.options.showCancelButton)\n return;\n\n this.options.showCancelButton\n ? this.$cancelButton?.focus()\n : this.$confirmButton?.focus();\n }\n protected setTimerOption(resolve: ModalPromiseResolve): void {\n if (this.options.timer && this.options.timer > 0) {\n this.modalTimer = window.setTimeout(() => {\n this.close();\n resolve({\n value: handleState.TIMER,\n isCancel: true,\n isConfirmed: false,\n });\n }, this.options.timer);\n }\n }\n private addClass(): void {\n addClass(\n this.$backdrop,\n `${NCUI_MODAL_PREFIX}${this.options.position}`\n );\n }\n private addClassForAnimation(): void {\n addClass(this.$backdrop, modalClass.BACKDROP_SHOW);\n }\n protected removeClassForAnimation(): void {\n if (!!this.options.hideClass) {\n toggleClass(this.$backdrop, this.options.hideClass);\n } else {\n toggleClass(this.$backdrop, modalClass.BACKDROP_SHOW);\n toggleClass(this.$backdrop, modalClass.BACKDROP_HIDE);\n }\n toggleClass(this.$modalContent, popupClass.POPUP_CONTAINER_SHOW);\n toggleClass(this.$modalContent, popupClass.POPUP_CONTAINER_HIDE);\n }\n}\n","import { addClass, removeClass } from '../../common/Utils';\nimport { popupClass } from '../constants/class';\nimport { iOSfix, undoIOSfix } from '../util/iosFix';\nimport {\n ModalOption,\n ModalPromiseResult,\n ModalPromiseResolve,\n} from '../../interface/IModal';\nimport AbstractNotification from './AbstractNotification';\nimport { handleState } from '../constants/state';\n\nexport default class Modal extends AbstractNotification {\n constructor() {\n super();\n }\n protected initModal(): void {\n super.initModal();\n if (document.querySelectorAll(`#${popupClass.POPUP}`).length <= 0)\n removeClass(document.body, popupClass.POPUP_SHOW);\n }\n protected close(): void {\n undoIOSfix();\n super.close();\n }\n async open(options: ModalOption): Promise {\n super.open(options);\n this.addClassForPopup();\n this.addClassForPopupAnimation();\n iOSfix(this.$backdrop);\n setTimeout(() => {\n this.$backdrop.scrollTop = 0;\n });\n\n return await new Promise((resolve) => {\n this.addEventsByOptionsInPopup(resolve);\n super.focusOnButton();\n super.setTimerOption(resolve);\n });\n }\n private addClassForPopup() {\n this.$backdrop.id = popupClass.POPUP;\n addClass(document.body, popupClass.POPUP_SHOW);\n }\n private addClassForPopupAnimation(): void {\n !!this.options.showClass\n ? addClass(this.$backdrop, this.options.showClass)\n : addClass(this.$modalContent, popupClass.POPUP_CONTAINER_SHOW);\n }\n private addEventsByOptionsInPopup(resolve: ModalPromiseResolve) {\n super.addEventsByOptions(resolve);\n this.addKeyboardEvent();\n this.addEscapeKeyListener(resolve);\n this.addBackdropClickListener(resolve);\n }\n // button만 탭으로 focus 되되록\n private addKeyboardEvent(): void {\n this.$backdrop.addEventListener('keydown', (e) => {\n e.stopPropagation();\n if (e.key === 'Tab') {\n if (e.target === this.$cancelButton) {\n this.$confirmButton?.focus();\n e.preventDefault();\n } else if (e.target === this.$confirmButton) {\n this.$cancelButton?.focus();\n e.preventDefault();\n }\n }\n });\n }\n private addEscapeKeyListener(resolve: ModalPromiseResolve): void {\n if (this.options.allowEscapeKey) {\n this.$modalContent.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n super.close();\n resolve({\n value: handleState.ESC,\n isConfirmed: false,\n isCancel: false,\n });\n }\n });\n }\n }\n private addBackdropClickListener(resolve: ModalPromiseResolve): void {\n if (this.options.allowOutsideClick) {\n this.$backdrop.addEventListener('click', (e: MouseEvent) => {\n if (e.currentTarget !== e.target) return;\n e.stopPropagation();\n super.close();\n resolve({\n value: handleState.BACKDROP,\n isConfirmed: false,\n isCancel: false,\n });\n });\n }\n }\n}\n","import { alertDefaultOptions } from '../constants/options';\nimport { ModalOption, ModalPromiseResult } from '../../interface/IModal';\nimport Popup from './Popup';\n\nexport default class Toast extends Popup {\n constructor() {\n super();\n }\n async open(options: ModalOption): Promise {\n return super.open({ ...alertDefaultOptions, ...options });\n }\n}\n","import { confirmDefaultOptions } from '../constants/options';\nimport { ModalOption, ModalPromiseResult } from '../../interface/IModal';\nimport Popup from './Popup';\n\nexport default class Confirm extends Popup {\n constructor() {\n super();\n }\n async open(options: ModalOption): Promise {\n return super.open({ ...confirmDefaultOptions, ...options });\n }\n}\n","import { layerDefaultOptions } from '../constants/options';\nimport { ModalOption, ModalPromiseResult } from '../../interface/IModal';\nimport Popup from './Popup';\n\nexport default class Layer extends Popup {\n constructor() {\n super();\n }\n async open(options: ModalOption): Promise {\n return super.open({ ...layerDefaultOptions, ...options });\n }\n}\n","import { addClass, toggleClass } from '../../common/Utils';\nimport { toastClass } from '../constants/class';\nimport { toastDefaultOptions } from '../constants/options';\nimport { ModalOption, ModalPromiseResult } from '../../interface/IModal';\nimport AbstractNotification from './AbstractNotification';\n\nexport default class Toast extends AbstractNotification {\n constructor() {\n super();\n }\n\n async open(options?: ModalOption): Promise {\n super.open({ ...toastDefaultOptions, ...options });\n // class 추가\n this.addClassForToast();\n this.addClassForToastAnimation();\n\n return new Promise((resolve) => {\n // 이벤트 추가\n super.addEventsByOptions(resolve);\n super.setTimerOption(resolve);\n });\n }\n private addClassForToast(): void {\n addClass(\n this.$backdrop,\n `${\n this.options.isVertical\n ? toastClass.TOAST_TYPE_VERTICAL\n : toastClass.TOAST_TYPE_HORIZONTAL\n }`\n );\n addClass(this.$backdrop, toastClass.TOAST);\n }\n private addClassForToastAnimation(): void {\n addClass(this.$backdrop, toastClass.TOAST);\n !!this.options.showClass\n ? addClass(this.$backdrop, this.options.showClass)\n : addClass(this.$modalContent, toastClass.TOAST_SHOW);\n }\n protected removeClassForAnimation(): void {\n toggleClass(this.$modalContent, toastClass.TOAST_SHOW);\n !!this.options.hideClass\n ? toggleClass(this.$backdrop, this.options.hideClass)\n : toggleClass(this.$modalContent, toastClass.TOAST_HIDE);\n\n super.removeClassForAnimation();\n }\n}\n","import Alert from './Notification/Alert';\nimport Confirm from './Notification/Confirm';\nimport Layer from './Notification/Layer';\nimport Toast from './Notification/Toast';\n\n/**\n * @alias Modal\n * @category modal\n * @example\n * if (window.ncui && window.ncui.modal) {\n * const ncuiAlert = new window.ncui.modal.uiAlert();\n * const ncuiConfirm = new window.ncui.modal.uiConfirm();\n * const ncuiLayer = new window.ncui.modal.uiLayer();\n * const ncuiToast = new window.ncui.modal.uiToast();\n * }\n */\nexport default class Index {\n static uiAlert(): Alert {\n return new Alert();\n }\n static uiConfirm(): Confirm {\n return new Confirm();\n }\n static uiLayer(): Layer {\n return new Layer();\n }\n static uiToast(): Toast {\n return new Toast();\n }\n}\n","import {version} from '../../package.json';\nimport { namespace } from './common/Utils';\nimport Smartbanner from './md-smartbanner';\nimport CommunityBanner from './md-communityBanner';\nimport Tab from './md-tab';\nimport Commonbanner from './md-commonBanner';\nimport ProfileImgUpload from './md-profileImgUpload';\nimport MyCharList from './md-myCharList';\nimport Footer from './md-footer';\nimport IdVerify from './md-idVerify';\nimport Dropdown from './md-dropdown';\nimport {ConfirmToastIndex, SettingLayerIndex} from './md-cookieLayer';\nimport AutoSuggest from './md-autoSuggest';\nimport Modal from './md-modal';\n\nnamespace('ncui');\nnamespace('ncui.cookieLayer');\n\nwindow.ncui.ver = version;\nwindow.ncui.smartbanner = Smartbanner;\nwindow.ncui.communityBanner = CommunityBanner;\nwindow.ncui.tab = Tab;\nwindow.ncui.commonBanner = Commonbanner;\nwindow.ncui.profileImgUpload = ProfileImgUpload;\nwindow.ncui.myCharList = MyCharList;\nwindow.ncui.footer = Footer;\nwindow.ncui.idVerify = IdVerify;\nwindow.ncui.dropdown = Dropdown;\nwindow.ncui.cookieLayer.confirmToast = ConfirmToastIndex;\nwindow.ncui.cookieLayer.settingLayer = SettingLayerIndex;\nwindow.ncui.autoSuggest = AutoSuggest;\nwindow.ncui.modal = Modal;\n","// import {ISmartBannerConfig} from \"../interface/IConfig\";\nimport SmartBanner from 'smart-app-banner';\nimport { ISmartBannerConfig } from '../interface/ISmartBanner';\n\n/**\n * @alias SmartBanner\n * @category SmartBanner\n * @param _config {ISmartBannerConfig} \n * @example\n * if (window.ncui && window.ncui.smartbanner) {\n * new window.ncui.smartbanner({\n * title: \"블레이드 & 소울 2\",\n * icon: \"https://wstatic-cdn.plaync.com/resource/bns2/meta/icon_126.png\",\n * button: \"열기\",\n * });\n * }\n */\n export default class Index {\n constructor(_config: ISmartBannerConfig) {\n // console.log('-------SmartBanner START-------', _config);\n\n const htmlEl: HTMLElement | null = document.querySelector('html');\n const lang = htmlEl?.getAttribute('lang')? htmlEl.getAttribute('lang')?.toLowerCase(): 'ko';\n\n new SmartBanner({\n appStoreLanguage: lang,\n title: _config.title,\n button: _config.button,\n icon: _config.icon,\n\n daysHidden: 365,\n daysReminder: 0,\n author: 'NCSOFT',\n store: {\n ios: 'On the App Store',\n android: 'In Google Play',\n windows: 'In Windows store'\n },\n price: {\n ios: 'FREE',\n android: 'FREE',\n windows: 'FREE'\n }, \n theme: 'ios'\n });\n }\n\n\n} // end of class","import { ITabConfig } from '../interface/ITab';\nimport Depth3Tab from './feature/DefaultTab/Depth3Tab';\nimport DepthTabLayer from './feature/CustomTab/DepthTabLayer';\n\n/**\n * @alias Tab\n * @category tab\n * @example\n * const tabConfig = {...}\n * if (window.ncui && window.ncui.Tab) {\n * new window.ncui.tab(tabConfig);\n * }\n */\nexport default class Index {\n constructor(_config?: ITabConfig) {\n // console.log('-------Tab START-------');\n if (_config && Object.keys(_config).length !== 0)\n new DepthTabLayer(_config);\n else new Depth3Tab();\n }\n} // end of class\n","import { ICommonbannerConfig } from '../interface/ICommonbanner';\nimport NcBanner from './ncBanner/NcBanner';\n\n/**\n * @alias Commonbanner\n * @category Commonbanner\n * @param _config {ICommonbannerConfig} \n * @example\n * var ncBannerData = {.....}\n * if (window.ncui) {\n * new window.ncui.commonBanner({\n * wstatic:\"https:\\/\\/sb-assets.plaync.com\",\n * isLogin: false,\n * ncBanner: ncBannerData\n * });\n * }\n */\nexport default class Index {\n constructor(_config: ICommonbannerConfig) { \n // console.log('-------commobanner START-------', _config);\n new NcBanner(_config);\n\t} \n}\n// end of class","import { IProfileImgUploadConfig } from \"../interface/IProfileImgUpload\";\n\n/**\n * @alias profileImgUpload\n * @category ProfileImgUpload\n * @param _config {IProfileImgUploadConfig} \n * @example\n * if (window.ncui && window.ncui.profileImgUpload) {\n * new window.ncui.profileImgUpload({\n * createToken: \"https://lineagew.plaync.com/kr/profile/image/token\",\n * isProfileUpload: true\n * });\n * }\n */\nexport default class index {\n\n private charUpload: ICharUpload | null = null;\n\n constructor(_config: IProfileImgUploadConfig) {\n // console.log('-------ProfileImage START-------', _config);\n \n let charList = document.querySelector('.my-character-list');\n if (!charList) return;\n \n this.charUpload = new window.ui.ncUpload( _config );\n this.charUpload.onProfileComplete.add( ()=>location.reload(), this );\n }\n}","import { IFooterConfigAllwithDefault } from '../interface/IFooter';\nimport DataStore from \"./DataStore\";\nimport {makeEl} from \"../common/Utils\";\nimport Country from \"./component/Country\";\nimport Language from \"./component/Language\";\nimport SnsList from \"./component/SnsList\";\nimport Links from \"./component/Links\";\nimport Info from \"./component/Info\";\nimport Copyright from \"./component/Copyright\";\nimport Logo from \"./component/Logo\";\nimport FamilySite from \"./component/FamilySite\";\nimport Layer from \"./Layer\";\nimport LanguageCountry from './component/LanguageCountry';\n\nexport default class Index {\n constructor(_config: IFooterConfigAllwithDefault) {\n DataStore.instance.init(_config);\n const footerMain = document.querySelector('#footer');\n if(footerMain){\n const wrapper = makeEl('div', footerMain, {class: 'footer'})\n const changeWrap = makeEl('div', wrapper, {class: 'footer-change-wrap'})\n new Country(changeWrap);\n new Language(changeWrap);\n new LanguageCountry(changeWrap);\n new SnsList(wrapper);\n new Links(wrapper);\n new Info(wrapper);\n new Copyright(wrapper);\n new Logo(wrapper);\n new FamilySite(wrapper);\n new Layer();\n }\n }\n} // end of class"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","transitionalDefaults","Cancel","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","all","promises","spread","isAxiosError","message","this","toString","__CANCEL__","executor","TypeError","resolvePromise","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","reason","throwIfRequested","listener","push","index","splice","source","c","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","replace","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","Error","transformData","throwIfCancellationRequested","call","transformRequest","merge","common","adapter","transformResponse","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","Object","keys","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","callback","arr","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","console","warn","schema","allowUnknown","result","getPrototypeOf","isFunction","obj","hasOwnProperty","constructor","ArrayBuffer","isView","pipe","product","assignValue","a","b","str","stripBOM","content","charCodeAt","one","selector","el","querySelector","querySelectorAll","engine","doc","self","splat","ps","s","escape","get","set","global","isCallable","tryToString","argument","isConstructor","String","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","f","configurable","S","unicode","isPrototypeOf","it","Prototype","fails","isExtensible","defineProperty","toObject","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","end","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","step","iterator","next","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","fromIndex","includes","uncurryThis","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","that","specificCreate","boundFunction","map","filter","some","every","find","findIndex","filterReject","V8_VERSION","SPECIES","METHOD_NAME","array","foo","Boolean","aCallable","IS_RIGHT","memo","left","right","max","Math","start","k","fin","n","arraySlice","floor","mergeSort","comparefn","middle","insertionSort","element","j","llength","rlength","lindex","rindex","originalArray","C","arraySpeciesConstructor","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","from","exec","SKIP_CLOSING","ITERATION_SUPPORT","object","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","redefineAll","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","ADDER","Constructor","iterable","first","last","size","AS_ENTRIES","getInternalState","define","previous","state","entry","getEntry","removed","clear","prev","has","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","$","isForced","redefine","InternalMetadataModule","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","entries","enable","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","forced","hasOwn","ownKeys","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyDescriptor","MATCH","regexp","error1","error2","F","requireObjectCoercible","quot","string","attribute","p1","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","bitmap","enumerable","writable","toPropertyKey","propertyKey","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","createNonEnumerableProperty","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","values","proto","wrappedWellKnownSymbolModule","Symbol","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","documentCreateElement","DOMTokenListPrototype","firefox","UA","Pebble","classof","getBuiltIn","Deno","versions","v8","webkit","setGlobal","copyConstructorProperties","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","flags","uncurriedNativeRegExpMethod","nativeMethod","arg2","forceStringMethod","$exec","flattenIntoArray","original","sourceLen","depth","mapper","elementLen","targetIndex","sourceIndex","mapFn","preventExtensions","NATIVE_BIND","FunctionPrototype","Function","Reflect","factories","construct","argsLength","list","partArgs","getDescriptor","aFunction","namespace","getMethod","usingIterator","V","P","func","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","m","symbols","ch","capture","check","globalThis","g","propertyIsEnumerable","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","uid","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","getOwnPropertyNames","getWeakData","onFreeze","NATIVE_WEAK_MAP","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","noop","empty","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","feature","detection","normalize","POLYFILL","NATIVE","isRegExp","USE_SYMBOL_AS_UID","$Symbol","Result","stopped","ResultPrototype","unboundFunction","iterFn","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","flush","head","notify","toggle","node","macrotask","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","nextTick","createTextNode","observe","characterData","task","getOwnPropertySymbols","symbol","PromiseCapability","$$resolve","$$reject","whitespaces","n$ParseFloat","parseFloat","trimmedString","$parseInt","parseInt","hex","radix","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","assign","A","B","alphabet","chr","T","activeXDocument","definePropertiesModule","enumBugKeys","html","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","style","display","appendChild","src","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","defineProperties","props","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","Attributes","current","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","TO_ENTRIES","input","pref","valueOf","newPromiseCapability","x","promiseCapability","Queue","tail","item","enforceInternalState","TEMPLATE","unsafe","simple","R","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","raw","groups","sticky","charsAdded","strCopy","multiline","ignoreCase","dotAll","$RegExp","MISSED_STICKY","is","y","TAG","SHARED","mode","copyright","license","aConstructor","defaultConstructor","toIntegerOrInfinity","CONVERT_TO_STRING","pos","second","codeAt","whitespace","ltrim","rtrim","defer","channel","validateArgumentsLength","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","queue","run","runner","event","post","postMessage","handler","port2","port1","onmessage","importScripts","removeChild","min","integer","ceil","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arg","len","E","$every","fill","addToUnscopables","$filter","$findIndex","FIND_INDEX","SKIPS_HOLES","$find","FIND","flat","depthArg","$includes","$IndexOf","un$IndexOf","NEGATIVE_ZERO","searchElement","ARRAY_ITERATOR","Arguments","un$Join","ES3_STRINGS","separator","$map","$reduce","CHROME_VERSION","reduce","un$Slice","HAS_SPECIES_SUPPORT","$some","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","fromCharCode","itemsLength","items","arrayLength","getSortCompare","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","deleteCount","insertCount","actualDeleteCount","to","actualStart","DatePrototype","INVALID_DATE","un$DateToString","getTime","NaN","FUNCTION_NAME_EXISTS","nameRE","regExpExec","collection","init","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","toNumeric","primValue","toNumber","third","maxCode","digits","NumberWrapper","$entries","nativeKeys","$values","$parseFloat","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","wrap","r","capability","$promiseResolve","remaining","alreadyCalled","race","regExpFlags","NativeRegExp","SyntaxError","getFlags","stringIndexOf","IS_NCG","CORRECT_NEW","RegExpWrapper","pattern","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","proxy","$toString","TO_STRING","n$ToString","NOT_GENERIC","INCORRECT_NAME","p","rf","notARegExp","correctIsRegExpLogic","searchString","STRING_ITERATOR","point","createHTML","forcedStringHTMLMethod","link","fixRegExpWellKnownSymbolLogic","advanceStringIndex","nativeMatch","maybeCallNative","matcher","rx","res","fullUnicode","matchStr","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","q","z","$trim","forcedStringTrimMethod","NativeSymbol","SymbolPrototype","EmptyStringDescriptionStore","SymbolWrapper","symbolToString","symbolValueOf","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","QObject","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","space","$replacer","hint","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","MSIE","scheduler","boundArgs","setInterval","hasDom","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","allowDots","allowPrototypes","arrayLimit","charset","charsetSentinel","comma","decoder","decode","delimiter","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","leaf","root","cleanRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","Infinity","skipIndex","part","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","newObj","compact","arrayPrefixGenerators","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","encodeValuesOnly","format","formatter","serializeDate","date","skipNulls","generateArrayPrefix","keyValue","valuesArray","valuesJoined","objKeys","keyPrefix","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","acc","o","refs","pop","compacted","compactQueue","strWithoutPlus","defaultEncoder","out","mapped","mergeTarget","targetItem","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","ua","userLang","language","userLanguage","browserLanguage","documentElement","mixins","ios","appMeta","iconRels","getStoreLink","appStoreLanguage","appId","android","windows","SmartBanner","agent","daysHidden","daysReminder","button","price","theme","icon","force","os","parseAppId","isMobileSafari","browser","runningStandAlone","standalone","userDismissed","userInstalled","show","inStore","rel","getAttribute","sb","className","innerHTML","title","author","body","install","hide","Number","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","enums","str1","str2","lowerize","substring","rgxMapper","arrays","matches","regex","strMapper","windowsVersionMap","regexes","OPERA","FIREFOX","CHROME","cpu","device","EDGE","UAParser","extensions","getResult","_ua","_rgxmap","mergedRegexes","getBrowser","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","__esModule","d","definition","_namespace","_parent","setCookie","expiredays","setDate","getDate","toUTCString","getCookie","mergeDeep","sources","addClass","ele","cls","removeClass","toggleClass","Map","makeElement","tmp","implementation","createHTMLDocument","firstChild","makeEl","tagName","parentEle","attr","text","textContent","getLang","getElementsByTagName","getComputedStyle","param","ssrDocument","activeElement","blur","nodeName","getElementById","children","childNodes","createElementNS","importNode","origin","ssrWindow","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","screen","clearTimeout","matchMedia","requestAnimationFrame","cancelAnimationFrame","win","Dom7","super","makeReactive","arrayFlat","arrayFilter","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","noTrigger","shortcut","trigger","on","Methods","classes","classNames","hasClass","contains","attrs","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","eventType","targetSelector","handleLiveEvent","eventData","dom7EventData","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","dom7proxy","evt","detail","bubbles","cancelable","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","css","each","compareWith","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","prepend","insertBefore","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parentNode","closest","foundElements","found","methodName","delay","isNode","HTMLElement","noExtend","nextSource","keysArray","nextIndex","nextKey","__swiper__","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","animate","progress","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","deviceCached","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","priority","eventsListeners","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","_len2","_key2","updateSize","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","updateSlides","getDirectionLabel","property","getDirectionPropertyValue","label","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","slideTo","internal","initial","indexAsNumber","isFinite","animating","preventInteractionOnTransition","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","isH","t","_immediateVirtual","_swiperImmediateVirtual","behavior","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","getTranslate","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","passive","move","updateOnWindowResize","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","resultClasses","prepareClasses","emitContainerClasses","removeClasses","resizeObserver","createElements","virtualTranslate","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","update","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","containerEl","currentHeight","innerHeight","points","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","onload","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","overrides","_temp","platform","screenWidth","screenHeight","ipad","ipod","iphone","macos","calcDevice","isSafari","isWebView","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","destroy","deleteInstance","cleanStyles","deleteProps","static","newDefaults","installModule","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","observeParents","observeSlideChildren","containerParents","disconnect","checkProps","Navigation","getEl","toggleEl","disabled","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","Index","_config","_fetchDummyList","dummyData","fetchBannerList","apiDomain","contiTopBannerApi","isActive","createBanner","bannerList","_api","parseData","jsonData","log","boardTopBannerIndex","Element","appendBannerList","setSwiper","containerElement","wrapperElement","insertAdjacentHTML","bannerSwiperWrapper","bannerItem","bannerItemElement","img_m","img_pc","IS_RTL_SERVICE","ACTIVE_ITEMS_CLASS","ScrollState","isDown","isDragged","_preventClick","getTabWidth","activatedTab","activatedTabIndex","isRTLService","previousActivatedTabX","parentElement","activateTab","$depthListItems","activeDepth","compareUrl","$depthListItem","$depthATag","findActiveHref","targetURL","compareURL","regexpArr","setEventHandlerAndScroll","tabList","horizontalScroll","scroll","mousedownEventHandler","mouseleaveHandler","movedX","mousemoveHandler","childItem","mouseupEventHandler","setHorizontalSrollEvent","lastTab","lastElementChild","prevMove","curMove","nextMove","_distanceFromBorder","_resizeEventHandler","setResizeEvent","toBeScrolledElement","scrollToActivatedTab","Depth4","$depth4Tab","$depth4TabListItems","$depth4ActivatedList","depth4ActivatedSubTabIndex","$depth4ActivatedTab","_activeDepth4","depth4Element","activateTabForDepth3","$depth4Wrap","activeTab","setDepthEvent","Depth3Tab","$depth3List","depth3ActivatedTabIndex","$depth3ActivatedTab","$depth3TabListItems","depth4","Depth4Tab","activeTabs","setDepthEvents","compareUrlInDepth4","_activeDepth3","$depth3Element","DepthTab","callbackFunc","setCallbackEvent","$tabList","$activatedTab","findDepth","tabIndex","findClickedIndex","tablists","listItem","DepthTabLayer","$rootHtml","pathArr","isFindPath","appendDepthWrapperInRoot","depthLevel","$depthParent","insertAdjacentElement","renderTabList","$targetHtml","tabItemData","depthWrapperTemplate","_renderTabItems","setRootHTML","findActiveTab","renderTabs","DepthTabEvent","rootHTMLClass","parentIndices","parentIndicesOfNodeWithHref","newParentIndices","compareArr","tabData","tabItem","isBlank","img","checkCookie","checkFunctional","htmlEl","toLocaleLowerCase","userData","site","typeArr","setStartEndDateTime","_data","_nowData","template","startDate","endDate","startYears","startMonths","startDays","startHours","startMinutes","endYears","endMonths","endDays","endHours","endMinutes","endTime","startday","endday","today","endResult","FloatingLayer","_isMain","_isLauncher","isCookieApply","thisIsCookieApply","floatingBanner","Cookie","LauncherShow","templateFloating","bannerEl","addEvents","Link","LinkNewWindow","BG","Title","dataTypeFloating","MainFloatingLayer","mainFloatingBanner","templateMainFloating","CookieExpiredays","AbsModal","_prefix","isShowModal","initialOptions","contents","primaryBtnText","cancelBtnText","usePrimaryBtn","useCancelBtn","useBackdropClickClose","useEscKeyClose","useEnterKeyClose","mobileFull","autoClose","useBlur","willOpen","didClose","optionsSetting","_options","makeBackdropEl","backdropEl","makeModalEl","modalEl","setBtns","priBtn","secBtn","closeBtn","keyCode","currentTarget","TYPE_TOAST","focus","autoCloseTimeOut","_result","TYPE_MODAL","Modal","closeBtnTmpl","footerBtnTmpl","l10nAllLang","ko","myCharList","loginTime","commonBanner","stop_watching","autoSuggest","deleteAllRecent","noRecentSearchHistory","zh","ja","en","th","ru","ar","ImageLayer","imageBanner","movieBanner","templateImage","customClassName","OrientationVertical","lang","l10n","MobileBG","PcBG","MovieLayer","templateMovie","CDN","URL","youtubeID","movieBody","ToastLayer","toastBanner","templateToast","Lable","SubTitle","dataTypeToast","MainToastLayer","mainToastBanner","templateMainToast","TopLayer","topBanner","templateDate","cnb","startconfig","ddayShow","ddayDate","dday","dayNow","dayDiff","ncbannerdate","bannerdatenum","_isLangJa","_templateDDay","ButtonShow","ButtonLable","NcBanner","ncBanner","wstatic","isMain","isLauncher","_markupCharacterInfo","level","classcard","guild","lastAccess","_getLastAccess","serviceName","lastAccessTime","year","getFullYear","month","getMonth","day","localeCountry","ApiUrl","onRequest","setCharacterChangeFunction","characterWrapper","HTMLUListElement","markupCharacterList","setSelectCharacterEvent","charcterList","characterListElement","characters","characterItem","character","serverName","characterName","classCardName","gameClassName","guildName","clan","companyName","lastLoginDate","loginTimeZ","characeterItem","serverId","characterId","characterElement","_selectCharacterEventHandler","qs","Accept","reload","footerL10n","linkList","footerWords","infoCS","infoJP","footerL10nLang","DEFAULT_CONFIG","countryList","languageList","languageCountryList","snsList","gameGrade","csInfoType","companyLink","keepPath","keepPathForLang","operationPolicyLink","communityPolicyLink","familySiteList","DataStore","country","service","l10nLang","setConfig","countryData","sortCountry","geoCountry","currentConfig","_countryList","localeCompare","_instance","svgIcoBtnChange","svgIcoChangeList","Layer","closeLayer","toggleLayer","_myId","isShowEl","Country","_wrapper","ds","templ","tmpl","class","btn","ul","liTempl","_svgCode","li","aEl","makeLink","_country","newCountry","reg","Language","_lang","originSearch","originSearchArray","resultSearch","SnsList","Links","isBold","textTempl","gradeLayer","_linkName","_link","resultLink","_isBold","_text","infoTW","infoData","getInfoData","jpTitle","jpGenre","genre","jpPrice","jpPriceValue","jpOs","jpDevelopedBy","jpReleaseDay","releaseDay","_service","jpReleaseDayValue_LW","infoRU","_csInfoType","infoCSString","_infoType","infoAddress","businessInformation","emailkey","mailArr","infoEmail","infoNAEU","Info","infoEl","Copyright","_copyright","Logo","FamilySite","_familySiteInfo","innerTmpl","siteLink","siteName","LanguageCountry","isLogin","setting","msg","checkMsg","accountState","_msg","DropdownInstControl","dropdownInstanceArr","addInstance","inst","closeOpenDropdown","openDropdown","isOpen","DropdownBtn","btnType","useSelectExceptPc","btnShowDepthLength","btnEle","addEvent","addListener","active","activeKey","activeData","isLastDepth","setValue","maxDepth","curIsOpen","dispatch","$parent","$strong","btnText","innerText","validateOption","option","checkDepth","calcDepth","findMaxDepth","originData","setEachDepthNewData","curDepth","depthKey","newData","itemArr","setNewData","getDefaultActiveKey","setActiveDataToObject","activeDataObj","DropdownLayer","layerEle","addDocumentClickEvent","isTargetContainsDropdown","isTargetContainsLayer","dataset","changeCallback","layerType","useFitModeExceptPc","defaultActiveKey","renderLayerWrap","renderLayerBasic","renderLayerWide","templateMenuWrap","templateMenuList","listTmpl","wrapTmpl","renderMenuList","firstData","activeSplitKey","$wrap","depthData","copyDepthData","toggleDocumentClickEvent","isAddEvent","dropdownActive","$prevDropdown","$curDropdown","$menuWide","$menuWideDropdown","findDiffDepth","curSplitKey","prevSplitKey","prevActiveKey","diffDepth","depthIndex","DropdownSelect","isInitialCallbackCall","selectEle","isInitial","optionTmpl","EventEmitter","maxListenerLength","eventList","removeEvent","funcIndex","cb","removeAllEvent","DropdownStore","defaultStateData","stateData","emitter","setState","stateKey","prevState","splitKey","valueIndex","depthArr","getActiveData","curMaxDepth","curNextDepthData","getIsLastDepth","Dropdown","dropdownBtn","dropdownLayer","dropdownSelect","isPc","isInitialActive","openLayer","isCallbackCall","isNotSelectbox","activeValue","valueArr","keyArr","parentKey","parentIndex","parentData","getActiveKeyFromValueArr","otherDropdownClose","dropdownInstArr","langs","onlyUsingLanguageArr","defaultLang","isPermitLanguage","getCountry","defaultCountry","onlyUsingCountry","getPlayncDomain","getSeviceEnv","getWstaticUrlObjectStorage","getPlayncContiDomain","getI18NMessage","getCookieData","contiApiUrl","ContentWrap","BtnWrap","Btn","BtnApply","BtnApplyOptional","BtnDeny","BtnConfig","GCookieConfirmDimmedId","IsActive","todayDate","AbsGlobalCookie","APPLY_COOKIE","URL_COOKIE_POLICY","URL_COOKIE_POLICY_LAYER_OPEN","_applyCookieOnlyRequired","curOptCookieListVer","targetHref","_applyCookie","_applyCookieAll","applyCookieTypeArr","optCookieListVer","dataJson","cookieLog","deleteCookies","cookieNamesToDelete","_chkIsOpenLayer","isKoreaLanguge","dataObj","_isAllCookieApply","_isArrHasAllTraget","targetArr","searchArr","_getNotAppiedCookieNames","AllCookieNamesFromConti","cookieTypeIsBeenApplied","appliedCookies","notAppliedCookies","currentBrowserCookieName","pairs","pair","getCookies","optional","optional2","optional3","Set","targetToDeleteIncludeLive","_getSelectCookieIncludedTargets","targetToLive","ArrayToRemoveArray","_getCookieDataOptionals","cookieDataWrap","alias","_getCookieDataRequired","_getCookeDatas","cookieDataOptionals","cookieDataRequired","getHasBeenAppliedCookieTypes","hasBeenAppliedCookie","getAllCookieNamesFromConti","cookieDatas","cookieData","getCookieNamesToDeleteSuper","targetCookies","browserCoocookieNames","targetCookieNames","selectedCookieNames","baseArr","cur","ConfirmToast","zIndex","contiCookieDataApi","onClickContentWrapAnchorTag","onClickDimmed","diplayToastAndDimmed","onClickBtnApplyOptional","onClickBtnSetting","onClickBtnDeny","onClickBtnApply","flag","displayDimmed","displayToast","textData","confirmToast","setTemplate","bindEvent","showToast","BtnSetting","getConfirmToastTemplate","GCookieSetLayerId","GCookieSetDimmedId","BtnClose","TopDesc","Chks","ChkRquired","ChkOptional","ChkOptional2","ChkOptional3","ChkRquiredId","ChkOptionalId","ChkOptional2Id","ChkOptional3Id","RadioTabs","RadioTabRequired","RadioTabOptional","RadioTabOptional2","RadioTabOptional3","Infos","InfosContent","InfosContentRow","InfosContentCol","InfoRequired","InfoOptional","InfoOptional2","InfoOptional3","getCookieTemplate","provider","purpose","SettingModal","showLayer","displayLayer","hideLayer","onClickTopDescAnchorTag","onClickBtnClose","isCheckedOptional","isCheckedOptional2","isCheckedOptional3","alert","msgSuccess","onClickChkRquired","onClickRadioTabs","_showCookieInfoByRadioTabls","settingModal","_setTemplate","_bindEvent","titleLayer","topDesc","getTopTemplate","chkRequired","chkOptional","chkOptional2","chkOptional3","btnApply","getMidTemplate","tabRequired","tabOptional","tabOptional2","tabOptional3","requiredDesc","providerColum","nameColum","purposeColum","dataColum","typeColum","optionalDesc","optional2Desc","optional3Desc","getBottomTemplaete","getSeetingLayerTemplate","infoEls","getElementsByClassName","uri","parameterName","tmpArr","eqIndex","keyStr","valueStr","getUriParam","PointerEvent","selectRadioAsHasAppliedCookieType","checked","RecentSearch","suggestWrap","inputEl","deleteBtn","submitFn","recentData","isUseRecent","isShow","checkUseRecent","useRecent","recentWrap","scroller","recentUL","recentNone","recentAllDel","cookieName","makeRecentList","setRecentList","_keyword","toggleRecent","_isShow","_useRecent","cookieStr","htmlEscapes","eleT","eleCT","keyword","useDelbtn","noneOrBlock","idx","focusChange","_direction","newFocusEl","oldFocusEl","dbKeyword","SuggestList","resultUL","_loadedKeyword","removeEvents","toggleResult","regStr","removeFocus","_str","loadedKeyword","dataBaseKeyword","isValueFunctionText","sto","initOption","apiUrl","addParam","locale","keywordParamName","placeholderStr","submitCallback","_q","setTempl","submitGo","recent","container","formEl","role","onsubmit","autocomplete","placeholder","submitBtn","load","_newKeyword","drawList","searchHits","eventT","shiftKey","realTimeInputCheck","ilLength","inputTxt","inner","deleteBtnToggle","_txt","customClass","allowOutsideClick","timer","showCloseButton","showConfirmButton","showCancelButton","confirmButtonText","cancelButtonText","confirmButtonColor","cancelButtonColor","showClass","hideClass","preConfirm","willClose","allowEscapeKey","allowEnterKey","toastDefaultOptions","confirmDefaultOptions","alertDefaultOptions","layerDefaultOptions","modalClass","NCUI_MODAL_PREFIX","toastClass","NCUI_TOAST_PREFIX","popupClass","POPUP","POPUP_SHOW","POPUP_CONTAINER_SHOW","POPUP_CONTAINER_HIDE","iOSfix","modalContainer","modalContent","userAgentData","maxTouchPoints","_lockBodyScroll","_addBottomPaddingForTallPopups","iOS","scrollHeight","paddingBottom","bottomPanelHeight","preventTouchMove","ontouchstart","_shouldPreventTouchMove","ontouchmove","htmlContainer","isStylus","isZoom","isScrollable","touchType","elem","htmlContent","setTagStyle","styleProperties","clearTimer","handleState","langArr","renderCloseBtn","renderTitle","renderHtml","renderButtons","modalL10n","actionButton","confirm","AbstractNotification","$confirmButton","$cancelButton","$closeButton","modalTimer","initModal","$backdrop","classProperties","makeModalContent","setModalDom","addClassForAnimation","appendModalInBody","addWillOpen","removeClassForAnimation","makeBackdropElement","setLang","setL10nText","$modalContent","addEventsByOptions","addConfirmBtnListener","addEnterKeyListener","addCancelBtnListener","addCloseBtnListener","isConfirmed","focusOnButton","setTimerOption","undoIOSfix","addClassForPopup","addClassForPopupAnimation","addEventsByOptionsInPopup","addKeyboardEvent","addEscapeKeyListener","addBackdropClickListener","Toast","Popup","Confirm","addClassForToast","addClassForToastAnimation","uiAlert","Alert","uiConfirm","uiLayer","uiToast","ncui","ver","smartbanner","communityBanner","CommunityBanner","tab","profileImgUpload","charUpload","ui","ncUpload","onProfileComplete","MyCharList","footer","footerMain","changeWrap","idVerify","IdVerify","dropdown","cookieLayer","ConfirmToastIndex","settingLayer","SettingLayerIndex","AutoSuggest","modal"],"sourceRoot":""}