@beesolve/lambda-keep-active 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdk.js +3 -3
- package/dist/lambda/handler.js +4 -0
- package/package.json +1 -1
- package/dist/chunk-3cawvvw3.js +0 -5
- package/dist/chunk-4pkw7jk4.js +0 -5
- package/dist/chunk-7bag664c.js +0 -5
- package/dist/chunk-9zmzw25z.js +0 -8
- package/dist/chunk-bh9mv7m6.js +0 -4
- package/dist/chunk-dkk1zwm0.js +0 -5
- package/dist/chunk-dyyrwzgp.js +0 -5
- package/dist/chunk-e9mt878v.js +0 -5
- package/dist/chunk-ekwpcdh4.js +0 -5
- package/dist/chunk-fbbbv2d4.js +0 -16
- package/dist/chunk-ggeka6d3.js +0 -5
- package/dist/chunk-jxb3myh9.js +0 -4
- package/dist/chunk-kvnavsh3.js +0 -5
- package/dist/chunk-m1zv7mtv.js +0 -4
- package/dist/chunk-p85vag28.js +0 -32
- package/dist/chunk-pqhmh7nm.js +0 -4
- package/dist/chunk-r8mj3nq7.js +0 -5
- package/dist/chunk-rea1s8cr.js +0 -4
- package/dist/chunk-rn0z3e77.js +0 -4
- package/dist/chunk-t5j8kj9p.js +0 -11
- package/dist/chunk-whenq5kz.js +0 -5
- package/dist/chunk-x343hkb8.js +0 -5
- package/dist/handler.js +0 -12
package/dist/chunk-ggeka6d3.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{U as s}from"./chunk-e9mt878v.js";var i=s((t,e)=>{e.exports={name:"@aws-sdk/nested-clients",version:"3.936.0",description:"Nested clients for AWS SDK packages.",main:"./dist-cjs/index.js",module:"./dist-es/index.js",types:"./dist-types/index.d.ts",scripts:{build:"yarn lint && concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'","build:cjs":"node ../../scripts/compilation/inline nested-clients","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4",clean:"rimraf ./dist-* && rimraf *.tsbuildinfo",lint:"node ../../scripts/validation/submodules-linter.js --pkg nested-clients",test:"yarn g:vitest run","test:watch":"yarn g:vitest watch"},engines:{node:">=18.0.0"},sideEffects:!1,author:{name:"AWS SDK for JavaScript Team",url:"https://aws.amazon.com/javascript/"},license:"Apache-2.0",dependencies:{"@aws-crypto/sha256-browser":"5.2.0","@aws-crypto/sha256-js":"5.2.0","@aws-sdk/core":"3.936.0","@aws-sdk/middleware-host-header":"3.936.0","@aws-sdk/middleware-logger":"3.936.0","@aws-sdk/middleware-recursion-detection":"3.936.0","@aws-sdk/middleware-user-agent":"3.936.0","@aws-sdk/region-config-resolver":"3.936.0","@aws-sdk/types":"3.936.0","@aws-sdk/util-endpoints":"3.936.0","@aws-sdk/util-user-agent-browser":"3.936.0","@aws-sdk/util-user-agent-node":"3.936.0","@smithy/config-resolver":"^4.4.3","@smithy/core":"^3.18.5","@smithy/fetch-http-handler":"^5.3.6","@smithy/hash-node":"^4.2.5","@smithy/invalid-dependency":"^4.2.5","@smithy/middleware-content-length":"^4.2.5","@smithy/middleware-endpoint":"^4.3.12","@smithy/middleware-retry":"^4.4.12","@smithy/middleware-serde":"^4.2.6","@smithy/middleware-stack":"^4.2.5","@smithy/node-config-provider":"^4.3.5","@smithy/node-http-handler":"^4.4.5","@smithy/protocol-http":"^5.3.5","@smithy/smithy-client":"^4.9.8","@smithy/types":"^4.9.0","@smithy/url-parser":"^4.2.5","@smithy/util-base64":"^4.3.0","@smithy/util-body-length-browser":"^4.2.0","@smithy/util-body-length-node":"^4.2.1","@smithy/util-defaults-mode-browser":"^4.3.11","@smithy/util-defaults-mode-node":"^4.2.14","@smithy/util-endpoints":"^3.2.5","@smithy/util-middleware":"^4.2.5","@smithy/util-retry":"^4.2.5","@smithy/util-utf8":"^4.2.0",tslib:"^2.6.2"},devDependencies:{concurrently:"7.0.0","downlevel-dts":"0.10.1",rimraf:"3.0.2",typescript:"~5.8.3"},typesVersions:{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},files:["./signin.d.ts","./signin.js","./sso-oidc.d.ts","./sso-oidc.js","./sts.d.ts","./sts.js","dist-*/**"],browser:{"./dist-es/submodules/signin/runtimeConfig":"./dist-es/submodules/signin/runtimeConfig.browser","./dist-es/submodules/sso-oidc/runtimeConfig":"./dist-es/submodules/sso-oidc/runtimeConfig.browser","./dist-es/submodules/sts/runtimeConfig":"./dist-es/submodules/sts/runtimeConfig.browser"},"react-native":{},homepage:"https://github.com/aws/aws-sdk-js-v3/tree/main/packages/nested-clients",repository:{type:"git",url:"https://github.com/aws/aws-sdk-js-v3.git",directory:"packages/nested-clients"},exports:{"./package.json":"./package.json","./sso-oidc":{types:"./dist-types/submodules/sso-oidc/index.d.ts",module:"./dist-es/submodules/sso-oidc/index.js",node:"./dist-cjs/submodules/sso-oidc/index.js",import:"./dist-es/submodules/sso-oidc/index.js",require:"./dist-cjs/submodules/sso-oidc/index.js"},"./sts":{types:"./dist-types/submodules/sts/index.d.ts",module:"./dist-es/submodules/sts/index.js",node:"./dist-cjs/submodules/sts/index.js",import:"./dist-es/submodules/sts/index.js",require:"./dist-cjs/submodules/sts/index.js"},"./signin":{types:"./dist-types/submodules/signin/index.d.ts",module:"./dist-es/submodules/signin/index.js",node:"./dist-cjs/submodules/signin/index.js",import:"./dist-es/submodules/signin/index.js",require:"./dist-cjs/submodules/signin/index.js"}}}});
|
|
2
|
-
export{i as b};
|
|
3
|
-
|
|
4
|
-
//# debugId=B552980D371544C264756E2164756E21
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICBdLAogICJtYXBwaW5ncyI6ICIiLAogICJkZWJ1Z0lkIjogIkI1NTI5ODBEMzcxNTQ0QzI2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
package/dist/chunk-jxb3myh9.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{O as M}from"./chunk-whenq5kz.js";import{V as E}from"./chunk-e9mt878v.js";class x{marshaller;serializer;deserializer;serdeContext;defaultContentType;constructor({marshaller:a,serializer:i,deserializer:o,serdeContext:m,defaultContentType:d}){this.marshaller=a,this.serializer=i,this.deserializer=o,this.serdeContext=m,this.defaultContentType=d}async serializeEventStream({eventStream:a,requestSchema:i,initialRequest:o}){let m=this.marshaller,d=i.getEventStreamMember(),p=i.getMemberSchema(d),y=this.serializer,f=this.defaultContentType,h=Symbol("initialRequestMarker"),S={async*[Symbol.asyncIterator](){if(o){let r={":event-type":{type:"string",value:"initial-request"},":message-type":{type:"string",value:"event"},":content-type":{type:"string",value:f}};y.write(i,o);let t=y.flush();yield{[h]:!0,headers:r,body:t}}for await(let r of a)yield r}};return m.serialize(S,(r)=>{if(r[h])return{headers:r.headers,body:r.body};let t=Object.keys(r).find((s)=>{return s!=="__type"})??"",{additionalHeaders:e,body:n,eventType:l,explicitPayloadContentType:c}=this.writeEventBody(t,p,r);return{headers:{":event-type":{type:"string",value:l},":message-type":{type:"string",value:"event"},":content-type":{type:"string",value:c??f},...e},body:n}})}async deserializeEventStream({response:a,responseSchema:i,initialResponseContainer:o}){let m=this.marshaller,d=i.getEventStreamMember(),y=i.getMemberSchema(d).getMemberSchemas(),f=Symbol("initialResponseMarker"),h=m.deserialize(a.body,async(t)=>{let e=Object.keys(t).find((l)=>{return l!=="__type"})??"",n=t[e].body;if(e==="initial-response"){let l=await this.deserializer.read(i,n);return delete l[d],{[f]:!0,...l}}else if(e in y){let l=y[e];if(l.isStructSchema()){let c={},u=!1;for(let[s,v]of l.structIterator()){let{eventHeader:g,eventPayload:w}=v.getMergedTraits();if(u=u||Boolean(g||w),w){if(v.isBlobSchema())c[s]=n;else if(v.isStringSchema())c[s]=(this.serdeContext?.utf8Encoder??z.toUtf8)(n);else if(v.isStructSchema())c[s]=await this.deserializer.read(v,n)}else if(g){let b=t[e].headers[s]?.value;if(b!=null)if(v.isNumericSchema())if(b&&typeof b==="object"&&"bytes"in b)c[s]=BigInt(b.toString());else c[s]=Number(b);else c[s]=b}}if(u)return{[e]:c}}return{[e]:await this.deserializer.read(l,n)}}else return{$unknown:t}}),S=h[Symbol.asyncIterator](),r=await S.next();if(r.done)return h;if(r.value?.[f]){if(!i)throw Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given.");for(let[t,e]of Object.entries(r.value))o[t]=e}return{async*[Symbol.asyncIterator](){if(!r?.value?.[f])yield r.value;while(!0){let{done:t,value:e}=await S.next();if(t)break;yield e}}}}writeEventBody(a,i,o){let m=this.serializer,d=a,p=null,y,f=(()=>{return i.getSchema()[4].includes(a)})(),h={};if(!f){let[t,e]=o[a];d=t,m.write(15,e)}else{let t=i.getMemberSchema(a);if(t.isStructSchema()){for(let[e,n]of t.structIterator()){let{eventHeader:l,eventPayload:c}=n.getMergedTraits();if(c){p=e;break}else if(l){let u=o[a][e],s="binary";if(n.isNumericSchema())if(-2147483648<=u&&u<=2147483647)s="integer";else s="long";else if(n.isTimestampSchema())s="timestamp";else if(n.isStringSchema())s="string";else if(n.isBooleanSchema())s="boolean";if(u!=null)h[e]={type:s,value:u},delete o[a][e]}}if(p!==null){let e=t.getMemberSchema(p);if(e.isBlobSchema())y="application/octet-stream";else if(e.isStringSchema())y="text/plain";m.write(e,o[a][p])}else m.write(t,o[a])}else throw Error("@smithy/core/event-streams - non-struct member not supported in event stream union.")}let S=m.flush();return{body:typeof S==="string"?(this.serdeContext?.utf8Decoder??z.fromUtf8)(S):S,eventType:d,explicitPayloadContentType:y,additionalHeaders:h}}}var z,T;var k=E(()=>{z=M();T=x});k();export{T as EventStreamSerde};export default {get EventStreamSerde(){return T}};
|
|
2
|
-
|
|
3
|
-
//# debugId=EEDB7E0B6C16C22F64756E2164756E21
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvY29yZS9kaXN0LWNqcy9zdWJtb2R1bGVzL2V2ZW50LXN0cmVhbXMvaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbFV0ZjggPSByZXF1aXJlKCdAc21pdGh5L3V0aWwtdXRmOCcpO1xuXG5jbGFzcyBFdmVudFN0cmVhbVNlcmRlIHtcbiAgICBtYXJzaGFsbGVyO1xuICAgIHNlcmlhbGl6ZXI7XG4gICAgZGVzZXJpYWxpemVyO1xuICAgIHNlcmRlQ29udGV4dDtcbiAgICBkZWZhdWx0Q29udGVudFR5cGU7XG4gICAgY29uc3RydWN0b3IoeyBtYXJzaGFsbGVyLCBzZXJpYWxpemVyLCBkZXNlcmlhbGl6ZXIsIHNlcmRlQ29udGV4dCwgZGVmYXVsdENvbnRlbnRUeXBlLCB9KSB7XG4gICAgICAgIHRoaXMubWFyc2hhbGxlciA9IG1hcnNoYWxsZXI7XG4gICAgICAgIHRoaXMuc2VyaWFsaXplciA9IHNlcmlhbGl6ZXI7XG4gICAgICAgIHRoaXMuZGVzZXJpYWxpemVyID0gZGVzZXJpYWxpemVyO1xuICAgICAgICB0aGlzLnNlcmRlQ29udGV4dCA9IHNlcmRlQ29udGV4dDtcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29udGVudFR5cGUgPSBkZWZhdWx0Q29udGVudFR5cGU7XG4gICAgfVxuICAgIGFzeW5jIHNlcmlhbGl6ZUV2ZW50U3RyZWFtKHsgZXZlbnRTdHJlYW0sIHJlcXVlc3RTY2hlbWEsIGluaXRpYWxSZXF1ZXN0LCB9KSB7XG4gICAgICAgIGNvbnN0IG1hcnNoYWxsZXIgPSB0aGlzLm1hcnNoYWxsZXI7XG4gICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtTWVtYmVyID0gcmVxdWVzdFNjaGVtYS5nZXRFdmVudFN0cmVhbU1lbWJlcigpO1xuICAgICAgICBjb25zdCB1bmlvblNjaGVtYSA9IHJlcXVlc3RTY2hlbWEuZ2V0TWVtYmVyU2NoZW1hKGV2ZW50U3RyZWFtTWVtYmVyKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IHRoaXMuc2VyaWFsaXplcjtcbiAgICAgICAgY29uc3QgZGVmYXVsdENvbnRlbnRUeXBlID0gdGhpcy5kZWZhdWx0Q29udGVudFR5cGU7XG4gICAgICAgIGNvbnN0IGluaXRpYWxSZXF1ZXN0TWFya2VyID0gU3ltYm9sKFwiaW5pdGlhbFJlcXVlc3RNYXJrZXJcIik7XG4gICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtSXRlcmFibGUgPSB7XG4gICAgICAgICAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbFJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiOmV2ZW50LXR5cGVcIjogeyB0eXBlOiBcInN0cmluZ1wiLCB2YWx1ZTogXCJpbml0aWFsLXJlcXVlc3RcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI6bWVzc2FnZS10eXBlXCI6IHsgdHlwZTogXCJzdHJpbmdcIiwgdmFsdWU6IFwiZXZlbnRcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI6Y29udGVudC10eXBlXCI6IHsgdHlwZTogXCJzdHJpbmdcIiwgdmFsdWU6IGRlZmF1bHRDb250ZW50VHlwZSB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLndyaXRlKHJlcXVlc3RTY2hlbWEsIGluaXRpYWxSZXF1ZXN0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IHNlcmlhbGl6ZXIuZmx1c2goKTtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQge1xuICAgICAgICAgICAgICAgICAgICAgICAgW2luaXRpYWxSZXF1ZXN0TWFya2VyXTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgZXZlbnRTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgcGFnZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbWFyc2hhbGxlci5zZXJpYWxpemUoZXZlbnRTdHJlYW1JdGVyYWJsZSwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnRbaW5pdGlhbFJlcXVlc3RNYXJrZXJdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogZXZlbnQuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogZXZlbnQuYm9keSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdW5pb25NZW1iZXIgPSBPYmplY3Qua2V5cyhldmVudCkuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleSAhPT0gXCJfX3R5cGVcIjtcbiAgICAgICAgICAgIH0pID8/IFwiXCI7XG4gICAgICAgICAgICBjb25zdCB7IGFkZGl0aW9uYWxIZWFkZXJzLCBib2R5LCBldmVudFR5cGUsIGV4cGxpY2l0UGF5bG9hZENvbnRlbnRUeXBlIH0gPSB0aGlzLndyaXRlRXZlbnRCb2R5KHVuaW9uTWVtYmVyLCB1bmlvblNjaGVtYSwgZXZlbnQpO1xuICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICBcIjpldmVudC10eXBlXCI6IHsgdHlwZTogXCJzdHJpbmdcIiwgdmFsdWU6IGV2ZW50VHlwZSB9LFxuICAgICAgICAgICAgICAgIFwiOm1lc3NhZ2UtdHlwZVwiOiB7IHR5cGU6IFwic3RyaW5nXCIsIHZhbHVlOiBcImV2ZW50XCIgfSxcbiAgICAgICAgICAgICAgICBcIjpjb250ZW50LXR5cGVcIjogeyB0eXBlOiBcInN0cmluZ1wiLCB2YWx1ZTogZXhwbGljaXRQYXlsb2FkQ29udGVudFR5cGUgPz8gZGVmYXVsdENvbnRlbnRUeXBlIH0sXG4gICAgICAgICAgICAgICAgLi4uYWRkaXRpb25hbEhlYWRlcnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZGVzZXJpYWxpemVFdmVudFN0cmVhbSh7IHJlc3BvbnNlLCByZXNwb25zZVNjaGVtYSwgaW5pdGlhbFJlc3BvbnNlQ29udGFpbmVyLCB9KSB7XG4gICAgICAgIGNvbnN0IG1hcnNoYWxsZXIgPSB0aGlzLm1hcnNoYWxsZXI7XG4gICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtTWVtYmVyID0gcmVzcG9uc2VTY2hlbWEuZ2V0RXZlbnRTdHJlYW1NZW1iZXIoKTtcbiAgICAgICAgY29uc3QgdW5pb25TY2hlbWEgPSByZXNwb25zZVNjaGVtYS5nZXRNZW1iZXJTY2hlbWEoZXZlbnRTdHJlYW1NZW1iZXIpO1xuICAgICAgICBjb25zdCBtZW1iZXJTY2hlbWFzID0gdW5pb25TY2hlbWEuZ2V0TWVtYmVyU2NoZW1hcygpO1xuICAgICAgICBjb25zdCBpbml0aWFsUmVzcG9uc2VNYXJrZXIgPSBTeW1ib2woXCJpbml0aWFsUmVzcG9uc2VNYXJrZXJcIik7XG4gICAgICAgIGNvbnN0IGFzeW5jSXRlcmFibGUgPSBtYXJzaGFsbGVyLmRlc2VyaWFsaXplKHJlc3BvbnNlLmJvZHksIGFzeW5jIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdW5pb25NZW1iZXIgPSBPYmplY3Qua2V5cyhldmVudCkuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleSAhPT0gXCJfX3R5cGVcIjtcbiAgICAgICAgICAgIH0pID8/IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gZXZlbnRbdW5pb25NZW1iZXJdLmJvZHk7XG4gICAgICAgICAgICBpZiAodW5pb25NZW1iZXIgPT09IFwiaW5pdGlhbC1yZXNwb25zZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YU9iamVjdCA9IGF3YWl0IHRoaXMuZGVzZXJpYWxpemVyLnJlYWQocmVzcG9uc2VTY2hlbWEsIGJvZHkpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhT2JqZWN0W2V2ZW50U3RyZWFtTWVtYmVyXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbFJlc3BvbnNlTWFya2VyXTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uZGF0YU9iamVjdCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodW5pb25NZW1iZXIgaW4gbWVtYmVyU2NoZW1hcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50U3RyZWFtU2NoZW1hID0gbWVtYmVyU2NoZW1hc1t1bmlvbk1lbWJlcl07XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50U3RyZWFtU2NoZW1hLmlzU3RydWN0U2NoZW1hKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0ID0ge307XG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXNCaW5kaW5ncyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtuYW1lLCBtZW1iZXJdIG9mIGV2ZW50U3RyZWFtU2NoZW1hLnN0cnVjdEl0ZXJhdG9yKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXZlbnRIZWFkZXIsIGV2ZW50UGF5bG9hZCB9ID0gbWVtYmVyLmdldE1lcmdlZFRyYWl0cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmluZGluZ3MgPSBoYXNCaW5kaW5ncyB8fCBCb29sZWFuKGV2ZW50SGVhZGVyIHx8IGV2ZW50UGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRQYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci5pc0Jsb2JTY2hlbWEoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSBib2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtZW1iZXIuaXNTdHJpbmdTY2hlbWEoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRbbmFtZV0gPSAodGhpcy5zZXJkZUNvbnRleHQ/LnV0ZjhFbmNvZGVyID8/IHV0aWxVdGY4LnRvVXRmOCkoYm9keSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1lbWJlci5pc1N0cnVjdFNjaGVtYSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IGF3YWl0IHRoaXMuZGVzZXJpYWxpemVyLnJlYWQobWVtYmVyLCBib2R5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChldmVudEhlYWRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnRbdW5pb25NZW1iZXJdLmhlYWRlcnNbbmFtZV0/LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIuaXNOdW1lcmljU2NoZW1hKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgXCJieXRlc1wiIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W25hbWVdID0gQmlnSW50KHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W25hbWVdID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNCaW5kaW5ncykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdW5pb25NZW1iZXJdOiBvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFt1bmlvbk1lbWJlcl06IGF3YWl0IHRoaXMuZGVzZXJpYWxpemVyLnJlYWQoZXZlbnRTdHJlYW1TY2hlbWEsIGJvZHkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAkdW5rbm93bjogZXZlbnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGFzeW5jSXRlcmF0b3IgPSBhc3luY0l0ZXJhYmxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO1xuICAgICAgICBjb25zdCBmaXJzdEV2ZW50ID0gYXdhaXQgYXN5bmNJdGVyYXRvci5uZXh0KCk7XG4gICAgICAgIGlmIChmaXJzdEV2ZW50LmRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiBhc3luY0l0ZXJhYmxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdEV2ZW50LnZhbHVlPy5baW5pdGlhbFJlc3BvbnNlTWFya2VyXSkge1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZVNjaGVtYSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkBzbWl0aHk6OmNvcmUvcHJvdG9jb2xzIC0gaW5pdGlhbC1yZXNwb25zZSBldmVudCBlbmNvdW50ZXJlZCBpbiBldmVudCBzdHJlYW0gYnV0IG5vIHJlc3BvbnNlIHNjaGVtYSBnaXZlbi5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhmaXJzdEV2ZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGluaXRpYWxSZXNwb25zZUNvbnRhaW5lcltrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFzeW5jICpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICAgICAgICAgIGlmICghZmlyc3RFdmVudD8udmFsdWU/Lltpbml0aWFsUmVzcG9uc2VNYXJrZXJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZpcnN0RXZlbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IGFzeW5jSXRlcmF0b3IubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgeWllbGQgdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgd3JpdGVFdmVudEJvZHkodW5pb25NZW1iZXIsIHVuaW9uU2NoZW1hLCBldmVudCkge1xuICAgICAgICBjb25zdCBzZXJpYWxpemVyID0gdGhpcy5zZXJpYWxpemVyO1xuICAgICAgICBsZXQgZXZlbnRUeXBlID0gdW5pb25NZW1iZXI7XG4gICAgICAgIGxldCBleHBsaWNpdFBheWxvYWRNZW1iZXIgPSBudWxsO1xuICAgICAgICBsZXQgZXhwbGljaXRQYXlsb2FkQ29udGVudFR5cGU7XG4gICAgICAgIGNvbnN0IGlzS25vd25TY2hlbWEgPSAoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RydWN0ID0gdW5pb25TY2hlbWEuZ2V0U2NoZW1hKCk7XG4gICAgICAgICAgICByZXR1cm4gc3RydWN0WzRdLmluY2x1ZGVzKHVuaW9uTWVtYmVyKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbEhlYWRlcnMgPSB7fTtcbiAgICAgICAgaWYgKCFpc0tub3duU2NoZW1hKSB7XG4gICAgICAgICAgICBjb25zdCBbdHlwZSwgdmFsdWVdID0gZXZlbnRbdW5pb25NZW1iZXJdO1xuICAgICAgICAgICAgZXZlbnRUeXBlID0gdHlwZTtcbiAgICAgICAgICAgIHNlcmlhbGl6ZXIud3JpdGUoMTUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50U2NoZW1hID0gdW5pb25TY2hlbWEuZ2V0TWVtYmVyU2NoZW1hKHVuaW9uTWVtYmVyKTtcbiAgICAgICAgICAgIGlmIChldmVudFNjaGVtYS5pc1N0cnVjdFNjaGVtYSgpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbbWVtYmVyTmFtZSwgbWVtYmVyU2NoZW1hXSBvZiBldmVudFNjaGVtYS5zdHJ1Y3RJdGVyYXRvcigpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXZlbnRIZWFkZXIsIGV2ZW50UGF5bG9hZCB9ID0gbWVtYmVyU2NoZW1hLmdldE1lcmdlZFRyYWl0cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRQYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdFBheWxvYWRNZW1iZXIgPSBtZW1iZXJOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnRIZWFkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnRbdW5pb25NZW1iZXJdW21lbWJlck5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBcImJpbmFyeVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlclNjaGVtYS5pc051bWVyaWNTY2hlbWEoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoLTIpICoqIDMxIDw9IHZhbHVlICYmIHZhbHVlIDw9IDIgKiogMzEgLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcImludGVnZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcImxvbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtZW1iZXJTY2hlbWEuaXNUaW1lc3RhbXBTY2hlbWEoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcInRpbWVzdGFtcFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWVtYmVyU2NoZW1hLmlzU3RyaW5nU2NoZW1hKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1lbWJlclNjaGVtYS5pc0Jvb2xlYW5TY2hlbWEoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEhlYWRlcnNbbWVtYmVyTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGV2ZW50W3VuaW9uTWVtYmVyXVttZW1iZXJOYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXhwbGljaXRQYXlsb2FkTWVtYmVyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWRTY2hlbWEgPSBldmVudFNjaGVtYS5nZXRNZW1iZXJTY2hlbWEoZXhwbGljaXRQYXlsb2FkTWVtYmVyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWRTY2hlbWEuaXNCbG9iU2NoZW1hKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0UGF5bG9hZENvbnRlbnRUeXBlID0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXlsb2FkU2NoZW1hLmlzU3RyaW5nU2NoZW1hKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxpY2l0UGF5bG9hZENvbnRlbnRUeXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplci53cml0ZShwYXlsb2FkU2NoZW1hLCBldmVudFt1bmlvbk1lbWJlcl1bZXhwbGljaXRQYXlsb2FkTWVtYmVyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVyLndyaXRlKGV2ZW50U2NoZW1hLCBldmVudFt1bmlvbk1lbWJlcl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkBzbWl0aHkvY29yZS9ldmVudC1zdHJlYW1zIC0gbm9uLXN0cnVjdCBtZW1iZXIgbm90IHN1cHBvcnRlZCBpbiBldmVudCBzdHJlYW0gdW5pb24uXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1lc3NhZ2VTZXJpYWxpemF0aW9uID0gc2VyaWFsaXplci5mbHVzaCgpO1xuICAgICAgICBjb25zdCBib2R5ID0gdHlwZW9mIG1lc3NhZ2VTZXJpYWxpemF0aW9uID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/ICh0aGlzLnNlcmRlQ29udGV4dD8udXRmOERlY29kZXIgPz8gdXRpbFV0ZjguZnJvbVV0ZjgpKG1lc3NhZ2VTZXJpYWxpemF0aW9uKVxuICAgICAgICAgICAgOiBtZXNzYWdlU2VyaWFsaXphdGlvbjtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICBleHBsaWNpdFBheWxvYWRDb250ZW50VHlwZSxcbiAgICAgICAgICAgIGFkZGl0aW9uYWxIZWFkZXJzLFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuZXhwb3J0cy5FdmVudFN0cmVhbVNlcmRlID0gRXZlbnRTdHJlYW1TZXJkZTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICJzRkFJQSxBQUFNLENBQWlCLENBQ25CLFdBQ0EsV0FDQSxhQUNBLGFBQ0EsbUJBQ0EsV0FBVyxFQUFHLGFBQVksYUFBWSxlQUFjLGVBQWMsc0JBQXVCLENBQ3JGLEtBQUssV0FBYSxFQUNsQixLQUFLLFdBQWEsRUFDbEIsS0FBSyxhQUFlLEVBQ3BCLEtBQUssYUFBZSxFQUNwQixLQUFLLG1CQUFxQixPQUV4QixxQkFBb0IsRUFBRyxjQUFhLGdCQUFlLGtCQUFtQixDQUN4RSxJQUFNLEVBQWEsS0FBSyxXQUNsQixFQUFvQixFQUFjLHFCQUFxQixFQUN2RCxFQUFjLEVBQWMsZ0JBQWdCLENBQWlCLEVBQzdELEVBQWEsS0FBSyxXQUNsQixF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LEdBQUssYUFBYSxHQUFTLEdBQVMsV0FDaEMsRUFBTyxVQUdQLE9BQU8sT0FHVixRQUFJLEVBQWEsa0JBQWtCLEVBQ3BDLEVBQU8sWUFFTixRQUFJLEVBQWEsZUFBZSxFQUNqQyxFQUFPLFNBRU4sUUFBSSxFQUFhLGdCQUFnQixFQUNsQyxFQUFPLFVBRVgsR0FBSSxHQUFTLEtBQ1QsRUFBa0IsR0FBYyxDQUM1QixPQUNBLE9BQ0osRUFDQSxPQUFPLEVBQU0sR0FBYSxJQUl0QyxHQUFJLElBQTBCLEtBQU0sQ0FDaEMsSUFBTSxFQUFnQixFQUFZLGdCQUFnQixDQUFxQixFQUN2RSxHQUFJLEVBQWMsYUFBYSxFQUMzQixFQUE2QiwyQkFFNUIsUUFBSSxFQUFjLGVBQWUsRUFDbEMsRUFBNkIsYUFFakMsRUFBVyxNQUFNLEVBQWUsRUFBTSxHQUFhLEVBQXNCLEVBR3pFLE9BQVcsTUFBTSxFQUFhLEVBQU0sRUFBWSxFQUlwRCxXQUFVLE1BQU0scUZBQXFGLEVBRzdHLElBQU0sRUFBdUIsRUFBVyxNQUFNLEVBSTlDLE1BQU8sQ0FDSCxLQUpTLE9BQU8sSUFBeUIsVUFDdEMsS0FBSyxjQUFjLGFBQWUsRUFBUyxVQUFVLENBQW9CLEVBQzFFLEVBR0YsWUFDQSw2QkFDQSxtQkFDSixFQUVSLEtBdlBJLEVBeVBJLGVBelBKLE1BeVBJLEVBQW1CIiwKICAiZGVidWdJZCI6ICJFRURCN0UwQjZDMTZDMjJGNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|
package/dist/chunk-kvnavsh3.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{U as h}from"./chunk-e9mt878v.js";var A=h((f)=>{f.HttpAuthLocation=void 0;(function(t){t.HEADER="header",t.QUERY="query"})(f.HttpAuthLocation||(f.HttpAuthLocation={}));f.HttpApiKeyAuthLocation=void 0;(function(t){t.HEADER="header",t.QUERY="query"})(f.HttpApiKeyAuthLocation||(f.HttpApiKeyAuthLocation={}));f.EndpointURLScheme=void 0;(function(t){t.HTTP="http",t.HTTPS="https"})(f.EndpointURLScheme||(f.EndpointURLScheme={}));f.AlgorithmId=void 0;(function(t){t.MD5="md5",t.CRC32="crc32",t.CRC32C="crc32c",t.SHA1="sha1",t.SHA256="sha256"})(f.AlgorithmId||(f.AlgorithmId={}));var x=(t)=>{let o=[];if(t.sha256!==void 0)o.push({algorithmId:()=>f.AlgorithmId.SHA256,checksumConstructor:()=>t.sha256});if(t.md5!=null)o.push({algorithmId:()=>f.AlgorithmId.MD5,checksumConstructor:()=>t.md5});return{addChecksumAlgorithm(s){o.push(s)},checksumAlgorithms(){return o}}},d=(t)=>{let o={};return t.checksumAlgorithms().forEach((s)=>{o[s.algorithmId()]=s.checksumConstructor()}),o},a=(t)=>{return x(t)},E=(t)=>{return d(t)};f.FieldPosition=void 0;(function(t){t[t.HEADER=0]="HEADER",t[t.TRAILER=1]="TRAILER"})(f.FieldPosition||(f.FieldPosition={}));var m="__smithy_context";f.IniSectionType=void 0;(function(t){t.PROFILE="profile",t.SSO_SESSION="sso-session",t.SERVICES="services"})(f.IniSectionType||(f.IniSectionType={}));f.RequestHandlerProtocol=void 0;(function(t){t.HTTP_0_9="http/0.9",t.HTTP_1_0="http/1.0",t.TDS_8_0="tds/8.0"})(f.RequestHandlerProtocol||(f.RequestHandlerProtocol={}));f.SMITHY_CONTEXT_KEY=m;f.getDefaultClientConfiguration=a;f.resolveDefaultRuntimeConfig=E});
|
|
2
|
-
export{A as P};
|
|
3
|
-
|
|
4
|
-
//# debugId=EFABDE1EB86D5E8864756E2164756E21
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL0BzbWl0aHkvdHlwZXMvZGlzdC1janMvaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLkh0dHBBdXRoTG9jYXRpb24gPSB2b2lkIDA7XG4oZnVuY3Rpb24gKEh0dHBBdXRoTG9jYXRpb24pIHtcbiAgICBIdHRwQXV0aExvY2F0aW9uW1wiSEVBREVSXCJdID0gXCJoZWFkZXJcIjtcbiAgICBIdHRwQXV0aExvY2F0aW9uW1wiUVVFUllcIl0gPSBcInF1ZXJ5XCI7XG59KShleHBvcnRzLkh0dHBBdXRoTG9jYXRpb24gfHwgKGV4cG9ydHMuSHR0cEF1dGhMb2NhdGlvbiA9IHt9KSk7XG5cbmV4cG9ydHMuSHR0cEFwaUtleUF1dGhMb2NhdGlvbiA9IHZvaWQgMDtcbihmdW5jdGlvbiAoSHR0cEFwaUtleUF1dGhMb2NhdGlvbikge1xuICAgIEh0dHBBcGlLZXlBdXRoTG9jYXRpb25bXCJIRUFERVJcIl0gPSBcImhlYWRlclwiO1xuICAgIEh0dHBBcGlLZXlBdXRoTG9jYXRpb25bXCJRVUVSWVwiXSA9IFwicXVlcnlcIjtcbn0pKGV4cG9ydHMuSHR0cEFwaUtleUF1dGhMb2NhdGlvbiB8fCAoZXhwb3J0cy5IdHRwQXBpS2V5QXV0aExvY2F0aW9uID0ge30pKTtcblxuZXhwb3J0cy5FbmRwb2ludFVSTFNjaGVtZSA9IHZvaWQgMDtcbihmdW5jdGlvbiAoRW5kcG9pbnRVUkxTY2hlbWUpIHtcbiAgICBFbmRwb2ludFVSTFNjaGVtZVtcIkhUVFBcIl0gPSBcImh0dHBcIjtcbiAgICBFbmRwb2ludFVSTFNjaGVtZVtcIkhUVFBTXCJdID0gXCJodHRwc1wiO1xufSkoZXhwb3J0cy5FbmRwb2ludFVSTFNjaGVtZSB8fCAoZXhwb3J0cy5FbmRwb2ludFVSTFNjaGVtZSA9IHt9KSk7XG5cbmV4cG9ydHMuQWxnb3JpdGhtSWQgPSB2b2lkIDA7XG4oZnVuY3Rpb24gKEFsZ29yaXRobUlkKSB7XG4gICAgQWxnb3JpdGhtSWRbXCJNRDVcIl0gPSBcIm1kNVwiO1xuICAgIEFsZ29yaXRobUlkW1wiQ1JDMzJcIl0gPSBcImNyYzMyXCI7XG4gICAgQWxnb3JpdGhtSWRbXCJDUkMzMkNcIl0gPSBcImNyYzMyY1wiO1xuICAgIEFsZ29yaXRobUlkW1wiU0hBMVwiXSA9IFwic2hhMVwiO1xuICAgIEFsZ29yaXRobUlkW1wiU0hBMjU2XCJdID0gXCJzaGEyNTZcIjtcbn0pKGV4cG9ydHMuQWxnb3JpdGhtSWQgfHwgKGV4cG9ydHMuQWxnb3JpdGhtSWQgPSB7fSkpO1xuY29uc3QgZ2V0Q2hlY2tzdW1Db25maWd1cmF0aW9uID0gKHJ1bnRpbWVDb25maWcpID0+IHtcbiAgICBjb25zdCBjaGVja3N1bUFsZ29yaXRobXMgPSBbXTtcbiAgICBpZiAocnVudGltZUNvbmZpZy5zaGEyNTYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjaGVja3N1bUFsZ29yaXRobXMucHVzaCh7XG4gICAgICAgICAgICBhbGdvcml0aG1JZDogKCkgPT4gZXhwb3J0cy5BbGdvcml0aG1JZC5TSEEyNTYsXG4gICAgICAgICAgICBjaGVja3N1bUNvbnN0cnVjdG9yOiAoKSA9PiBydW50aW1lQ29uZmlnLnNoYTI1NixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChydW50aW1lQ29uZmlnLm1kNSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2hlY2tzdW1BbGdvcml0aG1zLnB1c2goe1xuICAgICAgICAgICAgYWxnb3JpdGhtSWQ6ICgpID0+IGV4cG9ydHMuQWxnb3JpdGhtSWQuTUQ1LFxuICAgICAgICAgICAgY2hlY2tzdW1Db25zdHJ1Y3RvcjogKCkgPT4gcnVudGltZUNvbmZpZy5tZDUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBhZGRDaGVja3N1bUFsZ29yaXRobShhbGdvKSB7XG4gICAgICAgICAgICBjaGVja3N1bUFsZ29yaXRobXMucHVzaChhbGdvKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2tzdW1BbGdvcml0aG1zKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrc3VtQWxnb3JpdGhtcztcbiAgICAgICAgfSxcbiAgICB9O1xufTtcbmNvbnN0IHJlc29sdmVDaGVja3N1bVJ1bnRpbWVDb25maWcgPSAoY2xpZW50Q29uZmlnKSA9PiB7XG4gICAgY29uc3QgcnVudGltZUNvbmZpZyA9IHt9O1xuICAgIGNsaWVudENvbmZpZy5jaGVja3N1bUFsZ29yaXRobXMoKS5mb3JFYWNoKChjaGVja3N1bUFsZ29yaXRobSkgPT4ge1xuICAgICAgICBydW50aW1lQ29uZmlnW2NoZWNrc3VtQWxnb3JpdGhtLmFsZ29yaXRobUlkKCldID0gY2hlY2tzdW1BbGdvcml0aG0uY2hlY2tzdW1Db25zdHJ1Y3RvcigpO1xuICAgIH0pO1xuICAgIHJldHVybiBydW50aW1lQ29uZmlnO1xufTtcblxuY29uc3QgZ2V0RGVmYXVsdENsaWVudENvbmZpZ3VyYXRpb24gPSAocnVudGltZUNvbmZpZykgPT4ge1xuICAgIHJldHVybiBnZXRDaGVja3N1bUNvbmZpZ3VyYXRpb24ocnVudGltZUNvbmZpZyk7XG59O1xuY29uc3QgcmVzb2x2ZURlZmF1bHRSdW50aW1lQ29uZmlnID0gKGNvbmZpZykgPT4ge1xuICAgIHJldHVybiByZXNvbHZlQ2hlY2tzdW1SdW50aW1lQ29uZmlnKGNvbmZpZyk7XG59O1xuXG5leHBvcnRzLkZpZWxkUG9zaXRpb24gPSB2b2lkIDA7XG4oZnVuY3Rpb24gKEZpZWxkUG9zaXRpb24pIHtcbiAgICBGaWVsZFBvc2l0aW9uW0ZpZWxkUG9zaXRpb25bXCJIRUFERVJcIl0gPSAwXSA9IFwiSEVBREVSXCI7XG4gICAgRmllbGRQb3NpdGlvbltGaWVsZFBvc2l0aW9uW1wiVFJBSUxFUlwiXSA9IDFdID0gXCJUUkFJTEVSXCI7XG59KShleHBvcnRzLkZpZWxkUG9zaXRpb24gfHwgKGV4cG9ydHMuRmllbGRQb3NpdGlvbiA9IHt9KSk7XG5cbmNvbnN0IFNNSVRIWV9DT05URVhUX0tFWSA9IFwiX19zbWl0aHlfY29udGV4dFwiO1xuXG5leHBvcnRzLkluaVNlY3Rpb25UeXBlID0gdm9pZCAwO1xuKGZ1bmN0aW9uIChJbmlTZWN0aW9uVHlwZSkge1xuICAgIEluaVNlY3Rpb25UeXBlW1wiUFJPRklMRVwiXSA9IFwicHJvZmlsZVwiO1xuICAgIEluaVNlY3Rpb25UeXBlW1wiU1NPX1NFU1NJT05cIl0gPSBcInNzby1zZXNzaW9uXCI7XG4gICAgSW5pU2VjdGlvblR5cGVbXCJTRVJWSUNFU1wiXSA9IFwic2VydmljZXNcIjtcbn0pKGV4cG9ydHMuSW5pU2VjdGlvblR5cGUgfHwgKGV4cG9ydHMuSW5pU2VjdGlvblR5cGUgPSB7fSkpO1xuXG5leHBvcnRzLlJlcXVlc3RIYW5kbGVyUHJvdG9jb2wgPSB2b2lkIDA7XG4oZnVuY3Rpb24gKFJlcXVlc3RIYW5kbGVyUHJvdG9jb2wpIHtcbiAgICBSZXF1ZXN0SGFuZGxlclByb3RvY29sW1wiSFRUUF8wXzlcIl0gPSBcImh0dHAvMC45XCI7XG4gICAgUmVxdWVzdEhhbmRsZXJQcm90b2NvbFtcIkhUVFBfMV8wXCJdID0gXCJodHRwLzEuMFwiO1xuICAgIFJlcXVlc3RIYW5kbGVyUHJvdG9jb2xbXCJURFNfOF8wXCJdID0gXCJ0ZHMvOC4wXCI7XG59KShleHBvcnRzLlJlcXVlc3RIYW5kbGVyUHJvdG9jb2wgfHwgKGV4cG9ydHMuUmVxdWVzdEhhbmRsZXJQcm90b2NvbCA9IHt9KSk7XG5cbmV4cG9ydHMuU01JVEhZX0NPTlRFWFRfS0VZID0gU01JVEhZX0NPTlRFWFRfS0VZO1xuZXhwb3J0cy5nZXREZWZhdWx0Q2xpZW50Q29uZmlndXJhdGlvbiA9IGdldERlZmF1bHRDbGllbnRDb25maWd1cmF0aW9uO1xuZXhwb3J0cy5yZXNvbHZlRGVmYXVsdFJ1bnRpbWVDb25maWcgPSByZXNvbHZlRGVmYXVsdFJ1bnRpbWVDb25maWc7XG4iCiAgXSwKICAibWFwcGluZ3MiOiAic0RBRVEsbUJBQXdCLFFBQy9CLFFBQVMsQ0FBQyxFQUFrQixDQUN6QixFQUFpQixPQUFZLFNBQzdCLEVBQWlCLE1BQVcsVUFDckIscUJBQTZCLG1CQUFtQixDQUFDLEVBQUUsRUFFdEQseUJBQThCLFFBQ3JDLFFBQVMsQ0FBQyxFQUF3QixDQUMvQixFQUF1QixPQUFZLFNBQ25DLEVBQXVCLE1BQVcsVUFDM0IsMkJBQW1DLHlCQUF5QixDQUFDLEVBQUUsRUFFbEUsb0JBQXlCLFFBQ2hDLFFBQVMsQ0FBQyxFQUFtQixDQUMxQixFQUFrQixLQUFVLE9BQzVCLEVBQWtCLE1BQVcsVUFDdEIsc0JBQThCLG9CQUFvQixDQUFDLEVBQUUsRUFFeEQsY0FBbUIsUUFDMUIsUUFBUyxDQUFDLEVBQWEsQ0FDcEIsRUFBWSxJQUFTLE1BQ3JCLEVBQVksTUFBVyxRQUN2QixFQUFZLE9BQVksU0FDeEIsRUFBWSxLQUFVLE9BQ3RCLEVBQVksT0FBWSxXQUNqQixnQkFBd0IsY0FBYyxDQUFDLEVBQUUsRUFDcEQsSUFBTSxFQUEyQixDQUFDLElBQWtCLENBQ2hELElBQU0sRUFBcUIsQ0FBQyxFQUM1QixHQUFJLEVBQWMsU0FBVyxPQUN6QixFQUFtQixLQUFLLENBQ3BCLFlBQWEsSUFBYyxjQUFZLE9BQ3ZDLG9CQUFxQixJQUFNLEVBQWMsTUFDN0MsQ0FBQyxFQUVMLEdBQUksRUFBYyxLQUFPLEtBQ3JCLEVBQW1CLEtBQUssQ0FDcEIsWUFBYSxJQUFjLGNBQVksSUFDdkMsb0JBQXFCLElBQU0sRUFBYyxHQUM3QyxDQUFDLEVBRUwsTUFBTyxDQUNILG9CQUFvQixDQUFDLEVBQU0sQ0FDdkIsRUFBbUIsS0FBSyxDQUFJLEdBRWhDLGtCQUFrQixFQUFHLENBQ2pCLE9BQU8sRUFFZixHQUVFLEVBQStCLENBQUMsSUFBaUIsQ0FDbkQsSUFBTSxFQUFnQixDQUFDLEVBSXZCLE9BSEEsRUFBYSxtQkFBbUIsRUFBRSxRQUFRLENBQUMsSUFBc0IsQ0FDN0QsRUFBYyxFQUFrQixZQUFZLEdBQUssRUFBa0Isb0JBQW9CLEVBQzFGLEVBQ00sR0FHTCxFQUFnQyxDQUFDLElBQWtCLENBQ3JELE9BQU8sRUFBeUIsQ0FBYSxHQUUzQyxFQUE4QixDQUFDLElBQVcsQ0FDNUMsT0FBTyxFQUE2QixDQUFNLEdBR3RDLGdCQUFxQixRQUM1QixRQUFTLENBQUMsRUFBZSxDQUN0QixFQUFjLEVBQWMsT0FBWSxHQUFLLFNBQzdDLEVBQWMsRUFBYyxRQUFhLEdBQUssWUFDdkMsa0JBQTBCLGdCQUFnQixDQUFDLEVBQUUsRUFFeEQsSUFBTSxFQUFxQixtQkFFbkIsaUJBQXNCLFFBQzdCLFFBQVMsQ0FBQyxFQUFnQixDQUN2QixFQUFlLFFBQWEsVUFDNUIsRUFBZSxZQUFpQixjQUNoQyxFQUFlLFNBQWMsYUFDdEIsbUJBQTJCLGlCQUFpQixDQUFDLEVBQUUsRUFFbEQseUJBQThCLFFBQ3JDLFFBQVMsQ0FBQyxFQUF3QixDQUMvQixFQUF1QixTQUFjLFdBQ3JDLEVBQXVCLFNBQWMsV0FDckMsRUFBdUIsUUFBYSxZQUM3QiwyQkFBbUMseUJBQXlCLENBQUMsRUFBRSxFQUVsRSxxQkFBcUIsRUFDckIsZ0NBQWdDLEVBQ2hDLDhCQUE4QiIsCiAgImRlYnVnSWQiOiAiRUZBQkRFMUVCODZENUU4ODY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
|
package/dist/chunk-m1zv7mtv.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{y as U}from"./chunk-r8mj3nq7.js";import{L as o}from"./chunk-ekwpcdh4.js";import"./chunk-kvnavsh3.js";import{R as P}from"./chunk-t5j8kj9p.js";import{S as l}from"./chunk-4pkw7jk4.js";import{T as A,U as m,V as W,W as T}from"./chunk-e9mt878v.js";var j=m((Q)=>{var Y=P(),w=l(),D=U(),_=o(),C=T("node:crypto"),$=T("node:fs"),z=T("node:os"),q=T("node:path");class L{profileData;init;callerClientConfig;static REFRESH_THRESHOLD=300000;constructor(e,n,t){this.profileData=e,this.init=n,this.callerClientConfig=t}async loadCredentials(){let e=await this.loadToken();if(!e)throw new w.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`,{tryNextLink:!1,logger:this.logger});let n=e.accessToken,t=Date.now();if(new Date(n.expiresAt).getTime()-t<=L.REFRESH_THRESHOLD)return this.refresh(e);return{accessKeyId:n.accessKeyId,secretAccessKey:n.secretAccessKey,sessionToken:n.sessionToken,accountId:n.accountId,expiration:new Date(n.expiresAt)}}get logger(){return this.init?.logger}get loginSession(){return this.profileData.login_session}async refresh(e){let{SigninClient:n,CreateOAuth2TokenCommand:t}=await import("./chunk-rn0z3e77.js"),{logger:s,userAgentAppId:r}=this.callerClientConfig??{},h=((a)=>{return a?.metadata?.handlerProtocol==="h2"})(this.callerClientConfig?.requestHandler)?void 0:this.callerClientConfig?.requestHandler,I=this.profileData.region??await this.callerClientConfig?.region?.()??process.env.AWS_REGION,E=new n({credentials:{accessKeyId:"",secretAccessKey:""},region:I,requestHandler:h,logger:s,userAgentAppId:r,...this.init?.clientConfig});this.createDPoPInterceptor(E.middlewareStack);let y={tokenInput:{clientId:e.clientId,refreshToken:e.refreshToken,grantType:"refresh_token"}};try{let a=await E.send(new t(y)),{accessKeyId:k,secretAccessKey:u,sessionToken:i}=a.tokenOutput?.accessToken??{},{refreshToken:K,expiresIn:B}=a.tokenOutput??{};if(!k||!u||!i||!K)throw new w.CredentialsProviderError("Token refresh response missing required fields",{logger:this.logger,tryNextLink:!1});let F=(B??900)*1000,x=new Date(Date.now()+F),R={...e,accessToken:{...e.accessToken,accessKeyId:k,secretAccessKey:u,sessionToken:i,expiresAt:x.toISOString()},refreshToken:K};await this.saveToken(R);let b=R.accessToken;return{accessKeyId:b.accessKeyId,secretAccessKey:b.secretAccessKey,sessionToken:b.sessionToken,accountId:b.accountId,expiration:x}}catch(a){if(a.name==="AccessDeniedException"){let k=a.error,u;switch(k){case"TOKEN_EXPIRED":u="Your session has expired. Please reauthenticate.";break;case"USER_CREDENTIALS_CHANGED":u="Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password.";break;case"INSUFFICIENT_PERMISSIONS":u="Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action.";break;default:u=`Failed to refresh token: ${String(a)}. Please re-authenticate using \`aws login\``}throw new w.CredentialsProviderError(u,{logger:this.logger,tryNextLink:!1})}throw new w.CredentialsProviderError(`Failed to refresh token: ${String(a)}. Please re-authenticate using aws login`,{logger:this.logger})}}async loadToken(){let e=this.getTokenFilePath();try{let n;try{n=await D.readFile(e,{ignoreCache:this.init?.ignoreCache})}catch{n=await $.promises.readFile(e,"utf8")}let t=JSON.parse(n),s=["accessToken","clientId","refreshToken","dpopKey"].filter((r)=>!t[r]);if(!t.accessToken?.accountId)s.push("accountId");if(s.length>0)throw new w.CredentialsProviderError(`Token validation failed, missing fields: ${s.join(", ")}`,{logger:this.logger,tryNextLink:!1});return t}catch(n){throw new w.CredentialsProviderError(`Failed to load token from ${e}: ${String(n)}`,{logger:this.logger,tryNextLink:!1})}}async saveToken(e){let n=this.getTokenFilePath(),t=q.dirname(n);try{await $.promises.mkdir(t,{recursive:!0})}catch(s){}await $.promises.writeFile(n,JSON.stringify(e,null,2),"utf8")}getTokenFilePath(){let e=process.env.AWS_LOGIN_CACHE_DIRECTORY??q.join(z.homedir(),".aws","login","cache"),n=Buffer.from(this.loginSession,"utf8"),t=C.createHash("sha256").update(n).digest("hex");return q.join(e,`${t}.json`)}derToRawSignature(e){let n=2;if(e[n]!==2)throw Error("Invalid DER signature");n++;let t=e[n++],s=e.subarray(n,n+t);if(n+=t,e[n]!==2)throw Error("Invalid DER signature");n++;let r=e[n++],c=e.subarray(n,n+r);s=s[0]===0?s.subarray(1):s,c=c[0]===0?c.subarray(1):c;let h=Buffer.concat([Buffer.alloc(32-s.length),s]),I=Buffer.concat([Buffer.alloc(32-c.length),c]);return Buffer.concat([h,I])}createDPoPInterceptor(e){e.add((n)=>async(t)=>{if(_.HttpRequest.isInstance(t.request)){let s=t.request,r=`${s.protocol}//${s.hostname}${s.port?`:${s.port}`:""}${s.path}`,c=await this.generateDpop(s.method,r);s.headers={...s.headers,DPoP:c}}return n(t)},{step:"finalizeRequest",name:"dpopInterceptor",override:!0})}async generateDpop(e="POST",n){let t=await this.loadToken();try{let s=C.createPrivateKey({key:t.dpopKey,format:"pem",type:"sec1"}),c=C.createPublicKey(s).export({format:"der",type:"spki"}),h=-1;for(let x=0;x<c.length;x++)if(c[x]===4){h=x;break}let I=c.slice(h+1,h+33),E=c.slice(h+33,h+65),y={alg:"ES256",typ:"dpop+jwt",jwk:{kty:"EC",crv:"P-256",x:I.toString("base64url"),y:E.toString("base64url")}},a={jti:crypto.randomUUID(),htm:e,htu:n,iat:Math.floor(Date.now()/1000)},k=Buffer.from(JSON.stringify(y)).toString("base64url"),u=Buffer.from(JSON.stringify(a)).toString("base64url"),i=`${k}.${u}`,K=C.sign("sha256",Buffer.from(i),s),F=this.derToRawSignature(K).toString("base64url");return`${i}.${F}`}catch(s){throw new w.CredentialsProviderError(`Failed to generate Dpop proof: ${s instanceof Error?s.message:String(s)}`,{logger:this.logger,tryNextLink:!1})}}}var X=(e)=>async({callerClientConfig:n}={})=>{e?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials");let t=await D.parseKnownFiles(e||{}),s=D.getProfileName({profile:e?.profile??n?.profile}),r=t[s];if(!r?.login_session)throw new w.CredentialsProviderError(`Profile ${s} does not contain login_session.`,{tryNextLink:!0,logger:e?.logger});let h=await new L(r,e,n).loadCredentials();return Y.setCredentialFeature(h,"CREDENTIALS_LOGIN","AD")};Q.fromLoginCredentials=X});var H,S,d,Z,M=(e,n,t)=>{let s={EcsContainer:async(r)=>{let{fromHttp:c}=await import("./chunk-9zmzw25z.js"),{fromContainerMetadata:h}=await import("./chunk-7bag664c.js");return t?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"),async()=>S.chain(c(r??{}),h(r))().then(O)},Ec2InstanceMetadata:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata");let{fromInstanceMetadata:c}=await import("./chunk-7bag664c.js");return async()=>c(r)().then(O)},Environment:async(r)=>{t?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment");let{fromEnv:c}=await import("./chunk-3cawvvw3.js");return async()=>c(r)().then(O)}};if(e in s)return s[e];else throw new S.CredentialsProviderError(`Unsupported credential source in profile ${n}. Got ${e}, expected EcsContainer or Ec2InstanceMetadata or Environment.`,{logger:t})},O=(e)=>d.setCredentialFeature(e,"CREDENTIALS_PROFILE_NAMED_PROVIDER","p"),N=(e,{profile:n="default",logger:t}={})=>{return Boolean(e)&&typeof e==="object"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1&&["undefined","string"].indexOf(typeof e.external_id)>-1&&["undefined","string"].indexOf(typeof e.mfa_serial)>-1&&(f(e,{profile:n,logger:t})||p(e,{profile:n,logger:t}))},f=(e,{profile:n,logger:t})=>{let s=typeof e.source_profile==="string"&&typeof e.credential_source>"u";if(s)t?.debug?.(` ${n} isAssumeRoleWithSourceProfile source_profile=${e.source_profile}`);return s},p=(e,{profile:n,logger:t})=>{let s=typeof e.credential_source==="string"&&typeof e.source_profile>"u";if(s)t?.debug?.(` ${n} isCredentialSourceProfile credential_source=${e.credential_source}`);return s},ee=async(e,n,t,s={},r)=>{t.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)");let c=n[e],{source_profile:h,region:I}=c;if(!t.roleAssumer){let{getDefaultRoleAssumer:y}=await import("./chunk-dyyrwzgp.js");t.roleAssumer=y({...t.clientConfig,credentialProviderLogger:t.logger,parentClientConfig:{...t?.parentClientConfig,region:I??t?.parentClientConfig?.region}},t.clientPlugins)}if(h&&h in s)throw new S.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile ${H.getProfileName(t)}. Profiles visited: `+Object.keys(s).join(", "),{logger:t.logger});t.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${h?`source_profile=[${h}]`:`profile=[${e}]`}`);let E=h?r(h,n,t,{...s,[h]:!0},g(n[h]??{})):(await M(c.credential_source,e,t.logger)(t))();if(g(c))return E.then((y)=>d.setCredentialFeature(y,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"));else{let y={RoleArn:c.role_arn,RoleSessionName:c.role_session_name||`aws-sdk-js-${Date.now()}`,ExternalId:c.external_id,DurationSeconds:parseInt(c.duration_seconds||"3600",10)},{mfa_serial:a}=c;if(a){if(!t.mfaCodeProvider)throw new S.CredentialsProviderError(`Profile ${e} requires multi-factor authentication, but no MFA code callback was provided.`,{logger:t.logger,tryNextLink:!1});y.SerialNumber=a,y.TokenCode=await t.mfaCodeProvider(a)}let k=await E;return t.roleAssumer(k,y).then((u)=>d.setCredentialFeature(u,"CREDENTIALS_PROFILE_SOURCE_PROFILE","o"))}},g=(e)=>{return!e.role_arn&&!!e.credential_source},te=(e)=>{return Boolean(e&&e.login_session)},ne=async(e,n)=>{let t=await Z.fromLoginCredentials({...n,profile:e})();return d.setCredentialFeature(t,"CREDENTIALS_PROFILE_LOGIN","AC")},se=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.credential_process==="string",ce=async(e,n)=>import("./chunk-bh9mv7m6.js").then(({fromProcess:t})=>t({...e,profile:n})().then((s)=>d.setCredentialFeature(s,"CREDENTIALS_PROFILE_PROCESS","v"))),re=async(e,n,t={})=>{let{fromSSO:s}=await import("./chunk-x343hkb8.js");return s({profile:e,logger:t.logger,parentClientConfig:t.parentClientConfig,clientConfig:t.clientConfig})().then((r)=>{if(n.sso_session)return d.setCredentialFeature(r,"CREDENTIALS_PROFILE_SSO","r");else return d.setCredentialFeature(r,"CREDENTIALS_PROFILE_SSO_LEGACY","t")})},he=(e)=>e&&(typeof e.sso_start_url==="string"||typeof e.sso_account_id==="string"||typeof e.sso_session==="string"||typeof e.sso_region==="string"||typeof e.sso_role_name==="string"),v=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.aws_access_key_id==="string"&&typeof e.aws_secret_access_key==="string"&&["undefined","string"].indexOf(typeof e.aws_session_token)>-1&&["undefined","string"].indexOf(typeof e.aws_account_id)>-1,G=async(e,n)=>{n?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials");let t={accessKeyId:e.aws_access_key_id,secretAccessKey:e.aws_secret_access_key,sessionToken:e.aws_session_token,...e.aws_credential_scope&&{credentialScope:e.aws_credential_scope},...e.aws_account_id&&{accountId:e.aws_account_id}};return d.setCredentialFeature(t,"CREDENTIALS_PROFILE","n")},ae=(e)=>Boolean(e)&&typeof e==="object"&&typeof e.web_identity_token_file==="string"&&typeof e.role_arn==="string"&&["undefined","string"].indexOf(typeof e.role_session_name)>-1,ue=async(e,n)=>import("./chunk-rea1s8cr.js").then(({fromTokenFile:t})=>t({webIdentityTokenFile:e.web_identity_token_file,roleArn:e.role_arn,roleSessionName:e.role_session_name,roleAssumerWithWebIdentity:n.roleAssumerWithWebIdentity,logger:n.logger,parentClientConfig:n.parentClientConfig})().then((s)=>d.setCredentialFeature(s,"CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN","q"))),J=async(e,n,t,s={},r=!1)=>{let c=n[e];if(Object.keys(s).length>0&&v(c))return G(c,t);if(r||N(c,{profile:e,logger:t.logger}))return ee(e,n,t,s,J);if(v(c))return G(c,t);if(ae(c))return ue(c,t);if(se(c))return ce(t,e);if(he(c))return await re(e,c,t);if(te(c))return ne(e,t);throw new S.CredentialsProviderError(`Could not resolve credentials using profile: [${e}] in configuration/credentials file(s).`,{logger:t.logger})},ye=(e={})=>async({callerClientConfig:n}={})=>{let t={...e,parentClientConfig:{...n,...e.parentClientConfig}};t.logger?.debug("@aws-sdk/credential-provider-ini - fromIni");let s=await H.parseKnownFiles(t);return J(H.getProfileName({profile:e.profile??n?.profile}),s,t)},de;var ke=W(()=>{H=U(),S=l(),d=P(),Z=j();de=ye});ke();export{de as fromIni};export default {get fromIni(){return de}};
|
|
2
|
-
|
|
3
|
-
//# debugId=1B50AF37A28F855364756E2164756E21
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbG9naW4vZGlzdC1janMvaW5kZXguanMiLCAiLi4vbm9kZV9tb2R1bGVzL0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItaW5pL2Rpc3QtY2pzL2luZGV4LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIid1c2Ugc3RyaWN0JztcblxudmFyIGNsaWVudCA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL2NvcmUvY2xpZW50Jyk7XG52YXIgcHJvcGVydHlQcm92aWRlciA9IHJlcXVpcmUoJ0BzbWl0aHkvcHJvcGVydHktcHJvdmlkZXInKTtcbnZhciBzaGFyZWRJbmlGaWxlTG9hZGVyID0gcmVxdWlyZSgnQHNtaXRoeS9zaGFyZWQtaW5pLWZpbGUtbG9hZGVyJyk7XG52YXIgcHJvdG9jb2xIdHRwID0gcmVxdWlyZSgnQHNtaXRoeS9wcm90b2NvbC1odHRwJyk7XG52YXIgbm9kZV9jcnlwdG8gPSByZXF1aXJlKCdub2RlOmNyeXB0bycpO1xudmFyIG5vZGVfZnMgPSByZXF1aXJlKCdub2RlOmZzJyk7XG52YXIgbm9kZV9vcyA9IHJlcXVpcmUoJ25vZGU6b3MnKTtcbnZhciBub2RlX3BhdGggPSByZXF1aXJlKCdub2RlOnBhdGgnKTtcblxuY2xhc3MgTG9naW5DcmVkZW50aWFsc0ZldGNoZXIge1xuICAgIHByb2ZpbGVEYXRhO1xuICAgIGluaXQ7XG4gICAgY2FsbGVyQ2xpZW50Q29uZmlnO1xuICAgIHN0YXRpYyBSRUZSRVNIX1RIUkVTSE9MRCA9IDUgKiA2MCAqIDEwMDA7XG4gICAgY29uc3RydWN0b3IocHJvZmlsZURhdGEsIGluaXQsIGNhbGxlckNsaWVudENvbmZpZykge1xuICAgICAgICB0aGlzLnByb2ZpbGVEYXRhID0gcHJvZmlsZURhdGE7XG4gICAgICAgIHRoaXMuaW5pdCA9IGluaXQ7XG4gICAgICAgIHRoaXMuY2FsbGVyQ2xpZW50Q29uZmlnID0gY2FsbGVyQ2xpZW50Q29uZmlnO1xuICAgIH1cbiAgICBhc3luYyBsb2FkQ3JlZGVudGlhbHMoKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5sb2FkVG9rZW4oKTtcbiAgICAgICAgaWYgKCF0b2tlbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHByb3BlcnR5UHJvdmlkZXIuQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKGBGYWlsZWQgdG8gbG9hZCBhIHRva2VuIGZvciBzZXNzaW9uICR7dGhpcy5sb2dpblNlc3Npb259LCBwbGVhc2UgcmUtYXV0aGVudGljYXRlIHVzaW5nIGF3cyBsb2dpbmAsIHsgdHJ5TmV4dExpbms6IGZhbHNlLCBsb2dnZXI6IHRoaXMubG9nZ2VyIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdG9rZW4uYWNjZXNzVG9rZW47XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGV4cGlyeVRpbWUgPSBuZXcgRGF0ZShhY2Nlc3NUb2tlbi5leHBpcmVzQXQpLmdldFRpbWUoKTtcbiAgICAgICAgY29uc3QgdGltZVVudGlsRXhwaXJ5ID0gZXhwaXJ5VGltZSAtIG5vdztcbiAgICAgICAgaWYgKHRpbWVVbnRpbEV4cGlyeSA8PSBMb2dpbkNyZWRlbnRpYWxzRmV0Y2hlci5SRUZSRVNIX1RIUkVTSE9MRCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaCh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBhY2Nlc3NUb2tlbi5hY2Nlc3NLZXlJZCxcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogYWNjZXNzVG9rZW4uc2VjcmV0QWNjZXNzS2V5LFxuICAgICAgICAgICAgc2Vzc2lvblRva2VuOiBhY2Nlc3NUb2tlbi5zZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICBhY2NvdW50SWQ6IGFjY2Vzc1Rva2VuLmFjY291bnRJZCxcbiAgICAgICAgICAgIGV4cGlyYXRpb246IG5ldyBEYXRlKGFjY2Vzc1Rva2VuLmV4cGlyZXNBdCksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCBsb2dnZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXQ/LmxvZ2dlcjtcbiAgICB9XG4gICAgZ2V0IGxvZ2luU2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZmlsZURhdGEubG9naW5fc2Vzc2lvbjtcbiAgICB9XG4gICAgYXN5bmMgcmVmcmVzaCh0b2tlbikge1xuICAgICAgICBjb25zdCB7IFNpZ25pbkNsaWVudCwgQ3JlYXRlT0F1dGgyVG9rZW5Db21tYW5kIH0gPSBhd2FpdCBpbXBvcnQoJ0Bhd3Mtc2RrL25lc3RlZC1jbGllbnRzL3NpZ25pbicpO1xuICAgICAgICBjb25zdCB7IGxvZ2dlciwgdXNlckFnZW50QXBwSWQgfSA9IHRoaXMuY2FsbGVyQ2xpZW50Q29uZmlnID8/IHt9O1xuICAgICAgICBjb25zdCBpc0gyID0gKHJlcXVlc3RIYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXI/Lm1ldGFkYXRhPy5oYW5kbGVyUHJvdG9jb2wgPT09IFwiaDJcIjtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVxdWVzdEhhbmRsZXIgPSBpc0gyKHRoaXMuY2FsbGVyQ2xpZW50Q29uZmlnPy5yZXF1ZXN0SGFuZGxlcilcbiAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICA6IHRoaXMuY2FsbGVyQ2xpZW50Q29uZmlnPy5yZXF1ZXN0SGFuZGxlcjtcbiAgICAgICAgY29uc3QgcmVnaW9uID0gdGhpcy5wcm9maWxlRGF0YS5yZWdpb24gPz8gKGF3YWl0IHRoaXMuY2FsbGVyQ2xpZW50Q29uZmlnPy5yZWdpb24/LigpKSA/PyBwcm9jZXNzLmVudi5BV1NfUkVHSU9OO1xuICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgU2lnbmluQ2xpZW50KHtcbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgdXNlckFnZW50QXBwSWQsXG4gICAgICAgICAgICAuLi50aGlzLmluaXQ/LmNsaWVudENvbmZpZyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY3JlYXRlRFBvUEludGVyY2VwdG9yKGNsaWVudC5taWRkbGV3YXJlU3RhY2spO1xuICAgICAgICBjb25zdCBjb21tYW5kSW5wdXQgPSB7XG4gICAgICAgICAgICB0b2tlbklucHV0OiB7XG4gICAgICAgICAgICAgICAgY2xpZW50SWQ6IHRva2VuLmNsaWVudElkLFxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogdG9rZW4ucmVmcmVzaFRva2VuLFxuICAgICAgICAgICAgICAgIGdyYW50VHlwZTogXCJyZWZyZXNoX3Rva2VuXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChuZXcgQ3JlYXRlT0F1dGgyVG9rZW5Db21tYW5kKGNvbW1hbmRJbnB1dCkpO1xuICAgICAgICAgICAgY29uc3QgeyBhY2Nlc3NLZXlJZCwgc2VjcmV0QWNjZXNzS2V5LCBzZXNzaW9uVG9rZW4gfSA9IHJlc3BvbnNlLnRva2VuT3V0cHV0Py5hY2Nlc3NUb2tlbiA/PyB7fTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVmcmVzaFRva2VuLCBleHBpcmVzSW4gfSA9IHJlc3BvbnNlLnRva2VuT3V0cHV0ID8/IHt9O1xuICAgICAgICAgICAgaWYgKCFhY2Nlc3NLZXlJZCB8fCAhc2VjcmV0QWNjZXNzS2V5IHx8ICFzZXNzaW9uVG9rZW4gfHwgIXJlZnJlc2hUb2tlbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihcIlRva2VuIHJlZnJlc2ggcmVzcG9uc2UgbWlzc2luZyByZXF1aXJlZCBmaWVsZHNcIiwge1xuICAgICAgICAgICAgICAgICAgICBsb2dnZXI6IHRoaXMubG9nZ2VyLFxuICAgICAgICAgICAgICAgICAgICB0cnlOZXh0TGluazogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW5NcyA9IChleHBpcmVzSW4gPz8gOTAwKSAqIDEwMDA7XG4gICAgICAgICAgICBjb25zdCBleHBpcmF0aW9uID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIGV4cGlyZXNJbk1zKTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUb2tlbiA9IHtcbiAgICAgICAgICAgICAgICAuLi50b2tlbixcbiAgICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjoge1xuICAgICAgICAgICAgICAgICAgICAuLi50b2tlbi5hY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IGFjY2Vzc0tleUlkLFxuICAgICAgICAgICAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHNlY3JldEFjY2Vzc0tleSxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblRva2VuOiBzZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyZXNBdDogZXhwaXJhdGlvbi50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zYXZlVG9rZW4odXBkYXRlZFRva2VuKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld0FjY2Vzc1Rva2VuID0gdXBkYXRlZFRva2VuLmFjY2Vzc1Rva2VuO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NLZXlJZDogbmV3QWNjZXNzVG9rZW4uYWNjZXNzS2V5SWQsXG4gICAgICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBuZXdBY2Nlc3NUb2tlbi5zZWNyZXRBY2Nlc3NLZXksXG4gICAgICAgICAgICAgICAgc2Vzc2lvblRva2VuOiBuZXdBY2Nlc3NUb2tlbi5zZXNzaW9uVG9rZW4sXG4gICAgICAgICAgICAgICAgYWNjb3VudElkOiBuZXdBY2Nlc3NUb2tlbi5hY2NvdW50SWQsXG4gICAgICAgICAgICAgICAgZXhwaXJhdGlvbixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IubmFtZSA9PT0gXCJBY2Nlc3NEZW5pZWRFeGNlcHRpb25cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yVHlwZSA9IGVycm9yLmVycm9yO1xuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJUT0tFTl9FWFBJUkVEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJZb3VyIHNlc3Npb24gaGFzIGV4cGlyZWQuIFBsZWFzZSByZWF1dGhlbnRpY2F0ZS5cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiVVNFUl9DUkVERU5USUFMU19DSEFOR0VEXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlVuYWJsZSB0byByZWZyZXNoIGNyZWRlbnRpYWxzIGJlY2F1c2Ugb2YgYSBjaGFuZ2UgaW4geW91ciBwYXNzd29yZC4gUGxlYXNlIHJlYXV0aGVudGljYXRlIHdpdGggeW91ciBuZXcgcGFzc3dvcmQuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIklOU1VGRklDSUVOVF9QRVJNSVNTSU9OU1wiOlxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJVbmFibGUgdG8gcmVmcmVzaCBjcmVkZW50aWFscyBkdWUgdG8gaW5zdWZmaWNpZW50IHBlcm1pc3Npb25zLiBZb3UgbWF5IGJlIG1pc3NpbmcgcGVybWlzc2lvbiBmb3IgdGhlICdDcmVhdGVPQXV0aDJUb2tlbicgYWN0aW9uLlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEZhaWxlZCB0byByZWZyZXNoIHRva2VuOiAke1N0cmluZyhlcnJvcil9LiBQbGVhc2UgcmUtYXV0aGVudGljYXRlIHVzaW5nIFxcYGF3cyBsb2dpblxcYGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihtZXNzYWdlLCB7IGxvZ2dlcjogdGhpcy5sb2dnZXIsIHRyeU5leHRMaW5rOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihgRmFpbGVkIHRvIHJlZnJlc2ggdG9rZW46ICR7U3RyaW5nKGVycm9yKX0uIFBsZWFzZSByZS1hdXRoZW50aWNhdGUgdXNpbmcgYXdzIGxvZ2luYCwgeyBsb2dnZXI6IHRoaXMubG9nZ2VyIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGxvYWRUb2tlbigpIHtcbiAgICAgICAgY29uc3QgdG9rZW5GaWxlUGF0aCA9IHRoaXMuZ2V0VG9rZW5GaWxlUGF0aCgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHRva2VuRGF0YTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhID0gYXdhaXQgc2hhcmVkSW5pRmlsZUxvYWRlci5yZWFkRmlsZSh0b2tlbkZpbGVQYXRoLCB7IGlnbm9yZUNhY2hlOiB0aGlzLmluaXQ/Lmlnbm9yZUNhY2hlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgIHRva2VuRGF0YSA9IGF3YWl0IG5vZGVfZnMucHJvbWlzZXMucmVhZEZpbGUodG9rZW5GaWxlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBKU09OLnBhcnNlKHRva2VuRGF0YSk7XG4gICAgICAgICAgICBjb25zdCBtaXNzaW5nRmllbGRzID0gW1wiYWNjZXNzVG9rZW5cIiwgXCJjbGllbnRJZFwiLCBcInJlZnJlc2hUb2tlblwiLCBcImRwb3BLZXlcIl0uZmlsdGVyKChrKSA9PiAhdG9rZW5ba10pO1xuICAgICAgICAgICAgaWYgKCF0b2tlbi5hY2Nlc3NUb2tlbj8uYWNjb3VudElkKSB7XG4gICAgICAgICAgICAgICAgbWlzc2luZ0ZpZWxkcy5wdXNoKFwiYWNjb3VudElkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1pc3NpbmdGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihgVG9rZW4gdmFsaWRhdGlvbiBmYWlsZWQsIG1pc3NpbmcgZmllbGRzOiAke21pc3NpbmdGaWVsZHMuam9pbihcIiwgXCIpfWAsIHtcbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgICAgICAgICAgICAgICAgdHJ5TmV4dExpbms6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IHByb3BlcnR5UHJvdmlkZXIuQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKGBGYWlsZWQgdG8gbG9hZCB0b2tlbiBmcm9tICR7dG9rZW5GaWxlUGF0aH06ICR7U3RyaW5nKGVycm9yKX1gLCB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICAgICAgICAgICAgICB0cnlOZXh0TGluazogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzYXZlVG9rZW4odG9rZW4pIHtcbiAgICAgICAgY29uc3QgdG9rZW5GaWxlUGF0aCA9IHRoaXMuZ2V0VG9rZW5GaWxlUGF0aCgpO1xuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSBub2RlX3BhdGguZGlybmFtZSh0b2tlbkZpbGVQYXRoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IG5vZGVfZnMucHJvbWlzZXMubWtkaXIoZGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBub2RlX2ZzLnByb21pc2VzLndyaXRlRmlsZSh0b2tlbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeSh0b2tlbiwgbnVsbCwgMiksIFwidXRmOFwiKTtcbiAgICB9XG4gICAgZ2V0VG9rZW5GaWxlUGF0aCgpIHtcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5ID0gcHJvY2Vzcy5lbnYuQVdTX0xPR0lOX0NBQ0hFX0RJUkVDVE9SWSA/PyBub2RlX3BhdGguam9pbihub2RlX29zLmhvbWVkaXIoKSwgXCIuYXdzXCIsIFwibG9naW5cIiwgXCJjYWNoZVwiKTtcbiAgICAgICAgY29uc3QgbG9naW5TZXNzaW9uQnl0ZXMgPSBCdWZmZXIuZnJvbSh0aGlzLmxvZ2luU2Vzc2lvbiwgXCJ1dGY4XCIpO1xuICAgICAgICBjb25zdCBsb2dpblNlc3Npb25TaGEyNTYgPSBub2RlX2NyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShsb2dpblNlc3Npb25CeXRlcykuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgICByZXR1cm4gbm9kZV9wYXRoLmpvaW4oZGlyZWN0b3J5LCBgJHtsb2dpblNlc3Npb25TaGEyNTZ9Lmpzb25gKTtcbiAgICB9XG4gICAgZGVyVG9SYXdTaWduYXR1cmUoZGVyU2lnbmF0dXJlKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSAyO1xuICAgICAgICBpZiAoZGVyU2lnbmF0dXJlW29mZnNldF0gIT09IDB4MDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgREVSIHNpZ25hdHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgY29uc3Qgckxlbmd0aCA9IGRlclNpZ25hdHVyZVtvZmZzZXQrK107XG4gICAgICAgIGxldCByID0gZGVyU2lnbmF0dXJlLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgckxlbmd0aCk7XG4gICAgICAgIG9mZnNldCArPSByTGVuZ3RoO1xuICAgICAgICBpZiAoZGVyU2lnbmF0dXJlW29mZnNldF0gIT09IDB4MDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgREVSIHNpZ25hdHVyZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBvZmZzZXQrKztcbiAgICAgICAgY29uc3Qgc0xlbmd0aCA9IGRlclNpZ25hdHVyZVtvZmZzZXQrK107XG4gICAgICAgIGxldCBzID0gZGVyU2lnbmF0dXJlLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgc0xlbmd0aCk7XG4gICAgICAgIHIgPSByWzBdID09PSAweDAwID8gci5zdWJhcnJheSgxKSA6IHI7XG4gICAgICAgIHMgPSBzWzBdID09PSAweDAwID8gcy5zdWJhcnJheSgxKSA6IHM7XG4gICAgICAgIGNvbnN0IHJQYWRkZWQgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MoMzIgLSByLmxlbmd0aCksIHJdKTtcbiAgICAgICAgY29uc3Qgc1BhZGRlZCA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYygzMiAtIHMubGVuZ3RoKSwgc10pO1xuICAgICAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbclBhZGRlZCwgc1BhZGRlZF0pO1xuICAgIH1cbiAgICBjcmVhdGVEUG9QSW50ZXJjZXB0b3IobWlkZGxld2FyZVN0YWNrKSB7XG4gICAgICAgIG1pZGRsZXdhcmVTdGFjay5hZGQoKG5leHQpID0+IGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvdG9jb2xIdHRwLkh0dHBSZXF1ZXN0LmlzSW5zdGFuY2UoYXJncy5yZXF1ZXN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhcmdzLnJlcXVlc3Q7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0dWFsRW5kcG9pbnQgPSBgJHtyZXF1ZXN0LnByb3RvY29sfS8vJHtyZXF1ZXN0Lmhvc3RuYW1lfSR7cmVxdWVzdC5wb3J0ID8gYDoke3JlcXVlc3QucG9ydH1gIDogXCJcIn0ke3JlcXVlc3QucGF0aH1gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRwb3AgPSBhd2FpdCB0aGlzLmdlbmVyYXRlRHBvcChyZXF1ZXN0Lm1ldGhvZCwgYWN0dWFsRW5kcG9pbnQpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucmVxdWVzdC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBEUG9QOiBkcG9wLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV4dChhcmdzKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgc3RlcDogXCJmaW5hbGl6ZVJlcXVlc3RcIixcbiAgICAgICAgICAgIG5hbWU6IFwiZHBvcEludGVyY2VwdG9yXCIsXG4gICAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlRHBvcChtZXRob2QgPSBcIlBPU1RcIiwgZW5kcG9pbnQpIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLmxvYWRUb2tlbigpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcHJpdmF0ZUtleSA9IG5vZGVfY3J5cHRvLmNyZWF0ZVByaXZhdGVLZXkoe1xuICAgICAgICAgICAgICAgIGtleTogdG9rZW4uZHBvcEtleSxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwicGVtXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJzZWMxXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0tleSA9IG5vZGVfY3J5cHRvLmNyZWF0ZVB1YmxpY0tleShwcml2YXRlS2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0RlciA9IHB1YmxpY0tleS5leHBvcnQoeyBmb3JtYXQ6IFwiZGVyXCIsIHR5cGU6IFwic3BraVwiIH0pO1xuICAgICAgICAgICAgbGV0IHBvaW50U3RhcnQgPSAtMTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHVibGljRGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHB1YmxpY0RlcltpXSA9PT0gMHgwNCkge1xuICAgICAgICAgICAgICAgICAgICBwb2ludFN0YXJ0ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeCA9IHB1YmxpY0Rlci5zbGljZShwb2ludFN0YXJ0ICsgMSwgcG9pbnRTdGFydCArIDMzKTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSBwdWJsaWNEZXIuc2xpY2UocG9pbnRTdGFydCArIDMzLCBwb2ludFN0YXJ0ICsgNjUpO1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyID0ge1xuICAgICAgICAgICAgICAgIGFsZzogXCJFUzI1NlwiLFxuICAgICAgICAgICAgICAgIHR5cDogXCJkcG9wK2p3dFwiLFxuICAgICAgICAgICAgICAgIGp3azoge1xuICAgICAgICAgICAgICAgICAgICBrdHk6IFwiRUNcIixcbiAgICAgICAgICAgICAgICAgICAgY3J2OiBcIlAtMjU2XCIsXG4gICAgICAgICAgICAgICAgICAgIHg6IHgudG9TdHJpbmcoXCJiYXNlNjR1cmxcIiksXG4gICAgICAgICAgICAgICAgICAgIHk6IHkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICAgICAgICAgIGp0aTogY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICAgICAgICAgICAgICBodG06IG1ldGhvZCxcbiAgICAgICAgICAgICAgICBodHU6IGVuZHBvaW50LFxuICAgICAgICAgICAgICAgIGlhdDogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGVhZGVyQjY0ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoaGVhZGVyKSkudG9TdHJpbmcoXCJiYXNlNjR1cmxcIik7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkQjY0ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGAke2hlYWRlckI2NH0uJHtwYXlsb2FkQjY0fWA7XG4gICAgICAgICAgICBjb25zdCBhc24xU2lnbmF0dXJlID0gbm9kZV9jcnlwdG8uc2lnbihcInNoYTI1NlwiLCBCdWZmZXIuZnJvbShtZXNzYWdlKSwgcHJpdmF0ZUtleSk7XG4gICAgICAgICAgICBjb25zdCByYXdTaWduYXR1cmUgPSB0aGlzLmRlclRvUmF3U2lnbmF0dXJlKGFzbjFTaWduYXR1cmUpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlQjY0ID0gcmF3U2lnbmF0dXJlLnRvU3RyaW5nKFwiYmFzZTY0dXJsXCIpO1xuICAgICAgICAgICAgcmV0dXJuIGAke21lc3NhZ2V9LiR7c2lnbmF0dXJlQjY0fWA7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgcHJvcGVydHlQcm92aWRlci5DcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBEcG9wIHByb29mOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gLCB7IGxvZ2dlcjogdGhpcy5sb2dnZXIsIHRyeU5leHRMaW5rOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZnJvbUxvZ2luQ3JlZGVudGlhbHMgPSAoaW5pdCkgPT4gYXN5bmMgKHsgY2FsbGVyQ2xpZW50Q29uZmlnIH0gPSB7fSkgPT4ge1xuICAgIGluaXQ/LmxvZ2dlcj8uZGVidWc/LihcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzIC0gZnJvbUxvZ2luQ3JlZGVudGlhbHNcIik7XG4gICAgY29uc3QgcHJvZmlsZXMgPSBhd2FpdCBzaGFyZWRJbmlGaWxlTG9hZGVyLnBhcnNlS25vd25GaWxlcyhpbml0IHx8IHt9KTtcbiAgICBjb25zdCBwcm9maWxlTmFtZSA9IHNoYXJlZEluaUZpbGVMb2FkZXIuZ2V0UHJvZmlsZU5hbWUoe1xuICAgICAgICBwcm9maWxlOiBpbml0Py5wcm9maWxlID8/IGNhbGxlckNsaWVudENvbmZpZz8ucHJvZmlsZSxcbiAgICB9KTtcbiAgICBjb25zdCBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuICAgIGlmICghcHJvZmlsZT8ubG9naW5fc2Vzc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgcHJvcGVydHlQcm92aWRlci5DcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFByb2ZpbGUgJHtwcm9maWxlTmFtZX0gZG9lcyBub3QgY29udGFpbiBsb2dpbl9zZXNzaW9uLmAsIHtcbiAgICAgICAgICAgIHRyeU5leHRMaW5rOiB0cnVlLFxuICAgICAgICAgICAgbG9nZ2VyOiBpbml0Py5sb2dnZXIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaGVyID0gbmV3IExvZ2luQ3JlZGVudGlhbHNGZXRjaGVyKHByb2ZpbGUsIGluaXQsIGNhbGxlckNsaWVudENvbmZpZyk7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBmZXRjaGVyLmxvYWRDcmVkZW50aWFscygpO1xuICAgIHJldHVybiBjbGllbnQuc2V0Q3JlZGVudGlhbEZlYXR1cmUoY3JlZGVudGlhbHMsIFwiQ1JFREVOVElBTFNfTE9HSU5cIiwgXCJBRFwiKTtcbn07XG5cbmV4cG9ydHMuZnJvbUxvZ2luQ3JlZGVudGlhbHMgPSBmcm9tTG9naW5DcmVkZW50aWFscztcbiIsCiAgICAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc2hhcmVkSW5pRmlsZUxvYWRlciA9IHJlcXVpcmUoJ0BzbWl0aHkvc2hhcmVkLWluaS1maWxlLWxvYWRlcicpO1xudmFyIHByb3BlcnR5UHJvdmlkZXIgPSByZXF1aXJlKCdAc21pdGh5L3Byb3BlcnR5LXByb3ZpZGVyJyk7XG52YXIgY2xpZW50ID0gcmVxdWlyZSgnQGF3cy1zZGsvY29yZS9jbGllbnQnKTtcbnZhciBjcmVkZW50aWFsUHJvdmlkZXJMb2dpbiA9IHJlcXVpcmUoJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItbG9naW4nKTtcblxuY29uc3QgcmVzb2x2ZUNyZWRlbnRpYWxTb3VyY2UgPSAoY3JlZGVudGlhbFNvdXJjZSwgcHJvZmlsZU5hbWUsIGxvZ2dlcikgPT4ge1xuICAgIGNvbnN0IHNvdXJjZVByb3ZpZGVyc01hcCA9IHtcbiAgICAgICAgRWNzQ29udGFpbmVyOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBmcm9tSHR0cCB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLWh0dHAnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZnJvbUNvbnRhaW5lck1ldGFkYXRhIH0gPSBhd2FpdCBpbXBvcnQoJ0BzbWl0aHkvY3JlZGVudGlhbC1wcm92aWRlci1pbWRzJyk7XG4gICAgICAgICAgICBsb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmkgLSBjcmVkZW50aWFsX3NvdXJjZSBpcyBFY3NDb250YWluZXJcIik7XG4gICAgICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4gcHJvcGVydHlQcm92aWRlci5jaGFpbihmcm9tSHR0cChvcHRpb25zID8/IHt9KSwgZnJvbUNvbnRhaW5lck1ldGFkYXRhKG9wdGlvbnMpKSgpLnRoZW4oc2V0TmFtZWRQcm92aWRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIEVjMkluc3RhbmNlTWV0YWRhdGE6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmkgLSBjcmVkZW50aWFsX3NvdXJjZSBpcyBFYzJJbnN0YW5jZU1ldGFkYXRhXCIpO1xuICAgICAgICAgICAgY29uc3QgeyBmcm9tSW5zdGFuY2VNZXRhZGF0YSB9ID0gYXdhaXQgaW1wb3J0KCdAc21pdGh5L2NyZWRlbnRpYWwtcHJvdmlkZXItaW1kcycpO1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IGZyb21JbnN0YW5jZU1ldGFkYXRhKG9wdGlvbnMpKCkudGhlbihzZXROYW1lZFByb3ZpZGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgRW52aXJvbm1lbnQ6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmkgLSBjcmVkZW50aWFsX3NvdXJjZSBpcyBFbnZpcm9ubWVudFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHsgZnJvbUVudiB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLWVudicpO1xuICAgICAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IGZyb21FbnYob3B0aW9ucykoKS50aGVuKHNldE5hbWVkUHJvdmlkZXIpO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgaWYgKGNyZWRlbnRpYWxTb3VyY2UgaW4gc291cmNlUHJvdmlkZXJzTWFwKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VQcm92aWRlcnNNYXBbY3JlZGVudGlhbFNvdXJjZV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgcHJvcGVydHlQcm92aWRlci5DcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYFVuc3VwcG9ydGVkIGNyZWRlbnRpYWwgc291cmNlIGluIHByb2ZpbGUgJHtwcm9maWxlTmFtZX0uIEdvdCAke2NyZWRlbnRpYWxTb3VyY2V9LCBgICtcbiAgICAgICAgICAgIGBleHBlY3RlZCBFY3NDb250YWluZXIgb3IgRWMySW5zdGFuY2VNZXRhZGF0YSBvciBFbnZpcm9ubWVudC5gLCB7IGxvZ2dlciB9KTtcbiAgICB9XG59O1xuY29uc3Qgc2V0TmFtZWRQcm92aWRlciA9IChjcmVkcykgPT4gY2xpZW50LnNldENyZWRlbnRpYWxGZWF0dXJlKGNyZWRzLCBcIkNSRURFTlRJQUxTX1BST0ZJTEVfTkFNRURfUFJPVklERVJcIiwgXCJwXCIpO1xuXG5jb25zdCBpc0Fzc3VtZVJvbGVQcm9maWxlID0gKGFyZywgeyBwcm9maWxlID0gXCJkZWZhdWx0XCIsIGxvZ2dlciB9ID0ge30pID0+IHtcbiAgICByZXR1cm4gKEJvb2xlYW4oYXJnKSAmJlxuICAgICAgICB0eXBlb2YgYXJnID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHR5cGVvZiBhcmcucm9sZV9hcm4gPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgW1widW5kZWZpbmVkXCIsIFwic3RyaW5nXCJdLmluZGV4T2YodHlwZW9mIGFyZy5yb2xlX3Nlc3Npb25fbmFtZSkgPiAtMSAmJlxuICAgICAgICBbXCJ1bmRlZmluZWRcIiwgXCJzdHJpbmdcIl0uaW5kZXhPZih0eXBlb2YgYXJnLmV4dGVybmFsX2lkKSA+IC0xICYmXG4gICAgICAgIFtcInVuZGVmaW5lZFwiLCBcInN0cmluZ1wiXS5pbmRleE9mKHR5cGVvZiBhcmcubWZhX3NlcmlhbCkgPiAtMSAmJlxuICAgICAgICAoaXNBc3N1bWVSb2xlV2l0aFNvdXJjZVByb2ZpbGUoYXJnLCB7IHByb2ZpbGUsIGxvZ2dlciB9KSB8fCBpc0NyZWRlbnRpYWxTb3VyY2VQcm9maWxlKGFyZywgeyBwcm9maWxlLCBsb2dnZXIgfSkpKTtcbn07XG5jb25zdCBpc0Fzc3VtZVJvbGVXaXRoU291cmNlUHJvZmlsZSA9IChhcmcsIHsgcHJvZmlsZSwgbG9nZ2VyIH0pID0+IHtcbiAgICBjb25zdCB3aXRoU291cmNlUHJvZmlsZSA9IHR5cGVvZiBhcmcuc291cmNlX3Byb2ZpbGUgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGFyZy5jcmVkZW50aWFsX3NvdXJjZSA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgICBpZiAod2l0aFNvdXJjZVByb2ZpbGUpIHtcbiAgICAgICAgbG9nZ2VyPy5kZWJ1Zz8uKGAgICAgJHtwcm9maWxlfSBpc0Fzc3VtZVJvbGVXaXRoU291cmNlUHJvZmlsZSBzb3VyY2VfcHJvZmlsZT0ke2FyZy5zb3VyY2VfcHJvZmlsZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHdpdGhTb3VyY2VQcm9maWxlO1xufTtcbmNvbnN0IGlzQ3JlZGVudGlhbFNvdXJjZVByb2ZpbGUgPSAoYXJnLCB7IHByb2ZpbGUsIGxvZ2dlciB9KSA9PiB7XG4gICAgY29uc3Qgd2l0aFByb3ZpZGVyUHJvZmlsZSA9IHR5cGVvZiBhcmcuY3JlZGVudGlhbF9zb3VyY2UgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIGFyZy5zb3VyY2VfcHJvZmlsZSA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgICBpZiAod2l0aFByb3ZpZGVyUHJvZmlsZSkge1xuICAgICAgICBsb2dnZXI/LmRlYnVnPy4oYCAgICAke3Byb2ZpbGV9IGlzQ3JlZGVudGlhbFNvdXJjZVByb2ZpbGUgY3JlZGVudGlhbF9zb3VyY2U9JHthcmcuY3JlZGVudGlhbF9zb3VyY2V9YCk7XG4gICAgfVxuICAgIHJldHVybiB3aXRoUHJvdmlkZXJQcm9maWxlO1xufTtcbmNvbnN0IHJlc29sdmVBc3N1bWVSb2xlQ3JlZGVudGlhbHMgPSBhc3luYyAocHJvZmlsZU5hbWUsIHByb2ZpbGVzLCBvcHRpb25zLCB2aXNpdGVkUHJvZmlsZXMgPSB7fSwgcmVzb2x2ZVByb2ZpbGVEYXRhKSA9PiB7XG4gICAgb3B0aW9ucy5sb2dnZXI/LmRlYnVnKFwiQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmkgLSByZXNvbHZlQXNzdW1lUm9sZUNyZWRlbnRpYWxzIChTVFMpXCIpO1xuICAgIGNvbnN0IHByb2ZpbGVEYXRhID0gcHJvZmlsZXNbcHJvZmlsZU5hbWVdO1xuICAgIGNvbnN0IHsgc291cmNlX3Byb2ZpbGUsIHJlZ2lvbiB9ID0gcHJvZmlsZURhdGE7XG4gICAgaWYgKCFvcHRpb25zLnJvbGVBc3N1bWVyKSB7XG4gICAgICAgIGNvbnN0IHsgZ2V0RGVmYXVsdFJvbGVBc3N1bWVyIH0gPSBhd2FpdCBpbXBvcnQoJ0Bhd3Mtc2RrL25lc3RlZC1jbGllbnRzL3N0cycpO1xuICAgICAgICBvcHRpb25zLnJvbGVBc3N1bWVyID0gZ2V0RGVmYXVsdFJvbGVBc3N1bWVyKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMuY2xpZW50Q29uZmlnLFxuICAgICAgICAgICAgY3JlZGVudGlhbFByb3ZpZGVyTG9nZ2VyOiBvcHRpb25zLmxvZ2dlcixcbiAgICAgICAgICAgIHBhcmVudENsaWVudENvbmZpZzoge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnM/LnBhcmVudENsaWVudENvbmZpZyxcbiAgICAgICAgICAgICAgICByZWdpb246IHJlZ2lvbiA/PyBvcHRpb25zPy5wYXJlbnRDbGllbnRDb25maWc/LnJlZ2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sIG9wdGlvbnMuY2xpZW50UGx1Z2lucyk7XG4gICAgfVxuICAgIGlmIChzb3VyY2VfcHJvZmlsZSAmJiBzb3VyY2VfcHJvZmlsZSBpbiB2aXNpdGVkUHJvZmlsZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IHByb3BlcnR5UHJvdmlkZXIuQ3JlZGVudGlhbHNQcm92aWRlckVycm9yKGBEZXRlY3RlZCBhIGN5Y2xlIGF0dGVtcHRpbmcgdG8gcmVzb2x2ZSBjcmVkZW50aWFscyBmb3IgcHJvZmlsZWAgK1xuICAgICAgICAgICAgYCAke3NoYXJlZEluaUZpbGVMb2FkZXIuZ2V0UHJvZmlsZU5hbWUob3B0aW9ucyl9LiBQcm9maWxlcyB2aXNpdGVkOiBgICtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZpc2l0ZWRQcm9maWxlcykuam9pbihcIiwgXCIpLCB7IGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgfSk7XG4gICAgfVxuICAgIG9wdGlvbnMubG9nZ2VyPy5kZWJ1ZyhgQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1pbmkgLSBmaW5kaW5nIGNyZWRlbnRpYWwgcmVzb2x2ZXIgdXNpbmcgJHtzb3VyY2VfcHJvZmlsZSA/IGBzb3VyY2VfcHJvZmlsZT1bJHtzb3VyY2VfcHJvZmlsZX1dYCA6IGBwcm9maWxlPVske3Byb2ZpbGVOYW1lfV1gfWApO1xuICAgIGNvbnN0IHNvdXJjZUNyZWRzUHJvdmlkZXIgPSBzb3VyY2VfcHJvZmlsZVxuICAgICAgICA/IHJlc29sdmVQcm9maWxlRGF0YShzb3VyY2VfcHJvZmlsZSwgcHJvZmlsZXMsIG9wdGlvbnMsIHtcbiAgICAgICAgICAgIC4uLnZpc2l0ZWRQcm9maWxlcyxcbiAgICAgICAgICAgIFtzb3VyY2VfcHJvZmlsZV06IHRydWUsXG4gICAgICAgIH0sIGlzQ3JlZGVudGlhbFNvdXJjZVdpdGhvdXRSb2xlQXJuKHByb2ZpbGVzW3NvdXJjZV9wcm9maWxlXSA/PyB7fSkpXG4gICAgICAgIDogKGF3YWl0IHJlc29sdmVDcmVkZW50aWFsU291cmNlKHByb2ZpbGVEYXRhLmNyZWRlbnRpYWxfc291cmNlLCBwcm9maWxlTmFtZSwgb3B0aW9ucy5sb2dnZXIpKG9wdGlvbnMpKSgpO1xuICAgIGlmIChpc0NyZWRlbnRpYWxTb3VyY2VXaXRob3V0Um9sZUFybihwcm9maWxlRGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHNvdXJjZUNyZWRzUHJvdmlkZXIudGhlbigoY3JlZHMpID0+IGNsaWVudC5zZXRDcmVkZW50aWFsRmVhdHVyZShjcmVkcywgXCJDUkVERU5USUFMU19QUk9GSUxFX1NPVVJDRV9QUk9GSUxFXCIsIFwib1wiKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBSb2xlQXJuOiBwcm9maWxlRGF0YS5yb2xlX2FybixcbiAgICAgICAgICAgIFJvbGVTZXNzaW9uTmFtZTogcHJvZmlsZURhdGEucm9sZV9zZXNzaW9uX25hbWUgfHwgYGF3cy1zZGstanMtJHtEYXRlLm5vdygpfWAsXG4gICAgICAgICAgICBFeHRlcm5hbElkOiBwcm9maWxlRGF0YS5leHRlcm5hbF9pZCxcbiAgICAgICAgICAgIER1cmF0aW9uU2Vjb25kczogcGFyc2VJbnQocHJvZmlsZURhdGEuZHVyYXRpb25fc2Vjb25kcyB8fCBcIjM2MDBcIiwgMTApLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB7IG1mYV9zZXJpYWwgfSA9IHByb2ZpbGVEYXRhO1xuICAgICAgICBpZiAobWZhX3NlcmlhbCkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLm1mYUNvZGVQcm92aWRlcikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBwcm9wZXJ0eVByb3ZpZGVyLkNyZWRlbnRpYWxzUHJvdmlkZXJFcnJvcihgUHJvZmlsZSAke3Byb2ZpbGVOYW1lfSByZXF1aXJlcyBtdWx0aS1mYWN0b3IgYXV0aGVudGljYXRpb24sIGJ1dCBubyBNRkEgY29kZSBjYWxsYmFjayB3YXMgcHJvdmlkZWQuYCwgeyBsb2dnZXI6IG9wdGlvbnMubG9nZ2VyLCB0cnlOZXh0TGluazogZmFsc2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJhbXMuU2VyaWFsTnVtYmVyID0gbWZhX3NlcmlhbDtcbiAgICAgICAgICAgIHBhcmFtcy5Ub2tlbkNvZGUgPSBhd2FpdCBvcHRpb25zLm1mYUNvZGVQcm92aWRlcihtZmFfc2VyaWFsKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3VyY2VDcmVkcyA9IGF3YWl0IHNvdXJjZUNyZWRzUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnJvbGVBc3N1bWVyKHNvdXJjZUNyZWRzLCBwYXJhbXMpLnRoZW4oKGNyZWRzKSA9PiBjbGllbnQuc2V0Q3JlZGVudGlhbEZlYXR1cmUoY3JlZHMsIFwiQ1JFREVOVElBTFNfUFJPRklMRV9TT1VSQ0VfUFJPRklMRVwiLCBcIm9cIikpO1xuICAgIH1cbn07XG5jb25zdCBpc0NyZWRlbnRpYWxTb3VyY2VXaXRob3V0Um9sZUFybiA9IChzZWN0aW9uKSA9PiB7XG4gICAgcmV0dXJuICFzZWN0aW9uLnJvbGVfYXJuICYmICEhc2VjdGlvbi5jcmVkZW50aWFsX3NvdXJjZTtcbn07XG5cbmNvbnN0IGlzTG9naW5Qcm9maWxlID0gKGRhdGEpID0+IHtcbiAgICByZXR1cm4gQm9vbGVhbihkYXRhICYmIGRhdGEubG9naW5fc2Vzc2lvbik7XG59O1xuY29uc3QgcmVzb2x2ZUxvZ2luQ3JlZGVudGlhbHMgPSBhc3luYyAocHJvZmlsZU5hbWUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IGNyZWRlbnRpYWxQcm92aWRlckxvZ2luLmZyb21Mb2dpbkNyZWRlbnRpYWxzKHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgcHJvZmlsZTogcHJvZmlsZU5hbWUsXG4gICAgfSkoKTtcbiAgICByZXR1cm4gY2xpZW50LnNldENyZWRlbnRpYWxGZWF0dXJlKGNyZWRlbnRpYWxzLCBcIkNSRURFTlRJQUxTX1BST0ZJTEVfTE9HSU5cIiwgXCJBQ1wiKTtcbn07XG5cbmNvbnN0IGlzUHJvY2Vzc1Byb2ZpbGUgPSAoYXJnKSA9PiBCb29sZWFuKGFyZykgJiYgdHlwZW9mIGFyZyA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgYXJnLmNyZWRlbnRpYWxfcHJvY2VzcyA9PT0gXCJzdHJpbmdcIjtcbmNvbnN0IHJlc29sdmVQcm9jZXNzQ3JlZGVudGlhbHMgPSBhc3luYyAob3B0aW9ucywgcHJvZmlsZSkgPT4gaW1wb3J0KCdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLXByb2Nlc3MnKS50aGVuKCh7IGZyb21Qcm9jZXNzIH0pID0+IGZyb21Qcm9jZXNzKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHByb2ZpbGUsXG59KSgpLnRoZW4oKGNyZWRzKSA9PiBjbGllbnQuc2V0Q3JlZGVudGlhbEZlYXR1cmUoY3JlZHMsIFwiQ1JFREVOVElBTFNfUFJPRklMRV9QUk9DRVNTXCIsIFwidlwiKSkpO1xuXG5jb25zdCByZXNvbHZlU3NvQ3JlZGVudGlhbHMgPSBhc3luYyAocHJvZmlsZSwgcHJvZmlsZURhdGEsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgZnJvbVNTTyB9ID0gYXdhaXQgaW1wb3J0KCdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLXNzbycpO1xuICAgIHJldHVybiBmcm9tU1NPKHtcbiAgICAgICAgcHJvZmlsZSxcbiAgICAgICAgbG9nZ2VyOiBvcHRpb25zLmxvZ2dlcixcbiAgICAgICAgcGFyZW50Q2xpZW50Q29uZmlnOiBvcHRpb25zLnBhcmVudENsaWVudENvbmZpZyxcbiAgICAgICAgY2xpZW50Q29uZmlnOiBvcHRpb25zLmNsaWVudENvbmZpZyxcbiAgICB9KSgpLnRoZW4oKGNyZWRzKSA9PiB7XG4gICAgICAgIGlmIChwcm9maWxlRGF0YS5zc29fc2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIGNsaWVudC5zZXRDcmVkZW50aWFsRmVhdHVyZShjcmVkcywgXCJDUkVERU5USUFMU19QUk9GSUxFX1NTT1wiLCBcInJcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY2xpZW50LnNldENyZWRlbnRpYWxGZWF0dXJlKGNyZWRzLCBcIkNSRURFTlRJQUxTX1BST0ZJTEVfU1NPX0xFR0FDWVwiLCBcInRcIik7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5jb25zdCBpc1Nzb1Byb2ZpbGUgPSAoYXJnKSA9PiBhcmcgJiZcbiAgICAodHlwZW9mIGFyZy5zc29fc3RhcnRfdXJsID09PSBcInN0cmluZ1wiIHx8XG4gICAgICAgIHR5cGVvZiBhcmcuc3NvX2FjY291bnRfaWQgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgdHlwZW9mIGFyZy5zc29fc2Vzc2lvbiA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgICB0eXBlb2YgYXJnLnNzb19yZWdpb24gPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgdHlwZW9mIGFyZy5zc29fcm9sZV9uYW1lID09PSBcInN0cmluZ1wiKTtcblxuY29uc3QgaXNTdGF0aWNDcmVkc1Byb2ZpbGUgPSAoYXJnKSA9PiBCb29sZWFuKGFyZykgJiZcbiAgICB0eXBlb2YgYXJnID09PSBcIm9iamVjdFwiICYmXG4gICAgdHlwZW9mIGFyZy5hd3NfYWNjZXNzX2tleV9pZCA9PT0gXCJzdHJpbmdcIiAmJlxuICAgIHR5cGVvZiBhcmcuYXdzX3NlY3JldF9hY2Nlc3Nfa2V5ID09PSBcInN0cmluZ1wiICYmXG4gICAgW1widW5kZWZpbmVkXCIsIFwic3RyaW5nXCJdLmluZGV4T2YodHlwZW9mIGFyZy5hd3Nfc2Vzc2lvbl90b2tlbikgPiAtMSAmJlxuICAgIFtcInVuZGVmaW5lZFwiLCBcInN0cmluZ1wiXS5pbmRleE9mKHR5cGVvZiBhcmcuYXdzX2FjY291bnRfaWQpID4gLTE7XG5jb25zdCByZXNvbHZlU3RhdGljQ3JlZGVudGlhbHMgPSBhc3luYyAocHJvZmlsZSwgb3B0aW9ucykgPT4ge1xuICAgIG9wdGlvbnM/LmxvZ2dlcj8uZGVidWcoXCJAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLWluaSAtIHJlc29sdmVTdGF0aWNDcmVkZW50aWFsc1wiKTtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IHtcbiAgICAgICAgYWNjZXNzS2V5SWQ6IHByb2ZpbGUuYXdzX2FjY2Vzc19rZXlfaWQsXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvZmlsZS5hd3Nfc2VjcmV0X2FjY2Vzc19rZXksXG4gICAgICAgIHNlc3Npb25Ub2tlbjogcHJvZmlsZS5hd3Nfc2Vzc2lvbl90b2tlbixcbiAgICAgICAgLi4uKHByb2ZpbGUuYXdzX2NyZWRlbnRpYWxfc2NvcGUgJiYgeyBjcmVkZW50aWFsU2NvcGU6IHByb2ZpbGUuYXdzX2NyZWRlbnRpYWxfc2NvcGUgfSksXG4gICAgICAgIC4uLihwcm9maWxlLmF3c19hY2NvdW50X2lkICYmIHsgYWNjb3VudElkOiBwcm9maWxlLmF3c19hY2NvdW50X2lkIH0pLFxuICAgIH07XG4gICAgcmV0dXJuIGNsaWVudC5zZXRDcmVkZW50aWFsRmVhdHVyZShjcmVkZW50aWFscywgXCJDUkVERU5USUFMU19QUk9GSUxFXCIsIFwiblwiKTtcbn07XG5cbmNvbnN0IGlzV2ViSWRlbnRpdHlQcm9maWxlID0gKGFyZykgPT4gQm9vbGVhbihhcmcpICYmXG4gICAgdHlwZW9mIGFyZyA9PT0gXCJvYmplY3RcIiAmJlxuICAgIHR5cGVvZiBhcmcud2ViX2lkZW50aXR5X3Rva2VuX2ZpbGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICB0eXBlb2YgYXJnLnJvbGVfYXJuID09PSBcInN0cmluZ1wiICYmXG4gICAgW1widW5kZWZpbmVkXCIsIFwic3RyaW5nXCJdLmluZGV4T2YodHlwZW9mIGFyZy5yb2xlX3Nlc3Npb25fbmFtZSkgPiAtMTtcbmNvbnN0IHJlc29sdmVXZWJJZGVudGl0eUNyZWRlbnRpYWxzID0gYXN5bmMgKHByb2ZpbGUsIG9wdGlvbnMpID0+IGltcG9ydCgnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci13ZWItaWRlbnRpdHknKS50aGVuKCh7IGZyb21Ub2tlbkZpbGUgfSkgPT4gZnJvbVRva2VuRmlsZSh7XG4gICAgd2ViSWRlbnRpdHlUb2tlbkZpbGU6IHByb2ZpbGUud2ViX2lkZW50aXR5X3Rva2VuX2ZpbGUsXG4gICAgcm9sZUFybjogcHJvZmlsZS5yb2xlX2FybixcbiAgICByb2xlU2Vzc2lvbk5hbWU6IHByb2ZpbGUucm9sZV9zZXNzaW9uX25hbWUsXG4gICAgcm9sZUFzc3VtZXJXaXRoV2ViSWRlbnRpdHk6IG9wdGlvbnMucm9sZUFzc3VtZXJXaXRoV2ViSWRlbnRpdHksXG4gICAgbG9nZ2VyOiBvcHRpb25zLmxvZ2dlcixcbiAgICBwYXJlbnRDbGllbnRDb25maWc6IG9wdGlvbnMucGFyZW50Q2xpZW50Q29uZmlnLFxufSkoKS50aGVuKChjcmVkcykgPT4gY2xpZW50LnNldENyZWRlbnRpYWxGZWF0dXJlKGNyZWRzLCBcIkNSRURFTlRJQUxTX1BST0ZJTEVfU1RTX1dFQl9JRF9UT0tFTlwiLCBcInFcIikpKTtcblxuY29uc3QgcmVzb2x2ZVByb2ZpbGVEYXRhID0gYXN5bmMgKHByb2ZpbGVOYW1lLCBwcm9maWxlcywgb3B0aW9ucywgdmlzaXRlZFByb2ZpbGVzID0ge30sIGlzQXNzdW1lUm9sZVJlY3Vyc2l2ZUNhbGwgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBwcm9maWxlc1twcm9maWxlTmFtZV07XG4gICAgaWYgKE9iamVjdC5rZXlzKHZpc2l0ZWRQcm9maWxlcykubGVuZ3RoID4gMCAmJiBpc1N0YXRpY0NyZWRzUHJvZmlsZShkYXRhKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVN0YXRpY0NyZWRlbnRpYWxzKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoaXNBc3N1bWVSb2xlUmVjdXJzaXZlQ2FsbCB8fCBpc0Fzc3VtZVJvbGVQcm9maWxlKGRhdGEsIHsgcHJvZmlsZTogcHJvZmlsZU5hbWUsIGxvZ2dlcjogb3B0aW9ucy5sb2dnZXIgfSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVBc3N1bWVSb2xlQ3JlZGVudGlhbHMocHJvZmlsZU5hbWUsIHByb2ZpbGVzLCBvcHRpb25zLCB2aXNpdGVkUHJvZmlsZXMsIHJlc29sdmVQcm9maWxlRGF0YSk7XG4gICAgfVxuICAgIGlmIChpc1N0YXRpY0NyZWRzUHJvZmlsZShkYXRhKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVN0YXRpY0NyZWRlbnRpYWxzKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoaXNXZWJJZGVudGl0eVByb2ZpbGUoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVXZWJJZGVudGl0eUNyZWRlbnRpYWxzKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoaXNQcm9jZXNzUHJvZmlsZShkYXRhKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZVByb2Nlc3NDcmVkZW50aWFscyhvcHRpb25zLCBwcm9maWxlTmFtZSk7XG4gICAgfVxuICAgIGlmIChpc1Nzb1Byb2ZpbGUoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlc29sdmVTc29DcmVkZW50aWFscyhwcm9maWxlTmFtZSwgZGF0YSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChpc0xvZ2luUHJvZmlsZShkYXRhKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUxvZ2luQ3JlZGVudGlhbHMocHJvZmlsZU5hbWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgcHJvcGVydHlQcm92aWRlci5DcmVkZW50aWFsc1Byb3ZpZGVyRXJyb3IoYENvdWxkIG5vdCByZXNvbHZlIGNyZWRlbnRpYWxzIHVzaW5nIHByb2ZpbGU6IFske3Byb2ZpbGVOYW1lfV0gaW4gY29uZmlndXJhdGlvbi9jcmVkZW50aWFscyBmaWxlKHMpLmAsIHsgbG9nZ2VyOiBvcHRpb25zLmxvZ2dlciB9KTtcbn07XG5cbmNvbnN0IGZyb21JbmkgPSAoX2luaXQgPSB7fSkgPT4gYXN5bmMgKHsgY2FsbGVyQ2xpZW50Q29uZmlnIH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IGluaXQgPSB7XG4gICAgICAgIC4uLl9pbml0LFxuICAgICAgICBwYXJlbnRDbGllbnRDb25maWc6IHtcbiAgICAgICAgICAgIC4uLmNhbGxlckNsaWVudENvbmZpZyxcbiAgICAgICAgICAgIC4uLl9pbml0LnBhcmVudENsaWVudENvbmZpZyxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGluaXQubG9nZ2VyPy5kZWJ1ZyhcIkBhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItaW5pIC0gZnJvbUluaVwiKTtcbiAgICBjb25zdCBwcm9maWxlcyA9IGF3YWl0IHNoYXJlZEluaUZpbGVMb2FkZXIucGFyc2VLbm93bkZpbGVzKGluaXQpO1xuICAgIHJldHVybiByZXNvbHZlUHJvZmlsZURhdGEoc2hhcmVkSW5pRmlsZUxvYWRlci5nZXRQcm9maWxlTmFtZSh7XG4gICAgICAgIHByb2ZpbGU6IF9pbml0LnByb2ZpbGUgPz8gY2FsbGVyQ2xpZW50Q29uZmlnPy5wcm9maWxlLFxuICAgIH0pLCBwcm9maWxlcywgaW5pdCk7XG59O1xuXG5leHBvcnRzLmZyb21JbmkgPSBmcm9tSW5pO1xuIgogIF0sCiAgIm1hcHBpbmdzIjogInFTQUVBLEZBQUksQUFDQSxBQUNBLEFBQ0EsQUFDQSxtQkFDQSxlQUNBLGVBQ0EsaUJBRUosTUFBTSxDQUF3QixDQUMxQixZQUNBLEtBQ0EseUJBQ08sbUJBQW9CLE9B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QUFDLFlBQWEsUUFBUSxFQUFFLFFBQVEsT0FBTyxFQUFJLGlCQUFpQixFQUFJLEdBQzlELEdBQWdDLE1BQU8sRUFBUyxJQUFtQiw4QkFBNkMsS0FBSyxFQUFHLG1CQUFvQixFQUFjLENBQzVKLHFCQUFzQixFQUFRLHdCQUM5QixRQUFTLEVBQVEsU0FDakIsZ0JBQWlCLEVBQVEsa0JBQ3pCLDJCQUE0QixFQUFRLDJCQUNwQyxPQUFRLEVBQVEsT0FDaEIsbUJBQW9CLEVBQVEsa0JBQ2hDLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFVLEVBQU8scUJBQXFCLEVBQU8sdUNBQXdDLEdBQUcsQ0FBQyxDQUFDLEVBRS9GLEVBQXFCLE1BQU8sRUFBYSxFQUFVLEVBQVMsRUFBa0IsQ0FBQyxFQUFHLEVBQTRCLEtBQVUsQ0FDMUgsSUFBTSxFQUFPLEVBQVMsR0FDdEIsR0FBSSxPQUFPLEtBQUssQ0FBZSxFQUFFLE9BQVMsR0FBSyxFQUFxQixDQUFJLEVBQ3BFLE9BQU8sRUFBeUIsRUFBTSxDQUFPLEVBRWpELEdBQUksR0FBNkIsRUFBb0IsRUFBTSxDQUFFLFFBQVMsRUFBYSxPQUFRLEVBQVEsTUFBTyxDQUFDLEVBQ3ZHLE9BQU8sR0FBNkIsRUFBYSxFQUFVLEVBQVMsRUFBaUIsQ0FBa0IsRUFFM0csR0FBSSxFQUFxQixDQUFJLEVBQ3pCLE9BQU8sRUFBeUIsRUFBTSxDQUFPLEVBRWpELEdBQUksR0FBcUIsQ0FBSSxFQUN6QixPQUFPLEdBQThCLEVBQU0sQ0FBTyxFQUV0RCxHQUFJLEdBQWlCLENBQUksRUFDckIsT0FBTyxHQUEwQixFQUFTLENBQVcsRUFFekQsR0FBSSxHQUFhLENBQUksRUFDakIsT0FBTyxNQUFNLEdBQXNCLEVBQWEsRUFBTSxDQUFPLEVBRWpFLEdBQUksR0FBZSxDQUFJLEVBQ25CLE9BQU8sR0FBd0IsRUFBYSxDQUFPLEVBRXZELE1BQU0sSUFBSSxFQUFpQix5QkFBeUIsaURBQWlELDJDQUFzRCxDQUFFLE9BQVEsRUFBUSxNQUFPLENBQUMsR0FHbkwsR0FBVSxDQUFDLEVBQVEsQ0FBQyxJQUFNLE9BQVMsc0JBQXVCLENBQUMsSUFBTSxDQUNuRSxJQUFNLEVBQU8sSUFDTixFQUNILG1CQUFvQixJQUNiLEtBQ0EsRUFBTSxrQkFDYixDQUNKLEVBQ0EsRUFBSyxRQUFRLE1BQU0sNENBQTRDLEVBQy9ELElBQU0sRUFBVyxNQUFNLEVBQW9CLGdCQUFnQixDQUFJLEVBQy9ELE9BQU8sRUFBbUIsRUFBb0IsZUFBZSxDQUN6RCxRQUFTLEVBQU0sU0FBVyxHQUFvQixPQUNsRCxDQUFDLEVBQUcsRUFBVSxDQUFJLEdBR2QsaUJBL05KLE1BQ0EsTUFDQSxNQUNBLE1BNE5JLEdBQVUiLAogICJkZWJ1Z0lkIjogIjFCNTBBRjM3QTI4Rjg1NTM2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|