@discordeno/gateway 19.0.0-next.f6bd769 → 19.0.0-next.fbd26f4

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/manager.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import type { Camelize, DiscordGetGatewayBot } from '@discordeno/types';
1
+ import type { AtLeastOne, BigString, Camelize, DiscordGetGatewayBot, DiscordMember, RequestGuildMembers } from '@discordeno/types';
2
2
  import type { LeakyBucket } from '@discordeno/utils';
3
+ import { Collection } from '@discordeno/utils';
3
4
  import Shard from './Shard.js';
4
- import type { ShardEvents } from './types.js';
5
+ import type { ShardEvents, StatusUpdate, UpdateVoiceState } from './types.js';
5
6
  export declare function createGatewayManager(options: CreateGatewayManagerOptions): GatewayManager;
6
7
  export interface CreateGatewayManagerOptions {
7
8
  /**
@@ -78,6 +79,18 @@ export interface CreateGatewayManagerOptions {
78
79
  version?: number;
79
80
  /** The events handlers */
80
81
  events: ShardEvents;
82
+ /** This managers cache related settings. */
83
+ cache?: {
84
+ requestMembers?: {
85
+ /**
86
+ * Whether or not request member requests should be cached.
87
+ * @default false
88
+ */
89
+ enabled?: boolean;
90
+ /** The pending requests. */
91
+ pending: Collection<string, RequestMemberRequest>;
92
+ };
93
+ };
81
94
  }
82
95
  export interface GatewayManager extends Required<CreateGatewayManagerOptions> {
83
96
  /** The max concurrency buckets. Those will be created when the `spawnShards` (which calls `prepareBuckets` under the hood) function gets called. */
@@ -108,5 +121,83 @@ export interface GatewayManager extends Required<CreateGatewayManagerOptions> {
108
121
  kill: (shardId: number) => Promise<void>;
109
122
  /** This function communicates with the parent manager, in order to know whether this manager is allowed to identify a new shard. */
110
123
  requestIdentify: () => Promise<void>;
124
+ /** Calculates the number of shards based on the guild id and total shards. */
125
+ calculateShardId: (guildId: BigString, totalShards?: number) => number;
126
+ /**
127
+ * Connects the bot user to a voice or stage channel.
128
+ *
129
+ * This function sends the _Update Voice State_ gateway command over the gateway behind the scenes.
130
+ *
131
+ * @param guildId - The ID of the guild the voice channel to leave is in.
132
+ * @param channelId - The ID of the channel you want to join.
133
+ *
134
+ * @remarks
135
+ * Requires the `CONNECT` permission.
136
+ *
137
+ * Fires a _Voice State Update_ gateway event.
138
+ *
139
+ * @see {@link https://discord.com/developers/docs/topics/gateway#update-voice-state}
140
+ */
141
+ connectToVoiceChannel: (guildId: BigString, channelId: BigString, options?: AtLeastOne<Omit<UpdateVoiceState, 'guildId' | 'channelId'>>) => Promise<void>;
142
+ /**
143
+ * Edits the bot status in all shards that this gateway manages.
144
+ *
145
+ * @param data The status data to set the bots status to.
146
+ * @returns Promise<void>
147
+ */
148
+ editBotStatus: (data: StatusUpdate) => Promise<void>;
149
+ /**
150
+ * Edits the bot's status on one shard.
151
+ *
152
+ * @param shardId The shard id to edit the status for.
153
+ * @param data The status data to set the bots status to.
154
+ * @returns Promise<void>
155
+ */
156
+ editShardStatus: (shardId: number, data: StatusUpdate) => Promise<void>;
157
+ /**
158
+ * Fetches the list of members for a guild over the gateway.
159
+ *
160
+ * @param guildId - The ID of the guild to get the list of members for.
161
+ * @param options - The parameters for the fetching of the members.
162
+ *
163
+ * @remarks
164
+ * If requesting the entire member list:
165
+ * - Requires the `GUILD_MEMBERS` intent.
166
+ *
167
+ * If requesting presences ({@link RequestGuildMembers.presences | presences} set to `true`):
168
+ * - Requires the `GUILD_PRESENCES` intent.
169
+ *
170
+ * If requesting a prefix ({@link RequestGuildMembers.query | query} non-`undefined`):
171
+ * - Returns a maximum of 100 members.
172
+ *
173
+ * If requesting a users by ID ({@link RequestGuildMembers.userIds | userIds} non-`undefined`):
174
+ * - Returns a maximum of 100 members.
175
+ *
176
+ * Fires a _Guild Members Chunk_ gateway event for every 1000 members fetched.
177
+ *
178
+ * @see {@link https://discord.com/developers/docs/topics/gateway#request-guild-members}
179
+ */
180
+ requestMembers: (guildId: BigString, options?: Omit<RequestGuildMembers, 'guildId'>) => Promise<Camelize<DiscordMember[]>>;
181
+ /**
182
+ * Leaves the voice channel the bot user is currently in.
183
+ *
184
+ * This function sends the _Update Voice State_ gateway command over the gateway behind the scenes.
185
+ *
186
+ * @param guildId - The ID of the guild the voice channel to leave is in.
187
+ *
188
+ * @remarks
189
+ * Fires a _Voice State Update_ gateway event.
190
+ *
191
+ * @see {@link https://discord.com/developers/docs/topics/gateway#update-voice-state}
192
+ */
193
+ leaveVoiceChannel: (guildId: BigString) => Promise<void>;
194
+ }
195
+ export interface RequestMemberRequest {
196
+ /** The unique nonce for this request. */
197
+ nonce: string;
198
+ /** The resolver handler to run when all members arrive. */
199
+ resolve: (value: Camelize<DiscordMember[]> | PromiseLike<Camelize<DiscordMember[]>>) => void;
200
+ /** The members that have already arrived for this request. */
201
+ members: Camelize<DiscordMember[]>;
111
202
  }
112
203
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,CAqKzF;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oFAAoF;IACpF,UAAU,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,UAAU,CAAC,EAAE;QACX;;;WAGG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAA;QACf;;;WAGG;QACH,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ,CAAC,2BAA2B,CAAC;IAC3E,oJAAoJ;IACpJ,OAAO,EAAE,GAAG,CACV,MAAM,EACN;QACE,OAAO,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;QAC/C,IAAI,EAAE,WAAW,CAAA;KAClB,CACF,CAAA;IACD,mCAAmC;IACnC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1B,4EAA4E;IAC5E,oBAAoB,EAAE,MAAM,MAAM,CAAA;IAClC,gEAAgE;IAChE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;IAC9C,8EAA8E;IAC9E,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,wCAAwC;IACxC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzD,sLAAsL;IACtL,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5F,8HAA8H;IAC9H,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,4GAA4G;IAC5G,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,oIAAoI;IACpI,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
package/dist/manager.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createLeakyBucket as e,delay as t}from"@discordeno/utils";import r from"./Shard.js";export function createGatewayManager(s){s.connection||(s.connection={url:"wss://gateway.discord.gg",shards:1,sessionStartLimit:{maxConcurrency:1,remaining:1e3,total:1e3,resetAfter:864e5}});let o={events:s.events,compress:s.compress??!1,intents:s.intents??0,properties:{os:s.properties?.os??process.platform,browser:s.properties?.browser??"Discordeno",device:s.properties?.device??"Discordeno"},token:s.token,url:s.url??s.connection.url??"wss://gateway.discord.gg",version:s.version??10,connection:s.connection,totalShards:s.totalShards??s.connection.shards??1,lastShardId:s.lastShardId??0,firstShardId:s.firstShardId??0,totalWorkers:s.totalWorkers??4,shardsPerWorker:s.shardsPerWorker??25,spawnShardDelay:s.spawnShardDelay??5300,shards:new Map,buckets:new Map,calculateTotalShards:()=>o.totalShards<100?o.totalShards:Math.ceil(o.totalShards/(1===o.connection.sessionStartLimit.maxConcurrency?16:o.connection.sessionStartLimit.maxConcurrency))*o.connection.sessionStartLimit.maxConcurrency,calculateWorkerId(e){let t=Math.floor(e/o.shardsPerWorker);return t>=o.totalWorkers&&(t=o.totalWorkers-1),t},prepareBuckets(){for(let t=0;t<o.connection.sessionStartLimit.maxConcurrency;++t)o.buckets.set(t,{workers:[],leak:e({max:1,refillAmount:1,refillInterval:o.spawnShardDelay})});for(let r=o.firstShardId;r<=o.lastShardId;++r){if(r>=o.totalShards)throw Error(`Shard (id: ${r}) is bigger or equal to the used amount of used shards which is ${o.totalShards}`);let s=r%o.connection.sessionStartLimit.maxConcurrency,a=o.buckets.get(s);if(null==a)throw Error(`Shard (id: ${r}) got assigned to an illegal bucket id: ${s}, expected a bucket id between 0 and ${o.connection.sessionStartLimit.maxConcurrency-1}`);let n=o.calculateWorkerId(r),i=a.workers.find(e=>e.id===n);i?i.queue.push(r):a.workers.push({id:n,queue:[r]})}},async spawnShards(){o.prepareBuckets(),await Promise.all([...o.buckets.entries()].map(async([e,t])=>{for(let r of t.workers)for(let s of r.queue)await o.tellWorkerToIdentify(r.id,s,e)}))},async shutdown(e,r){o.shards.forEach(t=>t.close(e,r)),await t(5e3)},tellWorkerToIdentify:async(e,t,r)=>await o.identify(t),async identify(e){let t=this.shards.get(e);return t||(t=new r({id:e,connection:{compress:this.compress,intents:this.intents,properties:this.properties,token:this.token,totalShards:this.totalShards,url:this.url,version:this.version},events:s.events}),this.shards.set(e,t)),await t.identify()},async kill(e){let t=this.shards.get(e);if(t)return this.shards.delete(e),await t.shutdown()},async requestIdentify(){}};return o}
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FtZWxpemUsIERpc2NvcmRHZXRHYXRld2F5Qm90IH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IExlYWt5QnVja2V0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5pbXBvcnQgeyBjcmVhdGVMZWFreUJ1Y2tldCwgZGVsYXkgfSBmcm9tICdAZGlzY29yZGVuby91dGlscydcbmltcG9ydCBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuaW1wb3J0IHR5cGUgeyBTaGFyZEV2ZW50cyB9IGZyb20gJy4vdHlwZXMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHYXRld2F5TWFuYWdlcihvcHRpb25zOiBDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnMpOiBHYXRld2F5TWFuYWdlciB7XG4gIGlmICghb3B0aW9ucy5jb25uZWN0aW9uKSB7XG4gICAgb3B0aW9ucy5jb25uZWN0aW9uID0ge1xuICAgICAgdXJsOiAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJyxcbiAgICAgIHNoYXJkczogMSxcbiAgICAgIHNlc3Npb25TdGFydExpbWl0OiB7XG4gICAgICAgIG1heENvbmN1cnJlbmN5OiAxLFxuICAgICAgICByZW1haW5pbmc6IDEwMDAsXG4gICAgICAgIHRvdGFsOiAxMDAwLFxuICAgICAgICByZXNldEFmdGVyOiAxMDAwICogNjAgKiA2MCAqIDI0LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBjb25zdCBnYXRld2F5OiBHYXRld2F5TWFuYWdlciA9IHtcbiAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzLFxuICAgIGNvbXByZXNzOiBvcHRpb25zLmNvbXByZXNzID8/IGZhbHNlLFxuICAgIGludGVudHM6IG9wdGlvbnMuaW50ZW50cyA/PyAwLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIG9zOiBvcHRpb25zLnByb3BlcnRpZXM/Lm9zID8/IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgICBicm93c2VyOiBvcHRpb25zLnByb3BlcnRpZXM/LmJyb3dzZXIgPz8gJ0Rpc2NvcmRlbm8nLFxuICAgICAgZGV2aWNlOiBvcHRpb25zLnByb3BlcnRpZXM/LmRldmljZSA/PyAnRGlzY29yZGVubycsXG4gICAgfSxcbiAgICB0b2tlbjogb3B0aW9ucy50b2tlbixcbiAgICB1cmw6IG9wdGlvbnMudXJsID8/IG9wdGlvbnMuY29ubmVjdGlvbi51cmwgPz8gJ3dzczovL2dhdGV3YXkuZGlzY29yZC5nZycsXG4gICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IDEwLFxuICAgIGNvbm5lY3Rpb246IG9wdGlvbnMuY29ubmVjdGlvbixcbiAgICB0b3RhbFNoYXJkczogb3B0aW9ucy50b3RhbFNoYXJkcyA/PyBvcHRpb25zLmNvbm5lY3Rpb24uc2hhcmRzID8/IDEsXG4gICAgbGFzdFNoYXJkSWQ6IG9wdGlvbnMubGFzdFNoYXJkSWQgPz8gMCxcbiAgICBmaXJzdFNoYXJkSWQ6IG9wdGlvbnMuZmlyc3RTaGFyZElkID8/IDAsXG4gICAgdG90YWxXb3JrZXJzOiBvcHRpb25zLnRvdGFsV29ya2VycyA/PyA0LFxuICAgIHNoYXJkc1Blcldvcmtlcjogb3B0aW9ucy5zaGFyZHNQZXJXb3JrZXIgPz8gMjUsXG4gICAgc3Bhd25TaGFyZERlbGF5OiBvcHRpb25zLnNwYXduU2hhcmREZWxheSA/PyA1MzAwLFxuICAgIHNoYXJkczogbmV3IE1hcCgpLFxuICAgIGJ1Y2tldHM6IG5ldyBNYXAoKSxcblxuICAgIGNhbGN1bGF0ZVRvdGFsU2hhcmRzKCkge1xuICAgICAgLy8gQm90cyB1bmRlciAxMDBrIHNlcnZlcnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRvdGFsIHNoYXJkcy5cbiAgICAgIGlmIChnYXRld2F5LnRvdGFsU2hhcmRzIDwgMTAwKSByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuXG4gICAgICAvLyBDYWxjdWxhdGUgYSBtdWx0aXBsZSBvZiBgbWF4Q29uY3VycmVuY3lgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBNYXRoLmNlaWwoXG4gICAgICAgICAgZ2F0ZXdheS50b3RhbFNoYXJkcyAvXG4gICAgICAgICAgICAvLyBJZiBgbWF4Q29uY3VycmVuY3lgIGlzIDEgd2UgY2FuIHNhZmVseSB1c2UgMTYuXG4gICAgICAgICAgICAoZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5ID09PSAxID8gMTYgOiBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpLFxuICAgICAgICApICogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICApXG4gICAgfSxcbiAgICBjYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKSB7XG4gICAgICAvLyBJZ25vcmUgZGVjaW1hbCBudW1iZXJzLlxuICAgICAgbGV0IHdvcmtlcklkID0gTWF0aC5mbG9vcihzaGFyZElkIC8gZ2F0ZXdheS5zaGFyZHNQZXJXb3JrZXIpXG4gICAgICAvLyBJZiB0aGUgd29ya2VySWQgb3ZlcmZsb3dzIHRoZSBtYXhpbWFsIGFsbG93ZWQgd29ya2VycyB3ZSBieSBkZWZhdWx0IGp1c3QgdXNlIHRvIGxhc3Qgd29ya2VyLlxuICAgICAgaWYgKHdvcmtlcklkID49IGdhdGV3YXkudG90YWxXb3JrZXJzKSB7XG4gICAgICAgIC8vIFRoZSBJZCBvZiB0aGUgbGFzdCBhdmFpbGFibGUgd29ya2VyIGlzIHRvdGFsIC0xXG4gICAgICAgIHdvcmtlcklkID0gZ2F0ZXdheS50b3RhbFdvcmtlcnMgLSAxXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3b3JrZXJJZFxuICAgIH0sXG4gICAgcHJlcGFyZUJ1Y2tldHMoKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeTsgKytpKSB7XG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGxlYWs6IGNyZWF0ZUxlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgbnVtYmVyIHdoaWNoIGlzIHByb3ZlbiB0byBiZSB3b3JraW5nIGRvbnQgY2hhbmdlXG4gICAgICAgICAgICByZWZpbGxJbnRlcnZhbDogZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9SR0FOSVpFIEFMTCBTSEFSRFMgSU5UTyBUSEVJUiBPV04gQlVDS0VUU1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBpZiAoc2hhcmRJZCA+PSBnYXRld2F5LnRvdGFsU2hhcmRzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIGlzIGJpZ2dlciBvciBlcXVhbCB0byB0aGUgdXNlZCBhbW91bnQgb2YgdXNlZCBzaGFyZHMgd2hpY2ggaXMgJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWNrZXRJZCA9IHNoYXJkSWQgJSBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3lcbiAgICAgICAgY29uc3QgYnVja2V0ID0gZ2F0ZXdheS5idWNrZXRzLmdldChidWNrZXRJZClcbiAgICAgICAgaWYgKGJ1Y2tldCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNoYXJkIChpZDogJHtzaGFyZElkfSkgZ290IGFzc2lnbmVkIHRvIGFuIGlsbGVnYWwgYnVja2V0IGlkOiAke2J1Y2tldElkfSwgZXhwZWN0ZWQgYSBidWNrZXQgaWQgYmV0d2VlbiAwIGFuZCAke1xuICAgICAgICAgICAgICBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgLSAxXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGSU5EIEEgUVVFVUUgSU4gVEhJUyBCVUNLRVQgVEhBVCBIQVMgU1BBQ0VcbiAgICAgICAgLy8gY29uc3Qgd29ya2VyID0gYnVja2V0LndvcmtlcnMuZmluZCgodykgPT4gdy5xdWV1ZS5sZW5ndGggPCBnYXRld2F5LnNoYXJkc1Blcldvcmtlcik7XG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIC8vIElGIFRIRSBRVUVVRSBIQVMgU1BBQ0UgSlVTVCBBREQgSVQgVE8gVEhJUyBRVUVVRVxuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFBSRVBBUkVTIEFMTCBTSEFSRFMgSU4gU1BFQ0lGSUMgQlVDS0VUU1xuICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgIC8vIFByZWZlciBjb25jdXJyZW5jeSBvZiBmb3JFYWNoIGluc3RlYWQgb2YgZm9yb2ZcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKV0ubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC8vIGdhdGV3YXkuYnVja2V0cy5mb3JFYWNoKGFzeW5jIChidWNrZXQsIGJ1Y2tldElkKSA9PiB7XG4gICAgICAvLyAgIGZvciAoY29uc3Qgd29ya2VyIG9mIGJ1Y2tldC53b3JrZXJzKSB7XG4gICAgICAvLyAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgLy8gICAgICAgYXdhaXQgZ2F0ZXdheS50ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXIuaWQsIHNoYXJkSWQsIGJ1Y2tldElkKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfVxuICAgICAgLy8gfSlcbiAgICB9LFxuICAgIGFzeW5jIHNodXRkb3duKGNvZGUsIHJlYXNvbikge1xuICAgICAgZ2F0ZXdheS5zaGFyZHMuZm9yRWFjaCgoc2hhcmQpID0+IHNoYXJkLmNsb3NlKGNvZGUsIHJlYXNvbikpXG5cbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICBpbnRlbnRzOiB0aGlzLmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiB0aGlzLnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuaWRlbnRpZnkoKVxuICAgIH0sXG4gICAgYXN5bmMga2lsbChzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gdGhpcy5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSByZXR1cm5cblxuICAgICAgdGhpcy5zaGFyZHMuZGVsZXRlKHNoYXJkSWQpXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0SWRlbnRpZnkoKSB7fSxcbiAgfVxuXG4gIHJldHVybiBnYXRld2F5XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlR2F0ZXdheU1hbmFnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElkIG9mIHRoZSBmaXJzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBmaXJzdFNoYXJkSWQ/OiBudW1iZXJcbiAgLyoqXG4gICAqIElkIG9mIHRoZSBsYXN0IFNoYXJkIHdoaWNoIHNob3VsZCBnZXQgY29udHJvbGxlZCBieSB0aGlzIG1hbmFnZXIuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGxhc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBEZWxheSBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc3Bhd25pbmcgbmV4dCBzaGFyZC4gT1BUSU1BTCBJUyBBQk9WRSA1MTAwLiBZT1UgRE9OJ1QgV0FOVCBUTyBISVQgVEhFIFJBVEUgTElNSVQhISFcbiAgICogQGRlZmF1bHQgNTMwMFxuICAgKi9cbiAgc3Bhd25TaGFyZERlbGF5PzogbnVtYmVyXG4gIC8qKlxuICAgKiBUb3RhbCBhbW91bnQgb2Ygc2hhcmRzIHlvdXIgYm90IHVzZXMuIFVzZWZ1bCBmb3IgemVyby1kb3dudGltZSB1cGRhdGVzIG9yIHJlc2hhcmRpbmcuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHRvdGFsU2hhcmRzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHNoYXJkcyB0byBsb2FkIHBlciB3b3JrZXIuXG4gICAqIEBkZWZhdWx0IDI1XG4gICAqL1xuICBzaGFyZHNQZXJXb3JrZXI/OiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBhbW91bnQgb2Ygd29ya2VycyB0byB1c2UgZm9yIHlvdXIgYm90LlxuICAgKiBAZGVmYXVsdCA0XG4gICAqL1xuICB0b3RhbFdvcmtlcnM/OiBudW1iZXJcbiAgLyoqIEltcG9ydGFudCBkYXRhIHdoaWNoIGlzIHVzZWQgYnkgdGhlIG1hbmFnZXIgdG8gY29ubmVjdCBzaGFyZHMgdG8gdGhlIGdhdGV3YXkuICovXG4gIGNvbm5lY3Rpb24/OiBDYW1lbGl6ZTxEaXNjb3JkR2V0R2F0ZXdheUJvdD5cbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzPzogYm9vbGVhblxuICAvKiogVGhlIGNhbGN1bGF0ZWQgaW50ZW50IHZhbHVlIG9mIHRoZSBldmVudHMgd2hpY2ggdGhlIHNoYXJkIHNob3VsZCByZWNlaXZlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpbnRlbnRzPzogbnVtYmVyXG4gIC8qKiBJZGVudGlmeSBwcm9wZXJ0aWVzIHRvIHVzZSAqL1xuICBwcm9wZXJ0aWVzPzoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsPzogc3RyaW5nXG4gIC8qKiBUaGUgZ2F0ZXdheSB2ZXJzaW9uIHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbj86IG51bWJlclxuICAvKiogVGhlIGV2ZW50cyBoYW5kbGVycyAqL1xuICBldmVudHM6IFNoYXJkRXZlbnRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICBsZWFrOiBMZWFreUJ1Y2tldFxuICAgIH1cbiAgPlxuICAvKiogVGhlIHNoYXJkcyB0aGF0IGFyZSBjcmVhdGVkLiAqL1xuICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEFsbG93cyB1c2VycyB0byBob29rIGluIGFuZCBjaGFuZ2UgdG8gY29tbXVuaWNhdGUgdG8gZGlmZmVyZW50IHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBzZXJ2ZXJzIG9yIGFueXRoaW5nIHRoZXkgbGlrZS4gRm9yIGV4YW1wbGUgdXNpbmcgcmVkaXMgcHVic3ViIHRvIHRhbGsgdG8gb3RoZXIgc2VydmVycy4gKi9cbiAgdGVsbFdvcmtlclRvSWRlbnRpZnk6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRlbGwgdGhlIG1hbmFnZXIgdG8gaWRlbnRpZnkgYSBTaGFyZC4gSWYgdGhpcyBTaGFyZCBpcyBub3QgYWxyZWFkeSBtYW5hZ2VkIHRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgU2hhcmQgdG8gdGhlIG1hbmFnZXIuICovXG4gIGlkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBLaWxsIGEgc2hhcmQuIENsb3NlIGEgc2hhcmRzIGNvbm5lY3Rpb24gdG8gRGlzY29yZCdzIGdhdGV3YXkgKGlmIGFueSkgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYW5hZ2VyLiAqL1xuICBraWxsOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB3aXRoIHRoZSBwYXJlbnQgbWFuYWdlciwgaW4gb3JkZXIgdG8ga25vdyB3aGV0aGVyIHRoaXMgbWFuYWdlciBpcyBhbGxvd2VkIHRvIGlkZW50aWZ5IGEgbmV3IHNoYXJkLiAqL1xuICByZXF1ZXN0SWRlbnRpZnk6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVMZWFreUJ1Y2tldCIsImRlbGF5IiwiU2hhcmQiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsIm9wdGlvbnMiLCJjb25uZWN0aW9uIiwidXJsIiwic2hhcmRzIiwic2Vzc2lvblN0YXJ0TGltaXQiLCJtYXhDb25jdXJyZW5jeSIsInJlbWFpbmluZyIsInRvdGFsIiwicmVzZXRBZnRlciIsImdhdGV3YXkiLCJldmVudHMiLCJjb21wcmVzcyIsImludGVudHMiLCJwcm9wZXJ0aWVzIiwib3MiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJicm93c2VyIiwiZGV2aWNlIiwidG9rZW4iLCJ2ZXJzaW9uIiwidG90YWxTaGFyZHMiLCJsYXN0U2hhcmRJZCIsImZpcnN0U2hhcmRJZCIsInRvdGFsV29ya2VycyIsInNoYXJkc1BlcldvcmtlciIsInNwYXduU2hhcmREZWxheSIsIk1hcCIsImJ1Y2tldHMiLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsIk1hdGgiLCJjZWlsIiwiY2FsY3VsYXRlV29ya2VySWQiLCJzaGFyZElkIiwid29ya2VySWQiLCJmbG9vciIsInByZXBhcmVCdWNrZXRzIiwiaSIsInNldCIsIndvcmtlcnMiLCJsZWFrIiwibWF4IiwicmVmaWxsQW1vdW50IiwicmVmaWxsSW50ZXJ2YWwiLCJFcnJvciIsImJ1Y2tldElkIiwiYnVja2V0IiwiZ2V0Iiwid29ya2VyIiwiZmluZCIsInciLCJpZCIsInF1ZXVlIiwicHVzaCIsInNwYXduU2hhcmRzIiwiUHJvbWlzZSIsImFsbCIsImVudHJpZXMiLCJtYXAiLCJ0ZWxsV29ya2VyVG9JZGVudGlmeSIsInNodXRkb3duIiwiY29kZSIsInJlYXNvbiIsImZvckVhY2giLCJzaGFyZCIsImNsb3NlIiwiaWRlbnRpZnkiLCJraWxsIiwiZGVsZXRlIiwicmVxdWVzdElkZW50aWZ5Il0sIm1hcHBpbmdzIjoiQUFFQSxPQUFTQSxxQkFBQUEsQ0FBaUIsQ0FBRUMsU0FBQUEsQ0FBSyxLQUFRLG1CQUFtQixBQUM1RCxRQUFPQyxNQUFXLFlBQVksQUFHOUIsUUFBTyxTQUFTQyxxQkFBcUJDLENBQW9DLENBQWtCLENBQ3BGQSxFQUFRQyxVQUFVLEVBQ3JCRCxDQUFBQSxFQUFRQyxVQUFVLENBQUcsQ0FDbkJDLElBQUssMkJBQ0xDLE9BQVEsRUFDUkMsa0JBQW1CLENBQ2pCQyxlQUFnQixFQUNoQkMsVUFBVyxJQUNYQyxNQUFPLElBQ1BDLFdBQVksS0FDZCxDQUNGLENBQUEsRUFHRixJQUFNQyxFQUEwQixDQUM5QkMsT0FBUVYsRUFBUVUsTUFBTSxDQUN0QkMsU0FBVVgsRUFBUVcsUUFBUSxFQUFJLENBQUEsRUFDOUJDLFFBQVNaLEVBQVFZLE9BQU8sRUFBSSxFQUM1QkMsV0FBWSxDQUNWQyxHQUFJZCxFQUFRYSxVQUFVLEVBQUVDLElBQU1DLFFBQVFDLFFBQVEsQ0FDOUNDLFFBQVNqQixFQUFRYSxVQUFVLEVBQUVJLFNBQVcsYUFDeENDLE9BQVFsQixFQUFRYSxVQUFVLEVBQUVLLFFBQVUsWUFDeEMsRUFDQUMsTUFBT25CLEVBQVFtQixLQUFLLENBQ3BCakIsSUFBS0YsRUFBUUUsR0FBRyxFQUFJRixFQUFRQyxVQUFVLENBQUNDLEdBQUcsRUFBSSwyQkFDOUNrQixRQUFTcEIsRUFBUW9CLE9BQU8sRUFBSSxHQUM1Qm5CLFdBQVlELEVBQVFDLFVBQVUsQ0FDOUJvQixZQUFhckIsRUFBUXFCLFdBQVcsRUFBSXJCLEVBQVFDLFVBQVUsQ0FBQ0UsTUFBTSxFQUFJLEVBQ2pFbUIsWUFBYXRCLEVBQVFzQixXQUFXLEVBQUksRUFDcENDLGFBQWN2QixFQUFRdUIsWUFBWSxFQUFJLEVBQ3RDQyxhQUFjeEIsRUFBUXdCLFlBQVksRUFBSSxFQUN0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
1
+ import{GatewayIntents as e,GatewayOpcodes as t}from"@discordeno/types";import{Collection as r,createLeakyBucket as a,delay as s,logger as i}from"@discordeno/utils";import n from"./Shard.js";export function createGatewayManager(d){d.connection||(d.connection={url:"wss://gateway.discord.gg",shards:1,sessionStartLimit:{maxConcurrency:1,remaining:1e3,total:1e3,resetAfter:864e5}});let o={events:d.events,compress:d.compress??!1,intents:d.intents??0,properties:{os:d.properties?.os??process.platform,browser:d.properties?.browser??"Discordeno",device:d.properties?.device??"Discordeno"},token:d.token,url:d.url??d.connection.url??"wss://gateway.discord.gg",version:d.version??10,connection:d.connection,totalShards:d.totalShards??d.connection.shards??1,lastShardId:d.lastShardId??0,firstShardId:d.firstShardId??0,totalWorkers:d.totalWorkers??4,shardsPerWorker:d.shardsPerWorker??25,spawnShardDelay:d.spawnShardDelay??5300,shards:new Map,buckets:new Map,cache:{requestMembers:{enabled:d.cache?.requestMembers?.enabled??!1,pending:new r}},calculateTotalShards:()=>o.totalShards<100?(i.debug(`[Gateway] Calculating total shards: ${o.totalShards}`),o.totalShards):(i.debug("[Gateway] Calculating total shards",o.totalShards,o.connection.sessionStartLimit.maxConcurrency),Math.ceil(o.totalShards/(1===o.connection.sessionStartLimit.maxConcurrency?16:o.connection.sessionStartLimit.maxConcurrency))*o.connection.sessionStartLimit.maxConcurrency),calculateWorkerId(e){let t=Math.floor(e/o.shardsPerWorker);return t>=o.totalWorkers&&(t=o.totalWorkers-1),i.debug(`[Gateway] Calculating workerId: Shard: ${e} -> Worker: ${t} -> Per Worker: ${o.shardsPerWorker} -> Total: ${o.totalWorkers}`),t},prepareBuckets(){for(let e=0;e<o.connection.sessionStartLimit.maxConcurrency;++e)i.debug(`[Gateway] Preparing buckets for concurrency: ${e}`),o.buckets.set(e,{workers:[],leak:a({max:1,refillAmount:1,refillInterval:o.spawnShardDelay})});for(let t=o.firstShardId;t<=o.lastShardId;++t){if(i.debug(`[Gateway] Preparing buckets for shard: ${t}`),t>=o.totalShards)throw Error(`Shard (id: ${t}) is bigger or equal to the used amount of used shards which is ${o.totalShards}`);let r=t%o.connection.sessionStartLimit.maxConcurrency,s=o.buckets.get(r);if(!s)throw Error(`Shard (id: ${t}) got assigned to an illegal bucket id: ${r}, expected a bucket id between 0 and ${o.connection.sessionStartLimit.maxConcurrency-1}`);let n=o.calculateWorkerId(t),d=s.workers.find(e=>e.id===n);d?d.queue.push(t):s.workers.push({id:n,queue:[t]})}},async spawnShards(){o.prepareBuckets(),await Promise.all([...o.buckets.entries()].map(async([e,t])=>{for(let r of t.workers)for(let a of r.queue)await o.tellWorkerToIdentify(r.id,a,e)}))},async shutdown(e,t){o.shards.forEach(r=>r.close(e,t)),await s(5e3)},tellWorkerToIdentify:async(e,t,r)=>(i.debug(`[Gateway] tell worker to identify (${e}, ${t}, ${r})`),await o.identify(t)),async identify(e){let t=this.shards.get(e);return i.debug(`[Gateway] identifying ${t?"existing":"new"} shard (${e})`),t||(t=new n({id:e,connection:{compress:this.compress,intents:this.intents,properties:this.properties,token:this.token,totalShards:this.totalShards,url:this.url,version:this.version},events:d.events}),this.shards.set(e,t)),await t.identify()},async kill(e){let t=this.shards.get(e);return t?(i.debug(`[Gateway] kill shard (${e})`),this.shards.delete(e),await t.shutdown()):i.debug(`[Gateway] kill shard but not found (${e})`)},async requestIdentify(){i.debug("[Gateway] requesting identify")},calculateShardId:(e,t)=>(t||(t=o.totalShards),1===t)?(i.debug("[Gateway] calculateShardId (1 shard)"),0):(i.debug(`[Gateway] calculateShardId (guildId: ${e}, totalShards: ${t})`),Number((BigInt(e)>>22n)%BigInt(t))),async connectToVoiceChannel(e,r,a){let s=o.calculateShardId(e),n=o.shards.get(s);if(!n)throw Error(`Shard (id: ${s} not found`);return i.debug(`[Gateway] connectToVoiceChannel guildId: ${e} channelId: ${r}`),await n.send({op:t.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:r.toString(),self_mute:Boolean(a?.selfMute),self_deaf:a?.selfDeaf??!0}})},async editBotStatus(e){i.debug(`[Gateway] editBotStatus data: ${JSON.stringify(e)}`),await Promise.all([...o.shards.values()].map(async t=>{o.editShardStatus(t.id,e)}))},async editShardStatus(e,r){let a=o.shards.get(e);if(!a)throw Error(`Shard (id: ${e}) not found.`);return i.debug(`[Gateway] editShardStatus shardId: ${e} -> data: ${JSON.stringify(r)}`),await a.send({op:t.PresenceUpdate,d:{since:null,afk:!1,activities:r.activities,status:r.status}})},async requestMembers(r,a){if(o.intents&&(!a?.limit||a.limit>1)&&!(o.intents&e.GuildMembers))throw Error("MISSING_INTENT_GUILD_MEMBERS");a?.userIds?.length&&(i.debug(`[Gateway] requestMembers guildId: ${r} -> setting user limit based on userIds length: ${a.userIds.length}`),a.limit=a.userIds.length);let s=o.calculateShardId(r),n=o.shards.get(s);if(!n)throw Error(`Shard (id: ${s}) not found.`);let d=`${r}-${Date.now()}`;return o.cache.requestMembers?.enabled?await new Promise(e=>{o.cache.requestMembers?.pending.set(d,{nonce:d,resolve:e,members:[]}),i.debug(`[Gateway] requestMembers guildId: ${r} -> requesting members -> data: ${JSON.stringify(a)}`),n.send({op:t.RequestGuildMembers,d:{guild_id:r.toString(),query:a?.query??(a?.limit?void 0:""),limit:a?.limit??0,presences:a?.presences??!1,user_ids:a?.userIds?.map(e=>e.toString()),nonce:d}})}):(i.debug(`[Gateway] requestMembers guildId: ${r} -> skipping cache -> options ${JSON.stringify(a)}`),await n.send({op:t.RequestGuildMembers,d:{guild_id:r.toString(),query:a?.query??(a?.limit?void 0:""),limit:a?.limit??0,presences:a?.presences??!1,user_ids:a?.userIds?.map(e=>e.toString()),nonce:d}}),[])},async leaveVoiceChannel(e){let r=o.calculateShardId(e),a=o.shards.get(r);if(!a)throw Error(`Shard (id: ${r} not found`);return i.debug(`[Gateway] leaveVoiceChannel guildId: ${e}`),await a.send({op:t.VoiceStateUpdate,d:{guild_id:e.toString(),channel_id:null,self_mute:!1,self_deaf:!1}})}};return o}
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXRMZWFzdE9uZSwgQmlnU3RyaW5nLCBDYW1lbGl6ZSwgRGlzY29yZEdldEdhdGV3YXlCb3QsIERpc2NvcmRNZW1iZXIsIFJlcXVlc3RHdWlsZE1lbWJlcnMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgeyBHYXRld2F5SW50ZW50cywgR2F0ZXdheU9wY29kZXMgfSBmcm9tICdAZGlzY29yZGVuby90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IExlYWt5QnVja2V0IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgY3JlYXRlTGVha3lCdWNrZXQsIGRlbGF5LCBsb2dnZXIgfSBmcm9tICdAZGlzY29yZGVuby91dGlscyc7XG5pbXBvcnQgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNoYXJkRXZlbnRzLCBTdGF0dXNVcGRhdGUsIFVwZGF0ZVZvaWNlU3RhdGUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdhdGV3YXlNYW5hZ2VyKG9wdGlvbnM6IENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyk6IEdhdGV3YXlNYW5hZ2VyIHtcbiAgaWYgKCFvcHRpb25zLmNvbm5lY3Rpb24pIHtcbiAgICBvcHRpb25zLmNvbm5lY3Rpb24gPSB7XG4gICAgICB1cmw6ICd3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2cnLFxuICAgICAgc2hhcmRzOiAxLFxuICAgICAgc2Vzc2lvblN0YXJ0TGltaXQ6IHtcbiAgICAgICAgbWF4Q29uY3VycmVuY3k6IDEsXG4gICAgICAgIHJlbWFpbmluZzogMTAwMCxcbiAgICAgICAgdG90YWw6IDEwMDAsXG4gICAgICAgIHJlc2V0QWZ0ZXI6IDEwMDAgKiA2MCAqIDYwICogMjQsXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdhdGV3YXk6IEdhdGV3YXlNYW5hZ2VyID0ge1xuICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgY29tcHJlc3M6IG9wdGlvbnMuY29tcHJlc3MgPz8gZmFsc2UsXG4gICAgaW50ZW50czogb3B0aW9ucy5pbnRlbnRzID8/IDAsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgb3M6IG9wdGlvbnMucHJvcGVydGllcz8ub3MgPz8gcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICAgIGJyb3dzZXI6IG9wdGlvbnMucHJvcGVydGllcz8uYnJvd3NlciA/PyAnRGlzY29yZGVubycsXG4gICAgICBkZXZpY2U6IG9wdGlvbnMucHJvcGVydGllcz8uZGV2aWNlID8/ICdEaXNjb3JkZW5vJyxcbiAgICB9LFxuICAgIHRva2VuOiBvcHRpb25zLnRva2VuLFxuICAgIHVybDogb3B0aW9ucy51cmwgPz8gb3B0aW9ucy5jb25uZWN0aW9uLnVybCA/PyAnd3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnJyxcbiAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gMTAsXG4gICAgY29ubmVjdGlvbjogb3B0aW9ucy5jb25uZWN0aW9uLFxuICAgIHRvdGFsU2hhcmRzOiBvcHRpb25zLnRvdGFsU2hhcmRzID8/IG9wdGlvbnMuY29ubmVjdGlvbi5zaGFyZHMgPz8gMSxcbiAgICBsYXN0U2hhcmRJZDogb3B0aW9ucy5sYXN0U2hhcmRJZCA/PyAwLFxuICAgIGZpcnN0U2hhcmRJZDogb3B0aW9ucy5maXJzdFNoYXJkSWQgPz8gMCxcbiAgICB0b3RhbFdvcmtlcnM6IG9wdGlvbnMudG90YWxXb3JrZXJzID8/IDQsXG4gICAgc2hhcmRzUGVyV29ya2VyOiBvcHRpb25zLnNoYXJkc1BlcldvcmtlciA/PyAyNSxcbiAgICBzcGF3blNoYXJkRGVsYXk6IG9wdGlvbnMuc3Bhd25TaGFyZERlbGF5ID8/IDUzMDAsXG4gICAgc2hhcmRzOiBuZXcgTWFwKCksXG4gICAgYnVja2V0czogbmV3IE1hcCgpLFxuICAgIGNhY2hlOiB7XG4gICAgICByZXF1ZXN0TWVtYmVyczoge1xuICAgICAgICBlbmFibGVkOiBvcHRpb25zLmNhY2hlPy5yZXF1ZXN0TWVtYmVycz8uZW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgcGVuZGluZzogbmV3IENvbGxlY3Rpb24oKSxcbiAgICAgIH0sXG4gICAgfSxcblxuICAgIGNhbGN1bGF0ZVRvdGFsU2hhcmRzKCkge1xuICAgICAgLy8gQm90cyB1bmRlciAxMDBrIHNlcnZlcnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRvdGFsIHNoYXJkcy5cbiAgICAgIGlmIChnYXRld2F5LnRvdGFsU2hhcmRzIDwgMTAwKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIENhbGN1bGF0aW5nIHRvdGFsIHNoYXJkczogJHtnYXRld2F5LnRvdGFsU2hhcmRzfWApO1xuICAgICAgICByZXR1cm4gZ2F0ZXdheS50b3RhbFNoYXJkc1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB0b3RhbCBzaGFyZHNgLCBnYXRld2F5LnRvdGFsU2hhcmRzLCBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kpO1xuICAgICAgLy8gQ2FsY3VsYXRlIGEgbXVsdGlwbGUgb2YgYG1heENvbmN1cnJlbmN5YCB3aGljaCBjYW4gYmUgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBnYXRld2F5LlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgTWF0aC5jZWlsKFxuICAgICAgICAgIGdhdGV3YXkudG90YWxTaGFyZHMgL1xuICAgICAgICAgICAgLy8gSWYgYG1heENvbmN1cnJlbmN5YCBpcyAxIHdlIGNhbiBzYWZlbHkgdXNlIDE2LlxuICAgICAgICAgICAgKGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeSA9PT0gMSA/IDE2IDogZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5KSxcbiAgICAgICAgKSAqIGdhdGV3YXkuY29ubmVjdGlvbi5zZXNzaW9uU3RhcnRMaW1pdC5tYXhDb25jdXJyZW5jeVxuICAgICAgKVxuICAgIH0sXG4gICAgY2FsY3VsYXRlV29ya2VySWQoc2hhcmRJZCkge1xuICAgICAgLy8gSWdub3JlIGRlY2ltYWwgbnVtYmVycy5cbiAgICAgIGxldCB3b3JrZXJJZCA9IE1hdGguZmxvb3Ioc2hhcmRJZCAvIGdhdGV3YXkuc2hhcmRzUGVyV29ya2VyKVxuICAgICAgLy8gSWYgdGhlIHdvcmtlcklkIG92ZXJmbG93cyB0aGUgbWF4aW1hbCBhbGxvd2VkIHdvcmtlcnMgd2UgYnkgZGVmYXVsdCBqdXN0IHVzZSB0byBsYXN0IHdvcmtlci5cbiAgICAgIGlmICh3b3JrZXJJZCA+PSBnYXRld2F5LnRvdGFsV29ya2Vycykge1xuICAgICAgICAvLyBUaGUgSWQgb2YgdGhlIGxhc3QgYXZhaWxhYmxlIHdvcmtlciBpcyB0b3RhbCAtMVxuICAgICAgICB3b3JrZXJJZCA9IGdhdGV3YXkudG90YWxXb3JrZXJzIC0gMVxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBDYWxjdWxhdGluZyB3b3JrZXJJZDogU2hhcmQ6ICR7c2hhcmRJZH0gLT4gV29ya2VyOiAke3dvcmtlcklkfSAtPiBQZXIgV29ya2VyOiAke2dhdGV3YXkuc2hhcmRzUGVyV29ya2VyfSAtPiBUb3RhbDogJHtnYXRld2F5LnRvdGFsV29ya2Vyc31gKTtcblxuICAgICAgcmV0dXJuIHdvcmtlcklkXG4gICAgfSxcbiAgICBwcmVwYXJlQnVja2V0cygpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5OyArK2kpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gUHJlcGFyaW5nIGJ1Y2tldHMgZm9yIGNvbmN1cnJlbmN5OiAke2l9YCk7XG4gICAgICAgIGdhdGV3YXkuYnVja2V0cy5zZXQoaSwge1xuICAgICAgICAgIHdvcmtlcnM6IFtdLFxuICAgICAgICAgIGxlYWs6IGNyZWF0ZUxlYWt5QnVja2V0KHtcbiAgICAgICAgICAgIG1heDogMSxcbiAgICAgICAgICAgIHJlZmlsbEFtb3VudDogMSxcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgbnVtYmVyIHdoaWNoIGlzIHByb3ZlbiB0byBiZSB3b3JraW5nIGRvbnQgY2hhbmdlXG4gICAgICAgICAgICByZWZpbGxJbnRlcnZhbDogZ2F0ZXdheS5zcGF3blNoYXJkRGVsYXksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIE9SR0FOSVpFIEFMTCBTSEFSRFMgSU5UTyBUSEVJUiBPV04gQlVDS0VUU1xuICAgICAgZm9yIChsZXQgc2hhcmRJZCA9IGdhdGV3YXkuZmlyc3RTaGFyZElkOyBzaGFyZElkIDw9IGdhdGV3YXkubGFzdFNoYXJkSWQ7ICsrc2hhcmRJZCkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBQcmVwYXJpbmcgYnVja2V0cyBmb3Igc2hhcmQ6ICR7c2hhcmRJZH1gKTtcbiAgICAgICAgaWYgKHNoYXJkSWQgPj0gZ2F0ZXdheS50b3RhbFNoYXJkcykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9KSBpcyBiaWdnZXIgb3IgZXF1YWwgdG8gdGhlIHVzZWQgYW1vdW50IG9mIHVzZWQgc2hhcmRzIHdoaWNoIGlzICR7Z2F0ZXdheS50b3RhbFNoYXJkc31gKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVja2V0SWQgPSBzaGFyZElkICUgZ2F0ZXdheS5jb25uZWN0aW9uLnNlc3Npb25TdGFydExpbWl0Lm1heENvbmN1cnJlbmN5XG4gICAgICAgIGNvbnN0IGJ1Y2tldCA9IGdhdGV3YXkuYnVja2V0cy5nZXQoYnVja2V0SWQpXG4gICAgICAgIGlmICghYnVja2V0KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNoYXJkIChpZDogJHtzaGFyZElkfSkgZ290IGFzc2lnbmVkIHRvIGFuIGlsbGVnYWwgYnVja2V0IGlkOiAke2J1Y2tldElkfSwgZXhwZWN0ZWQgYSBidWNrZXQgaWQgYmV0d2VlbiAwIGFuZCAke1xuICAgICAgICAgICAgICBnYXRld2F5LmNvbm5lY3Rpb24uc2Vzc2lvblN0YXJ0TGltaXQubWF4Q29uY3VycmVuY3kgLSAxXG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICAvLyBGSU5EIEEgUVVFVUUgSU4gVEhJUyBCVUNLRVQgVEhBVCBIQVMgU1BBQ0VcbiAgICAgICAgLy8gY29uc3Qgd29ya2VyID0gYnVja2V0LndvcmtlcnMuZmluZCgodykgPT4gdy5xdWV1ZS5sZW5ndGggPCBnYXRld2F5LnNoYXJkc1Blcldvcmtlcik7XG4gICAgICAgIGNvbnN0IHdvcmtlcklkID0gZ2F0ZXdheS5jYWxjdWxhdGVXb3JrZXJJZChzaGFyZElkKVxuICAgICAgICBjb25zdCB3b3JrZXIgPSBidWNrZXQud29ya2Vycy5maW5kKCh3KSA9PiB3LmlkID09PSB3b3JrZXJJZClcbiAgICAgICAgaWYgKHdvcmtlcikge1xuICAgICAgICAgIC8vIElGIFRIRSBRVUVVRSBIQVMgU1BBQ0UgSlVTVCBBREQgSVQgVE8gVEhJUyBRVUVVRVxuICAgICAgICAgIHdvcmtlci5xdWV1ZS5wdXNoKHNoYXJkSWQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVja2V0LndvcmtlcnMucHVzaCh7IGlkOiB3b3JrZXJJZCwgcXVldWU6IFtzaGFyZElkXSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBzcGF3blNoYXJkcygpIHtcbiAgICAgIC8vIFBSRVBBUkVTIEFMTCBTSEFSRFMgSU4gU1BFQ0lGSUMgQlVDS0VUU1xuICAgICAgZ2F0ZXdheS5wcmVwYXJlQnVja2V0cygpXG5cbiAgICAgIC8vIFByZWZlciBjb25jdXJyZW5jeSBvZiBmb3JFYWNoIGluc3RlYWQgb2YgZm9yb2ZcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5idWNrZXRzLmVudHJpZXMoKV0ubWFwKGFzeW5jIChbYnVja2V0SWQsIGJ1Y2tldF0pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHdvcmtlciBvZiBidWNrZXQud29ya2Vycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaGFyZElkIG9mIHdvcmtlci5xdWV1ZSkge1xuICAgICAgICAgICAgICBhd2FpdCBnYXRld2F5LnRlbGxXb3JrZXJUb0lkZW50aWZ5KHdvcmtlci5pZCwgc2hhcmRJZCwgYnVja2V0SWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9LFxuICAgIGFzeW5jIHNodXRkb3duKGNvZGUsIHJlYXNvbikge1xuICAgICAgZ2F0ZXdheS5zaGFyZHMuZm9yRWFjaCgoc2hhcmQpID0+IHNoYXJkLmNsb3NlKGNvZGUsIHJlYXNvbikpXG5cbiAgICAgIGF3YWl0IGRlbGF5KDUwMDApXG4gICAgfSxcbiAgICBhc3luYyB0ZWxsV29ya2VyVG9JZGVudGlmeSh3b3JrZXJJZCwgc2hhcmRJZCwgYnVja2V0SWQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHRlbGwgd29ya2VyIHRvIGlkZW50aWZ5ICgke3dvcmtlcklkfSwgJHtzaGFyZElkfSwgJHtidWNrZXRJZH0pYClcbiAgICAgIHJldHVybiBhd2FpdCBnYXRld2F5LmlkZW50aWZ5KHNoYXJkSWQpXG4gICAgfSxcbiAgICBhc3luYyBpZGVudGlmeShzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGxldCBzaGFyZCA9IHRoaXMuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0gaWRlbnRpZnlpbmcgJHtzaGFyZCA/ICdleGlzdGluZycgOiAnbmV3J30gc2hhcmQgKCR7c2hhcmRJZH0pYClcblxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICBzaGFyZCA9IG5ldyBTaGFyZCh7XG4gICAgICAgICAgaWQ6IHNoYXJkSWQsXG4gICAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgY29tcHJlc3M6IHRoaXMuY29tcHJlc3MsXG4gICAgICAgICAgICBpbnRlbnRzOiB0aGlzLmludGVudHMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLnByb3BlcnRpZXMsXG4gICAgICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcbiAgICAgICAgICAgIHRvdGFsU2hhcmRzOiB0aGlzLnRvdGFsU2hhcmRzLFxuICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV2ZW50czogb3B0aW9ucy5ldmVudHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5zaGFyZHMuc2V0KHNoYXJkSWQsIHNoYXJkKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuaWRlbnRpZnkoKVxuICAgIH0sXG4gICAgYXN5bmMga2lsbChzaGFyZElkOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IHNoYXJkID0gdGhpcy5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHJldHVybiBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBraWxsIHNoYXJkIGJ1dCBub3QgZm91bmQgKCR7c2hhcmRJZH0pYClcbiAgICAgIH1cblxuICAgICAgbG9nZ2VyLmRlYnVnKGBbR2F0ZXdheV0ga2lsbCBzaGFyZCAoJHtzaGFyZElkfSlgKVxuICAgICAgdGhpcy5zaGFyZHMuZGVsZXRlKHNoYXJkSWQpXG4gICAgICByZXR1cm4gYXdhaXQgc2hhcmQuc2h1dGRvd24oKVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXN0SWRlbnRpZnkoKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0aW5nIGlkZW50aWZ5YClcbiAgICB9LFxuXG4gICAgLy8gSGVscGVycyBtZXRob2RzIGJlbG93IHRoaXNcblxuICAgIGNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZCwgdG90YWxTaGFyZHMpIHtcbiAgICAgIC8vIElmIG5vbmUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgdG90YWwgc2hhcmRzIG51bWJlciBmcm9tIGdhdGV3YXkgb2JqZWN0LlxuICAgICAgaWYgKCF0b3RhbFNoYXJkcykgdG90YWxTaGFyZHMgPSBnYXRld2F5LnRvdGFsU2hhcmRzXG4gICAgICAvLyBJZiBpdCBpcyBvbmx5IDEgc2hhcmQsIGl0IHdpbGwgYWx3YXlzIGJlIHNoYXJkIGlkIDBcbiAgICAgIGlmICh0b3RhbFNoYXJkcyA9PT0gMSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkICgxIHNoYXJkKWApO1xuICAgICAgICByZXR1cm4gMFxuICAgICAgfVxuXG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBjYWxjdWxhdGVTaGFyZElkIChndWlsZElkOiAke2d1aWxkSWR9LCB0b3RhbFNoYXJkczogJHt0b3RhbFNoYXJkc30pYCk7XG4gICAgICByZXR1cm4gTnVtYmVyKChCaWdJbnQoZ3VpbGRJZCkgPj4gMjJuKSAlIEJpZ0ludCh0b3RhbFNoYXJkcykpXG4gICAgfSxcblxuICAgIGFzeW5jIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbChndWlsZElkLCBjaGFubmVsSWQsIG9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9IG5vdCBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbCBndWlsZElkOiAke2d1aWxkSWR9IGNoYW5uZWxJZDogJHtjaGFubmVsSWR9YClcbiAgICAgIHJldHVybiBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlZvaWNlU3RhdGVVcGRhdGUsXG4gICAgICAgIGQ6IHtcbiAgICAgICAgICBndWlsZF9pZDogZ3VpbGRJZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYW5uZWxfaWQ6IGNoYW5uZWxJZC50b1N0cmluZygpLFxuICAgICAgICAgIHNlbGZfbXV0ZTogQm9vbGVhbihvcHRpb25zPy5zZWxmTXV0ZSksXG4gICAgICAgICAgc2VsZl9kZWFmOiBvcHRpb25zPy5zZWxmRGVhZiA/PyB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9LFxuXG4gICAgYXN5bmMgZWRpdEJvdFN0YXR1cyhkYXRhKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSBlZGl0Qm90U3RhdHVzIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBbLi4uZ2F0ZXdheS5zaGFyZHMudmFsdWVzKCldLm1hcChhc3luYyAoc2hhcmQpID0+IHtcbiAgICAgICAgICBnYXRld2F5LmVkaXRTaGFyZFN0YXR1cyhzaGFyZC5pZCwgZGF0YSlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSxcblxuICAgIGFzeW5jIGVkaXRTaGFyZFN0YXR1cyhzaGFyZElkLCBkYXRhKSB7XG4gICAgICBjb25zdCBzaGFyZCA9IGdhdGV3YXkuc2hhcmRzLmdldChzaGFyZElkKVxuICAgICAgaWYgKCFzaGFyZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNoYXJkIChpZDogJHtzaGFyZElkfSkgbm90IGZvdW5kLmApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGVkaXRTaGFyZFN0YXR1cyBzaGFyZElkOiAke3NoYXJkSWR9IC0+IGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YClcbiAgICAgIHJldHVybiBhd2FpdCBzaGFyZC5zZW5kKHtcbiAgICAgICAgb3A6IEdhdGV3YXlPcGNvZGVzLlByZXNlbmNlVXBkYXRlLFxuICAgICAgICBkOiB7XG4gICAgICAgICAgc2luY2U6IG51bGwsXG4gICAgICAgICAgYWZrOiBmYWxzZSxcbiAgICAgICAgICBhY3Rpdml0aWVzOiBkYXRhLmFjdGl2aXRpZXMsXG4gICAgICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVlc3RNZW1iZXJzKGd1aWxkSWQsIG9wdGlvbnMpIHtcbiAgICAgIC8vIFlvdSBjYW4gcmVxdWVzdCAxIG1lbWJlciB3aXRob3V0IHRoZSBpbnRlbnRcbiAgICAgIC8vIENoZWNrIGlmIGludGVudHMgaXMgbm90IDAgYXMgcHJveHkgd3Mgd29uJ3Qgc2V0IGludGVudHMgaW4gb3RoZXIgaW5zdGFuY2VzXG4gICAgICBpZiAoZ2F0ZXdheS5pbnRlbnRzICYmICghb3B0aW9ucz8ubGltaXQgfHwgb3B0aW9ucy5saW1pdCA+IDEpICYmICEoZ2F0ZXdheS5pbnRlbnRzICYgR2F0ZXdheUludGVudHMuR3VpbGRNZW1iZXJzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01JU1NJTkdfSU5URU5UX0dVSUxEX01FTUJFUlMnKVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8udXNlcklkcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gc2V0dGluZyB1c2VyIGxpbWl0IGJhc2VkIG9uIHVzZXJJZHMgbGVuZ3RoOiAke29wdGlvbnMudXNlcklkcy5sZW5ndGh9YClcbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IG9wdGlvbnMudXNlcklkcy5sZW5ndGhcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2hhcmRJZCA9IGdhdGV3YXkuY2FsY3VsYXRlU2hhcmRJZChndWlsZElkKVxuICAgICAgY29uc3Qgc2hhcmQgPSBnYXRld2F5LnNoYXJkcy5nZXQoc2hhcmRJZClcbiAgICAgIGlmICghc2hhcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaGFyZCAoaWQ6ICR7c2hhcmRJZH0pIG5vdCBmb3VuZC5gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBub25jZSA9IGAke2d1aWxkSWR9LSR7RGF0ZS5ub3coKX1gXG5cbiAgICAgIC8vIEdhdGV3YXkgZG9lcyBub3QgcmVxdWlyZSBjYWNoaW5nIHRoZXNlIHJlcXVlc3RzIHNvIGRpcmVjdGx5IHNlbmQgYW5kIHJldHVyblxuICAgICAgaWYgKCFnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzPy5lbmFibGVkKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIHJlcXVlc3RNZW1iZXJzIGd1aWxkSWQ6ICR7Z3VpbGRJZH0gLT4gc2tpcHBpbmcgY2FjaGUgLT4gb3B0aW9ucyAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG4gICAgICAgIGF3YWl0IHNoYXJkLnNlbmQoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBnYXRld2F5LmNhY2hlLnJlcXVlc3RNZW1iZXJzPy5wZW5kaW5nLnNldChub25jZSwgeyBub25jZSwgcmVzb2x2ZSwgbWVtYmVyczogW10gfSlcblxuICAgICAgICBsb2dnZXIuZGVidWcoYFtHYXRld2F5XSByZXF1ZXN0TWVtYmVycyBndWlsZElkOiAke2d1aWxkSWR9IC0+IHJlcXVlc3RpbmcgbWVtYmVycyAtPiBkYXRhOiAke0pTT04uc3RyaW5naWZ5KG9wdGlvbnMpfWApXG4gICAgICAgIHNoYXJkLnNlbmQoe1xuICAgICAgICAgIG9wOiBHYXRld2F5T3Bjb2Rlcy5SZXF1ZXN0R3VpbGRNZW1iZXJzLFxuICAgICAgICAgIGQ6IHtcbiAgICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAvLyBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkIHVzZSBpdCwgT1IgaWYgYSBsaW1pdCBpcyBOT1QgcHJvdmlkZWQgdXNlIFwiXCJcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zPy5xdWVyeSA/PyAob3B0aW9ucz8ubGltaXQgPyB1bmRlZmluZWQgOiAnJyksXG4gICAgICAgICAgICBsaW1pdDogb3B0aW9ucz8ubGltaXQgPz8gMCxcbiAgICAgICAgICAgIHByZXNlbmNlczogb3B0aW9ucz8ucHJlc2VuY2VzID8/IGZhbHNlLFxuICAgICAgICAgICAgdXNlcl9pZHM6IG9wdGlvbnM/LnVzZXJJZHM/Lm1hcCgoaWQpID0+IGlkLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbm9uY2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSxcblxuICAgIGFzeW5jIGxlYXZlVm9pY2VDaGFubmVsKGd1aWxkSWQpIHtcbiAgICAgIGNvbnN0IHNoYXJkSWQgPSBnYXRld2F5LmNhbGN1bGF0ZVNoYXJkSWQoZ3VpbGRJZClcbiAgICAgIGNvbnN0IHNoYXJkID0gZ2F0ZXdheS5zaGFyZHMuZ2V0KHNoYXJkSWQpXG4gICAgICBpZiAoIXNoYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2hhcmQgKGlkOiAke3NoYXJkSWR9IG5vdCBmb3VuZGApXG4gICAgICB9XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhgW0dhdGV3YXldIGxlYXZlVm9pY2VDaGFubmVsIGd1aWxkSWQ6ICR7Z3VpbGRJZH1gKVxuICAgICAgcmV0dXJuIGF3YWl0IHNoYXJkLnNlbmQoe1xuICAgICAgICBvcDogR2F0ZXdheU9wY29kZXMuVm9pY2VTdGF0ZVVwZGF0ZSxcbiAgICAgICAgZDoge1xuICAgICAgICAgIGd1aWxkX2lkOiBndWlsZElkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhbm5lbF9pZDogbnVsbCxcbiAgICAgICAgICBzZWxmX211dGU6IGZhbHNlLFxuICAgICAgICAgIHNlbGZfZGVhZjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gZ2F0ZXdheVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUdhdGV3YXlNYW5hZ2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgZmlyc3QgU2hhcmQgd2hpY2ggc2hvdWxkIGdldCBjb250cm9sbGVkIGJ5IHRoaXMgbWFuYWdlci5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgZmlyc3RTaGFyZElkPzogbnVtYmVyXG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgbGFzdCBTaGFyZCB3aGljaCBzaG91bGQgZ2V0IGNvbnRyb2xsZWQgYnkgdGhpcyBtYW5hZ2VyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBsYXN0U2hhcmRJZD86IG51bWJlclxuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNwYXduaW5nIG5leHQgc2hhcmQuIE9QVElNQUwgSVMgQUJPVkUgNTEwMC4gWU9VIERPTidUIFdBTlQgVE8gSElUIFRIRSBSQVRFIExJTUlUISEhXG4gICAqIEBkZWZhdWx0IDUzMDBcbiAgICovXG4gIHNwYXduU2hhcmREZWxheT86IG51bWJlclxuICAvKipcbiAgICogVG90YWwgYW1vdW50IG9mIHNoYXJkcyB5b3VyIGJvdCB1c2VzLiBVc2VmdWwgZm9yIHplcm8tZG93bnRpbWUgdXBkYXRlcyBvciByZXNoYXJkaW5nLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkcz86IG51bWJlclxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBzaGFyZHMgdG8gbG9hZCBwZXIgd29ya2VyLlxuICAgKiBAZGVmYXVsdCAyNVxuICAgKi9cbiAgc2hhcmRzUGVyV29ya2VyPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgYW1vdW50IG9mIHdvcmtlcnMgdG8gdXNlIGZvciB5b3VyIGJvdC5cbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgdG90YWxXb3JrZXJzPzogbnVtYmVyXG4gIC8qKiBJbXBvcnRhbnQgZGF0YSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBtYW5hZ2VyIHRvIGNvbm5lY3Qgc2hhcmRzIHRvIHRoZSBnYXRld2F5LiAqL1xuICBjb25uZWN0aW9uPzogQ2FtZWxpemU8RGlzY29yZEdldEdhdGV3YXlCb3Q+XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzcz86IGJvb2xlYW5cbiAgLyoqIFRoZSBjYWxjdWxhdGVkIGludGVudCB2YWx1ZSBvZiB0aGUgZXZlbnRzIHdoaWNoIHRoZSBzaGFyZCBzaG91bGQgcmVjZWl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgaW50ZW50cz86IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllcz86IHtcbiAgICAvKiogT3BlcmF0aW5nIHN5c3RlbSB0aGUgc2hhcmQgcnVucyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZGFyd2luXCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIlxuICAgICAqL1xuICAgIG9zOiBzdHJpbmdcbiAgICAvKiogVGhlIFwiYnJvd3NlclwiIHdoZXJlIHRoaXMgc2hhcmQgaXMgcnVubmluZyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgYnJvd3Nlcjogc3RyaW5nXG4gICAgLyoqIFRoZSBkZXZpY2Ugb24gd2hpY2ggdGhlIHNoYXJkIGlzIHJ1bm5pbmcuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGRldmljZTogc3RyaW5nXG4gIH1cbiAgLyoqIEJvdCB0b2tlbiB3aGljaCBpcyB1c2VkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBUaGUgVVJMIG9mIHRoZSBnYXRld2F5IHdoaWNoIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnXCJcbiAgICovXG4gIHVybD86IHN0cmluZ1xuICAvKiogVGhlIGdhdGV3YXkgdmVyc2lvbiB3aGljaCBzaG91bGQgYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHZlcnNpb24/OiBudW1iZXJcbiAgLyoqIFRoZSBldmVudHMgaGFuZGxlcnMgKi9cbiAgZXZlbnRzOiBTaGFyZEV2ZW50c1xuICAvKiogVGhpcyBtYW5hZ2VycyBjYWNoZSByZWxhdGVkIHNldHRpbmdzLiAqL1xuICBjYWNoZT86IHtcbiAgICByZXF1ZXN0TWVtYmVycz86IHtcbiAgICAgIC8qKlxuICAgICAgICogV2hldGhlciBvciBub3QgcmVxdWVzdCBtZW1iZXIgcmVxdWVzdHMgc2hvdWxkIGJlIGNhY2hlZC5cbiAgICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICAgKi9cbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuXG4gICAgICAvKiogVGhlIHBlbmRpbmcgcmVxdWVzdHMuICovXG4gICAgICBwZW5kaW5nOiBDb2xsZWN0aW9uPHN0cmluZywgUmVxdWVzdE1lbWJlclJlcXVlc3Q+XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZXdheU1hbmFnZXIgZXh0ZW5kcyBSZXF1aXJlZDxDcmVhdGVHYXRld2F5TWFuYWdlck9wdGlvbnM+IHtcbiAgLyoqIFRoZSBtYXggY29uY3VycmVuY3kgYnVja2V0cy4gVGhvc2Ugd2lsbCBiZSBjcmVhdGVkIHdoZW4gdGhlIGBzcGF3blNoYXJkc2AgKHdoaWNoIGNhbGxzIGBwcmVwYXJlQnVja2V0c2AgdW5kZXIgdGhlIGhvb2QpIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiAqL1xuICBidWNrZXRzOiBNYXA8XG4gICAgbnVtYmVyLFxuICAgIHtcbiAgICAgIHdvcmtlcnM6IEFycmF5PHsgaWQ6IG51bWJlcjsgcXVldWU6IG51bWJlcltdIH0+XG4gICAgICBsZWFrOiBMZWFreUJ1Y2tldFxuICAgIH1cbiAgPlxuICAvKiogVGhlIHNoYXJkcyB0aGF0IGFyZSBjcmVhdGVkLiAqL1xuICBzaGFyZHM6IE1hcDxudW1iZXIsIFNoYXJkPlxuICAvKiogRGV0ZXJtaW5lIG1heCBudW1iZXIgb2Ygc2hhcmRzIHRvIHVzZSBiYXNlZCB1cG9uIHRoZSBtYXggY29uY3VycmVuY3kuICovXG4gIGNhbGN1bGF0ZVRvdGFsU2hhcmRzOiAoKSA9PiBudW1iZXJcbiAgLyoqIERldGVybWluZSB0aGUgaWQgb2YgdGhlIHdvcmtlciB3aGljaCBpcyBoYW5kbGluZyBhIHNoYXJkLiAqL1xuICBjYWxjdWxhdGVXb3JrZXJJZDogKHNoYXJkSWQ6IG51bWJlcikgPT4gbnVtYmVyXG4gIC8qKiBQcmVwYXJlcyBhbGwgdGhlIGJ1Y2tldHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBpZGVudGlmeWluZyB0aGUgc2hhcmRzLiAqL1xuICBwcmVwYXJlQnVja2V0czogKCkgPT4gdm9pZFxuICAvKiogU3RhcnQgaWRlbnRpZnlpbmcgYWxsIHRoZSBzaGFyZHMuICovXG4gIHNwYXduU2hhcmRzOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBTaHV0ZG93biBhbGwgc2hhcmRzLiAqL1xuICBzaHV0ZG93bjogKGNvZGU6IG51bWJlciwgcmVhc29uOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEFsbG93cyB1c2VycyB0byBob29rIGluIGFuZCBjaGFuZ2UgdG8gY29tbXVuaWNhdGUgdG8gZGlmZmVyZW50IHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBzZXJ2ZXJzIG9yIGFueXRoaW5nIHRoZXkgbGlrZS4gRm9yIGV4YW1wbGUgdXNpbmcgcmVkaXMgcHVic3ViIHRvIHRhbGsgdG8gb3RoZXIgc2VydmVycy4gKi9cbiAgdGVsbFdvcmtlclRvSWRlbnRpZnk6ICh3b3JrZXJJZDogbnVtYmVyLCBzaGFyZElkOiBudW1iZXIsIGJ1Y2tldElkOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIFRlbGwgdGhlIG1hbmFnZXIgdG8gaWRlbnRpZnkgYSBTaGFyZC4gSWYgdGhpcyBTaGFyZCBpcyBub3QgYWxyZWFkeSBtYW5hZ2VkIHRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgU2hhcmQgdG8gdGhlIG1hbmFnZXIuICovXG4gIGlkZW50aWZ5OiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBLaWxsIGEgc2hhcmQuIENsb3NlIGEgc2hhcmRzIGNvbm5lY3Rpb24gdG8gRGlzY29yZCdzIGdhdGV3YXkgKGlmIGFueSkgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBtYW5hZ2VyLiAqL1xuICBraWxsOiAoc2hhcmRJZDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBUaGlzIGZ1bmN0aW9uIGNvbW11bmljYXRlcyB3aXRoIHRoZSBwYXJlbnQgbWFuYWdlciwgaW4gb3JkZXIgdG8ga25vdyB3aGV0aGVyIHRoaXMgbWFuYWdlciBpcyBhbGxvd2VkIHRvIGlkZW50aWZ5IGEgbmV3IHNoYXJkLiAqL1xuICByZXF1ZXN0SWRlbnRpZnk6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBzaGFyZHMgYmFzZWQgb24gdGhlIGd1aWxkIGlkIGFuZCB0b3RhbCBzaGFyZHMuICovXG4gIGNhbGN1bGF0ZVNoYXJkSWQ6IChndWlsZElkOiBCaWdTdHJpbmcsIHRvdGFsU2hhcmRzPzogbnVtYmVyKSA9PiBudW1iZXJcbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSBib3QgdXNlciB0byBhIHZvaWNlIG9yIHN0YWdlIGNoYW5uZWwuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIF9VcGRhdGUgVm9pY2UgU3RhdGVfIGdhdGV3YXkgY29tbWFuZCBvdmVyIHRoZSBnYXRld2F5IGJlaGluZCB0aGUgc2NlbmVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdGhlIHZvaWNlIGNoYW5uZWwgdG8gbGVhdmUgaXMgaW4uXG4gICAqIEBwYXJhbSBjaGFubmVsSWQgLSBUaGUgSUQgb2YgdGhlIGNoYW5uZWwgeW91IHdhbnQgdG8gam9pbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogUmVxdWlyZXMgdGhlIGBDT05ORUNUYCBwZXJtaXNzaW9uLlxuICAgKlxuICAgKiBGaXJlcyBhIF9Wb2ljZSBTdGF0ZSBVcGRhdGVfIGdhdGV3YXkgZXZlbnQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZX1cbiAgICovXG4gIGNvbm5lY3RUb1ZvaWNlQ2hhbm5lbDogKFxuICAgIGd1aWxkSWQ6IEJpZ1N0cmluZyxcbiAgICBjaGFubmVsSWQ6IEJpZ1N0cmluZyxcbiAgICBvcHRpb25zPzogQXRMZWFzdE9uZTxPbWl0PFVwZGF0ZVZvaWNlU3RhdGUsICdndWlsZElkJyB8ICdjaGFubmVsSWQnPj4sXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCBzdGF0dXMgaW4gYWxsIHNoYXJkcyB0aGF0IHRoaXMgZ2F0ZXdheSBtYW5hZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuICAgKi9cbiAgZWRpdEJvdFN0YXR1czogKGRhdGE6IFN0YXR1c1VwZGF0ZSkgPT4gUHJvbWlzZTx2b2lkPlxuICAvKipcbiAgICogRWRpdHMgdGhlIGJvdCdzIHN0YXR1cyBvbiBvbmUgc2hhcmQuXG4gICAqXG4gICAqIEBwYXJhbSBzaGFyZElkIFRoZSBzaGFyZCBpZCB0byBlZGl0IHRoZSBzdGF0dXMgZm9yLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgc3RhdHVzIGRhdGEgdG8gc2V0IHRoZSBib3RzIHN0YXR1cyB0by5cbiAgICogQHJldHVybnMgUHJvbWlzZTx2b2lkPlxuICAgKi9cbiAgZWRpdFNoYXJkU3RhdHVzOiAoc2hhcmRJZDogbnVtYmVyLCBkYXRhOiBTdGF0dXNVcGRhdGUpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgbWVtYmVycyBmb3IgYSBndWlsZCBvdmVyIHRoZSBnYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3VpbGRJZCAtIFRoZSBJRCBvZiB0aGUgZ3VpbGQgdG8gZ2V0IHRoZSBsaXN0IG9mIG1lbWJlcnMgZm9yLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZmV0Y2hpbmcgb2YgdGhlIG1lbWJlcnMuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIElmIHJlcXVlc3RpbmcgdGhlIGVudGlyZSBtZW1iZXIgbGlzdDpcbiAgICogLSBSZXF1aXJlcyB0aGUgYEdVSUxEX01FTUJFUlNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBwcmVzZW5jZXMgKHtAbGluayBSZXF1ZXN0R3VpbGRNZW1iZXJzLnByZXNlbmNlcyB8IHByZXNlbmNlc30gc2V0IHRvIGB0cnVlYCk6XG4gICAqIC0gUmVxdWlyZXMgdGhlIGBHVUlMRF9QUkVTRU5DRVNgIGludGVudC5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHByZWZpeCAoe0BsaW5rIFJlcXVlc3RHdWlsZE1lbWJlcnMucXVlcnkgfCBxdWVyeX0gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogSWYgcmVxdWVzdGluZyBhIHVzZXJzIGJ5IElEICh7QGxpbmsgUmVxdWVzdEd1aWxkTWVtYmVycy51c2VySWRzIHwgdXNlcklkc30gbm9uLWB1bmRlZmluZWRgKTpcbiAgICogLSBSZXR1cm5zIGEgbWF4aW11bSBvZiAxMDAgbWVtYmVycy5cbiAgICpcbiAgICogRmlyZXMgYSBfR3VpbGQgTWVtYmVycyBDaHVua18gZ2F0ZXdheSBldmVudCBmb3IgZXZlcnkgMTAwMCBtZW1iZXJzIGZldGNoZWQuXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3JlcXVlc3QtZ3VpbGQtbWVtYmVyc31cbiAgICovXG4gIHJlcXVlc3RNZW1iZXJzOiAoZ3VpbGRJZDogQmlnU3RyaW5nLCBvcHRpb25zPzogT21pdDxSZXF1ZXN0R3VpbGRNZW1iZXJzLCAnZ3VpbGRJZCc+KSA9PiBQcm9taXNlPENhbWVsaXplPERpc2NvcmRNZW1iZXJbXT4+XG4gIC8qKlxuICAgKiBMZWF2ZXMgdGhlIHZvaWNlIGNoYW5uZWwgdGhlIGJvdCB1c2VyIGlzIGN1cnJlbnRseSBpbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBzZW5kcyB0aGUgX1VwZGF0ZSBWb2ljZSBTdGF0ZV8gZ2F0ZXdheSBjb21tYW5kIG92ZXIgdGhlIGdhdGV3YXkgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAqXG4gICAqIEBwYXJhbSBndWlsZElkIC0gVGhlIElEIG9mIHRoZSBndWlsZCB0aGUgdm9pY2UgY2hhbm5lbCB0byBsZWF2ZSBpcyBpbi5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogRmlyZXMgYSBfVm9pY2UgU3RhdGUgVXBkYXRlXyBnYXRld2F5IGV2ZW50LlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheSN1cGRhdGUtdm9pY2Utc3RhdGV9XG4gICAqL1xuICBsZWF2ZVZvaWNlQ2hhbm5lbDogKGd1aWxkSWQ6IEJpZ1N0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RNZW1iZXJSZXF1ZXN0IHtcbiAgLyoqIFRoZSB1bmlxdWUgbm9uY2UgZm9yIHRoaXMgcmVxdWVzdC4gKi9cbiAgbm9uY2U6IHN0cmluZ1xuICAvKiogVGhlIHJlc29sdmVyIGhhbmRsZXIgdG8gcnVuIHdoZW4gYWxsIG1lbWJlcnMgYXJyaXZlLiAqL1xuICByZXNvbHZlOiAodmFsdWU6IENhbWVsaXplPERpc2NvcmRNZW1iZXJbXT4gfCBQcm9taXNlTGlrZTxDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyW10+PikgPT4gdm9pZFxuICAvKiogVGhlIG1lbWJlcnMgdGhhdCBoYXZlIGFscmVhZHkgYXJyaXZlZCBmb3IgdGhpcyByZXF1ZXN0LiAqL1xuICBtZW1iZXJzOiBDYW1lbGl6ZTxEaXNjb3JkTWVtYmVyW10+XG59XG4iXSwibmFtZXMiOlsiR2F0ZXdheUludGVudHMiLCJHYXRld2F5T3Bjb2RlcyIsIkNvbGxlY3Rpb24iLCJjcmVhdGVMZWFreUJ1Y2tldCIsImRlbGF5IiwibG9nZ2VyIiwiU2hhcmQiLCJjcmVhdGVHYXRld2F5TWFuYWdlciIsIm9wdGlvbnMiLCJjb25uZWN0aW9uIiwidXJsIiwic2hhcmRzIiwic2Vzc2lvblN0YXJ0TGltaXQiLCJtYXhDb25jdXJyZW5jeSIsInJlbWFpbmluZyIsInRvdGFsIiwicmVzZXRBZnRlciIsImdhdGV3YXkiLCJldmVudHMiLCJjb21wcmVzcyIsImludGVudHMiLCJwcm9wZXJ0aWVzIiwib3MiLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJicm93c2VyIiwiZGV2aWNlIiwidG9rZW4iLCJ2ZXJzaW9uIiwidG90YWxTaGFyZHMiLCJsYXN0U2hhcmRJZCIsImZpcnN0U2hhcmRJZCIsInRvdGFsV29ya2VycyIsInNoYXJkc1BlcldvcmtlciIsInNwYXduU2hhcmREZWxheSIsIk1hcCIsImJ1Y2tldHMiLCJjYWNoZSIsInJlcXVlc3RNZW1iZXJzIiwiZW5hYmxlZCIsInBlbmRpbmciLCJjYWxjdWxhdGVUb3RhbFNoYXJkcyIsImRlYnVnIiwiTWF0aCIsImNlaWwiLCJjYWxjdWxhdGVXb3JrZXJJZCIsInNoYXJkSWQiLCJ3b3JrZXJJZCIsImZsb29yIiwicHJlcGFyZUJ1Y2tldHMiLCJpIiwic2V0Iiwid29ya2VycyIsImxlYWsiLCJtYXgiLCJyZWZpbGxBbW91bnQiLCJyZWZpbGxJbnRlcnZhbCIsIkVycm9yIiwiYnVja2V0SWQiLCJidWNrZXQiLCJnZXQiLCJ3b3JrZXIiLCJmaW5kIiwidyIsImlkIiwicXVldWUiLCJwdXNoIiwic3Bhd25TaGFyZHMiLCJQcm9taXNlIiwiYWxsIiwiZW50cmllcyIsIm1hcCIsInRlbGxXb3JrZXJUb0lkZW50aWZ5Iiwic2h1dGRvd24iLCJjb2RlIiwicmVhc29uIiwiZm9yRWFjaCIsInNoYXJkIiwiY2xvc2UiLCJpZGVudGlmeSIsImtpbGwiLCJkZWxldGUiLCJyZXF1ZXN0SWRlbnRpZnkiLCJjYWxjdWxhdGVTaGFyZElkIiwiZ3VpbGRJZCIsIk51bWJlciIsIkJpZ0ludCIsImNvbm5lY3RUb1ZvaWNlQ2hhbm5lbCIsImNoYW5uZWxJZCIsInNlbmQiLCJvcCIsIlZvaWNlU3RhdGVVcGRhdGUiLCJkIiwiZ3VpbGRfaWQiLCJ0b1N0cmluZyIsImNoYW5uZWxfaWQiLCJzZWxmX211dGUiLCJCb29sZWFuIiwic2VsZk11dGUiLCJzZWxmX2RlYWYiLCJzZWxmRGVhZiIsImVkaXRCb3RTdGF0dXMiLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsInZhbHVlcyIsImVkaXRTaGFyZFN0YXR1cyIsIlByZXNlbmNlVXBkYXRlIiwic2luY2UiLCJhZmsiLCJhY3Rpdml0aWVzIiwic3RhdHVzIiwibGltaXQiLCJHdWlsZE1lbWJlcnMiLCJ1c2VySWRzIiwibGVuZ3RoIiwibm9uY2UiLCJEYXRlIiwibm93IiwicmVzb2x2ZSIsIm1lbWJlcnMiLCJSZXF1ZXN0R3VpbGRNZW1iZXJzIiwicXVlcnkiLCJ1bmRlZmluZWQiLCJwcmVzZW5jZXMiLCJ1c2VyX2lkcyIsImxlYXZlVm9pY2VDaGFubmVsIl0sIm1hcHBpbmdzIjoiQUFDQSxPQUFTQSxrQkFBQUEsQ0FBYyxDQUFFQyxrQkFBQUEsQ0FBYyxLQUFRLG1CQUFvQixBQUVuRSxRQUFTQyxjQUFBQSxDQUFVLENBQUVDLHFCQUFBQSxDQUFpQixDQUFFQyxTQUFBQSxDQUFLLENBQUVDLFVBQUFBLENBQU0sS0FBUSxtQkFBb0IsQUFDakYsUUFBT0MsTUFBVyxZQUFhLEFBRy9CLFFBQU8sU0FBU0MscUJBQXFCQyxDQUFvQyxDQUFrQixDQUNwRkEsRUFBUUMsVUFBVSxFQUNyQkQsQ0FBQUEsRUFBUUMsVUFBVSxDQUFHLENBQ25CQyxJQUFLLDJCQUNMQyxPQUFRLEVBQ1JDLGtCQUFtQixDQUNqQkMsZUFBZ0IsRUFDaEJDLFVBQVcsSUFDWEMsTUFBTyxJ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
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import type { ActivityTypes, Camelize, DiscordGatewayPayload, GatewayOpcodes, PresenceStatus } from '@discordeno/types';
2
+ import type { ActivityTypes, Camelize, DiscordActivity, DiscordGatewayPayload, GatewayOpcodes, PresenceStatus } from '@discordeno/types';
3
3
  import type Shard from './Shard.js';
4
4
  export declare enum ShardState {
5
5
  /** Shard is fully connected to the gateway and receiving events from Discord. */
@@ -147,4 +147,22 @@ export interface BotActivity {
147
147
  type: ActivityTypes;
148
148
  url?: string;
149
149
  }
150
+ /** https://discord.com/developers/docs/topics/gateway#update-voice-state */
151
+ export interface UpdateVoiceState {
152
+ /** id of the guild */
153
+ guildId: string;
154
+ /** id of the voice channel client wants to join (null if disconnecting) */
155
+ channelId: string | null;
156
+ /** Is the client muted */
157
+ selfMute: boolean;
158
+ /** Is the client deafened */
159
+ selfDeaf: boolean;
160
+ }
161
+ /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
162
+ export interface StatusUpdate {
163
+ /** The user's activities */
164
+ activities: Camelize<DiscordActivity[]>;
165
+ /** The user's new status */
166
+ status: keyof typeof PresenceStatus;
167
+ }
150
168
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACxI,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,oBAAY,UAAU;IACpB,iFAAiF;IACjF,SAAS,IAAI;IACb,6HAA6H;IAC7H,UAAU,IAAI;IACd,yEAAyE;IACzE,YAAY,IAAI;IAChB,iIAAiI;IACjI,YAAY,IAAI;IAChB,4EAA4E;IAC5E,WAAW,IAAI;IACf,4DAA4D;IAC5D,QAAQ,IAAI;IACZ,oHAAoH;IACpH,OAAO,IAAI;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,EAAE;QACV;;;WAGG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;;WAGG;QACH,OAAO,EAAE,MAAM,CAAA;QACf;;;WAGG;QACH,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAA;IACrB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC,KAAK,CAAA;IACzB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACrC,oCAAoC;IACpC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACxC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACjC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,CAAA;IAC9D,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACpC,yDAAyD;IACzD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACnC,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IAC9C,yDAAyD;IACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACtC,qDAAqD;IACrD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACrC,8DAA8D;IAC9D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACxC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACvC,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACtC,qDAAqD;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,KAAK,OAAO,CAAA;CAC9E;AAED,oBAAY,qBAAqB;IAC/B,gCAAgC;IAChC,QAAQ,OAAO;IACf,uFAAuF;IACvF,0BAA0B,OAAO;IACjC;;OAEG;IACH,iBAAiB,OAAO;IACxB,2FAA2F;IAC3F,eAAe,OAAO;IACtB,oFAAoF;IACpF,SAAS,OAAO;IAChB,+EAA+E;IAC/E,aAAa,OAAO;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,EAAE,EAAE,cAAc,CAAA;IAClB,oBAAoB;IACpB,CAAC,EAAE,OAAO,CAAA;CACX;AAED,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAE9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,4BAA4B;IAC5B,UAAU,EAAE,WAAW,EAAE,CAAA;IACzB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,OAAO,cAAc,CAAA;CACpC;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,aAAa,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAG3B,4BAA4B;IAC5B,UAAU,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAA;IACvC,4BAA4B;IAC5B,MAAM,EAAE,MAAM,OAAO,cAAc,CAAA;CAGpC"}
package/dist/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export var ShardState;!function(ShardState){ShardState[ShardState.Connected=0]="Connected",ShardState[ShardState.Connecting=1]="Connecting",ShardState[ShardState.Disconnected=2]="Disconnected",ShardState[ShardState.Unidentified=3]="Unidentified",ShardState[ShardState.Identifying=4]="Identifying",ShardState[ShardState.Resuming=5]="Resuming",ShardState[ShardState.Offline=6]="Offline"}(ShardState||(ShardState={}));export var ShardSocketCloseCodes;!function(ShardSocketCloseCodes){ShardSocketCloseCodes[ShardSocketCloseCodes.Shutdown=3e3]="Shutdown",ShardSocketCloseCodes[ShardSocketCloseCodes.ResumeClosingOldConnection=3024]="ResumeClosingOldConnection",ShardSocketCloseCodes[ShardSocketCloseCodes.ZombiedConnection=3010]="ZombiedConnection",ShardSocketCloseCodes[ShardSocketCloseCodes.TestingFinished=3064]="TestingFinished",ShardSocketCloseCodes[ShardSocketCloseCodes.Resharded=3065]="Resharded",ShardSocketCloseCodes[ShardSocketCloseCodes.ReIdentifying=3066]="ReIdentifying"}(ShardSocketCloseCodes||(ShardSocketCloseCodes={}));
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGl2aXR5VHlwZXMsIENhbWVsaXplLCBEaXNjb3JkR2F0ZXdheVBheWxvYWQsIEdhdGV3YXlPcGNvZGVzLCBQcmVzZW5jZVN0YXR1cyB9IGZyb20gJ0BkaXNjb3JkZW5vL3R5cGVzJ1xuaW1wb3J0IHR5cGUgU2hhcmQgZnJvbSAnLi9TaGFyZC5qcydcblxuZXhwb3J0IGVudW0gU2hhcmRTdGF0ZSB7XG4gIC8qKiBTaGFyZCBpcyBmdWxseSBjb25uZWN0ZWQgdG8gdGhlIGdhdGV3YXkgYW5kIHJlY2VpdmluZyBldmVudHMgZnJvbSBEaXNjb3JkLiAqL1xuICBDb25uZWN0ZWQgPSAwLFxuICAvKiogU2hhcmQgc3RhcnRlZCB0byBjb25uZWN0IHRvIHRoZSBnYXRld2F5LiBUaGlzIGlzIG9ubHkgdXNlZCBpZiB0aGUgc2hhcmQgaXMgbm90IGN1cnJlbnRseSB0cnlpbmcgdG8gaWRlbnRpZnkgb3IgcmVzdW1lLiAqL1xuICBDb25uZWN0aW5nID0gMSxcbiAgLyoqIFNoYXJkIGdvdCBkaXNjb25uZWN0ZWQgYW5kIHJlY29ubmVjdGlvbiBhY3Rpb25zIGhhdmUgYmVlbiBzdGFydGVkLiAqL1xuICBEaXNjb25uZWN0ZWQgPSAyLFxuICAvKiogVGhlIHNoYXJkIGlzIGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBidXQgb25seSBoZWFydGJlYXRpbmcuIEF0IHRoaXMgc3RhdGUgdGhlIHNoYXJkIGhhcyBub3QgYmVlbiBpZGVudGlmaWVkIHdpdGggZGlzY29yZC4gKi9cbiAgVW5pZGVudGlmaWVkID0gMyxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byBpZGVudGlmeSB3aXRoIHRoZSBnYXRld2F5IHRvIGNyZWF0ZSBhIG5ldyBzZXNzaW9uLiAqL1xuICBJZGVudGlmeWluZyA9IDQsXG4gIC8qKiBTaGFyZCBpcyB0cnlpbmcgdG8gcmVzdW1lIGEgc2Vzc2lvbiB3aXRoIHRoZSBnYXRld2F5LiAqL1xuICBSZXN1bWluZyA9IDUsXG4gIC8qKiBTaGFyZCBnb3Qgc2h1dCBkb3duIHN0dWRpZWQgb3IgZHVlIHRvIGEgbm90IChzZWxmKSBmaXhhYmxlIGVycm9yIGFuZCBtYXkgbm90IGF0dGVtcHQgdG8gcmVjb25uZWN0IG9uIGl0cyBvd24uICovXG4gIE9mZmxpbmUgPSA2LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkR2F0ZXdheUNvbmZpZyB7XG4gIC8qKiBXaGV0aGVyIGluY29taW5nIHBheWxvYWRzIGFyZSBjb21wcmVzc2VkIHVzaW5nIHpsaWIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjb21wcmVzczogYm9vbGVhblxuICAvKiogVGhlIGNhbGN1bGF0ZWQgaW50ZW50IHZhbHVlIG9mIHRoZSBldmVudHMgd2hpY2ggdGhlIHNoYXJkIHNob3VsZCByZWNlaXZlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBpbnRlbnRzOiBudW1iZXJcbiAgLyoqIElkZW50aWZ5IHByb3BlcnRpZXMgdG8gdXNlICovXG4gIHByb3BlcnRpZXM6IHtcbiAgICAvKiogT3BlcmF0aW5nIHN5c3RlbSB0aGUgc2hhcmQgcnVucyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZGFyd2luXCIgfCBcImxpbnV4XCIgfCBcIndpbmRvd3NcIlxuICAgICAqL1xuICAgIG9zOiBzdHJpbmdcbiAgICAvKiogVGhlIFwiYnJvd3NlclwiIHdoZXJlIHRoaXMgc2hhcmQgaXMgcnVubmluZyBvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgYnJvd3Nlcjogc3RyaW5nXG4gICAgLyoqIFRoZSBkZXZpY2Ugb24gd2hpY2ggdGhlIHNoYXJkIGlzIHJ1bm5pbmcuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIkRpc2NvcmRlbm9cIlxuICAgICAqL1xuICAgIGRldmljZTogc3RyaW5nXG4gIH1cbiAgLyoqIEJvdCB0b2tlbiB3aGljaCBpcyB1c2VkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCAqL1xuICB0b2tlbjogc3RyaW5nXG4gIC8qKiBUaGUgVVJMIG9mIHRoZSBnYXRld2F5IHdoaWNoIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IFwid3NzOi8vZ2F0ZXdheS5kaXNjb3JkLmdnXCJcbiAgICovXG4gIHVybDogc3RyaW5nXG4gIC8qKiBUaGUgZ2F0ZXdheSB2ZXJzaW9uIHdoaWNoIHNob3VsZCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgdmVyc2lvbjogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHNoYXJkcyB0byBjb25uZWN0IHRvIGFjcm9zcyB0aGUgZW50aXJlIGJvdC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgdG90YWxTaGFyZHM6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkSGVhcnQge1xuICAvKiogV2hldGhlciBvciBub3QgdGhlIGhlYXJ0YmVhdCB3YXMgYWNrbm93bGVkZ2VkIGJ5IERpc2NvcmQgaW4gdGltZS4gKi9cbiAgYWNrbm93bGVkZ2VkOiBib29sZWFuXG4gIC8qKiBJbnRlcnZhbCBiZXR3ZWVuIGhlYXJ0YmVhdHMgcmVxdWVzdGVkIGJ5IERpc2NvcmQuICovXG4gIGludGVydmFsOiBudW1iZXJcbiAgLyoqIElkIG9mIHRoZSBpbnRlcnZhbCwgd2hpY2ggaXMgdXNlZCBmb3Igc2VuZGluZyB0aGUgaGVhcnRiZWF0cy4gKi9cbiAgaW50ZXJ2YWxJZD86IE5vZGVKUy5UaW1lclxuICAvKiogVW5peCAoaW4gbWlsbGlzZWNvbmRzKSB0aW1lc3RhbXAgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgQUNLIHdhcyByZWNlaXZlZCBmcm9tIERpc2NvcmQuICovXG4gIGxhc3RBY2s/OiBudW1iZXJcbiAgLyoqIFVuaXggdGltZXN0YW1wIChpbiBtaWxsaXNlY29uZHMpIHdoZW4gdGhlIGxhc3QgaGVhcnRiZWF0IHdhcyBzZW50LiAqL1xuICBsYXN0QmVhdD86IG51bWJlclxuICAvKiogUm91bmQgdHJpcCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIGZyb20gU2hhcmQgdG8gRGlzY29yZCBhbmQgYmFjay5cbiAgICogQ2FsY3VsYXRlZCB1c2luZyB0aGUgaGVhcnRiZWF0IHN5c3RlbS5cbiAgICogTm90ZTogdGhpcyB2YWx1ZSBpcyB1bmRlZmluZWQgdW50aWwgdGhlIGZpcnN0IGhlYXJ0YmVhdCB0byBEaXNjb3JkIGhhcyBoYXBwZW5lZC5cbiAgICovXG4gIHJ0dD86IG51bWJlclxuICAvKiogSWQgb2YgdGhlIHRpbWVvdXQgd2hpY2ggaXMgdXNlZCBmb3Igc2VuZGluZyB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgc2luY2UgaXQncyBcInNwZWNpYWxcIi4gKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZEV2ZW50cyB7XG4gIC8qKiBBIGhlYXJ0YmVhdCBoYXMgYmVlbiBzZW5kLiAqL1xuICBoZWFydGJlYXQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBBIGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkLiAqL1xuICBoZWFydGJlYXRBY2s/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBTaGFyZCBoYXMgcmVjZWl2ZWQgYSBIZWxsbyBwYXlsb2FkLiAqL1xuICBoZWxsbz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBTaGFyZHMgc2Vzc2lvbiBoYXMgYmVlbiBpbnZhbGlkYXRlZC4gKi9cbiAgaW52YWxpZFNlc3Npb24/OiAoc2hhcmQ6IFNoYXJkLCByZXN1bWFibGU6IGJvb2xlYW4pID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCBhIHJlc3VtZSBhY3Rpb24uICovXG4gIHJlc3VtaW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdWNjZXNzZnVsbHkgcmVzdW1lZCBhbiBvbGQgc2Vzc2lvbi4gKi9cbiAgcmVzdW1lZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIERpc2NvcmQgaGFzIHJlcXVlc3RlZCB0aGUgU2hhcmQgdG8gcmVjb25uZWN0LiAqL1xuICByZXF1ZXN0ZWRSZWNvbm5lY3Q/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgc3RhcnRlZCB0byBjb25uZWN0IHRvIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0aW5nPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGlzIGNvbm5lY3RlZCB3aXRoIERpc2NvcmQncyBnYXRld2F5LiAqL1xuICBjb25uZWN0ZWQ/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIGJlZW4gZGlzY29ubmVjdGVkIGZyb20gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGRpc2Nvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3RhcnRlZCB0byBpZGVudGlmeSBpdHNlbGYgdG8gRGlzY29yZC4gKi9cbiAgaWRlbnRpZnlpbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGlkZW50aWZpZWQgaXRzZWxmIHdpdGggRGlzY29yZC4gKi9cbiAgaWRlbnRpZmllZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgcmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gRGlzY29yZC4gKi9cbiAgbWVzc2FnZT86IChzaGFyZDogU2hhcmQsIHBheWxvYWQ6IENhbWVsaXplPERpc2NvcmRHYXRld2F5UGF5bG9hZD4pID0+IHVua25vd25cbn1cblxuZXhwb3J0IGVudW0gU2hhcmRTb2NrZXRDbG9zZUNvZGVzIHtcbiAgLyoqIEEgcmVndWxhciBTaGFyZCBzaHV0ZG93bi4gKi9cbiAgU2h1dGRvd24gPSAzMDAwLFxuICAvKiogQSByZXN1bWUgaGFzIGJlZW4gcmVxdWVzdGVkIGFuZCB0aGVyZWZvcmUgdGhlIG9sZCBjb25uZWN0aW9uIG5lZWRzIHRvIGJlIGNsb3NlZC4gKi9cbiAgUmVzdW1lQ2xvc2luZ09sZENvbm5lY3Rpb24gPSAzMDI0LFxuICAvKiogRGlkIG5vdCByZWNlaXZlIGEgaGVhcnRiZWF0IEFDSyBpbiB0aW1lLlxuICAgKiBDbG9zaW5nIHRoZSBzaGFyZCBhbmQgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbi5cbiAgICovXG4gIFpvbWJpZWRDb25uZWN0aW9uID0gMzAxMCxcbiAgLyoqIERpc2NvcmRlbm8ncyBnYXRld2F5IHRlc3RzIGhhZSBiZWVuIGZpbmlzaGVkLCB0aGVyZWZvcmUgdGhlIFNoYXJkIGNhbiBiZSB0dXJuZWQgb2ZmLiAqL1xuICBUZXN0aW5nRmluaXNoZWQgPSAzMDY0LFxuICAvKiogU3BlY2lhbCBjbG9zZSBjb2RlIHJlc2VydmVkIGZvciBEaXNjb3JkZW5vJ3MgemVyby1kb3dudGltZSByZXNoYXJkaW5nIHN5c3RlbS4gKi9cbiAgUmVzaGFyZGVkID0gMzA2NSxcbiAgLyoqIFNoYXJkIGlzIHJlLWlkZW50aWZ5aW5nIHRoZXJlZm9yZSB0aGUgb2xkIGNvbm5lY3Rpb24gbmVlZHMgdG8gYmUgY2xvc2VkLiAqL1xuICBSZUlkZW50aWZ5aW5nID0gMzA2Nixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGFyZFNvY2tldFJlcXVlc3Qge1xuICAvKiogVGhlIE9QLUNvZGUgZm9yIHRoZSBwYXlsb2FkIHRvIHNlbmQuICovXG4gIG9wOiBHYXRld2F5T3Bjb2Rlc1xuICAvKiogUGF5bG9hZCBkYXRhLiAqL1xuICBkOiB1bmtub3duXG59XG5cbi8qKiBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheS1ldmVudHMjdXBkYXRlLXByZXNlbmNlICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdFN0YXR1c1VwZGF0ZSB7XG4gIC8vIC8qKiBVbml4IHRpbWUgKGluIG1pbGxpc2Vjb25kcykgb2Ygd2hlbiB0aGUgY2xpZW50IHdlbnQgaWRsZSwgb3IgbnVsbCBpZiB0aGUgY2xpZW50IGlzIG5vdCBpZGxlICovXG4gIHNpbmNlOiBudW1iZXIgfCBudWxsXG4gIC8qKiBUaGUgdXNlcidzIGFjdGl2aXRpZXMgKi9cbiAgYWN0aXZpdGllczogQm90QWN0aXZpdHlbXVxuICAvKiogVGhlIHVzZXIncyBuZXcgc3RhdHVzICovXG4gIHN0YXR1czoga2V5b2YgdHlwZW9mIFByZXNlbmNlU3RhdHVzXG59XG5cbi8qKiBodHRwczovL2Rpc2NvcmQuY29tL2RldmVsb3BlcnMvZG9jcy90b3BpY3MvZ2F0ZXdheS1ldmVudHMjYWN0aXZpdHktb2JqZWN0ICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdEFjdGl2aXR5IHtcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IEFjdGl2aXR5VHlwZXNcbiAgdXJsPzogc3RyaW5nXG59XG4iXSwibmFtZXMiOlsiU2hhcmRTdGF0ZSIsIkNvbm5lY3RlZCIsIkNvbm5lY3RpbmciLCJEaXNjb25uZWN0ZWQiLCJVbmlkZW50aWZpZWQiLCJJZGVudGlmeWluZyIsIlJlc3VtaW5nIiwiT2ZmbGluZSIsIlNoYXJkU29ja2V0Q2xvc2VDb2RlcyIsIlNodXRkb3duIiwiUmVzdW1lQ2xvc2luZ09sZENvbm5lY3Rpb24iLCJab21iaWVkQ29ubmVjdGlvbiIsIlRlc3RpbmdGaW5pc2hlZCIsIlJlc2hhcmRlZCIsIlJlSWRlbnRpZnlpbmciXSwibWFwcGluZ3MiOiJBQUFBLFdBR08scUJBQUtBLFVBQVUsRUFBVkEsV0FBQUEsV0FFVkMsVUFBWSxHQUFaQSxZQUZVRCxXQUFBQSxXQUlWRSxXQUFhLEdBQWJBLGFBSlVGLFdBQUFBLFdBTVZHLGFBQWUsR0FBZkEsZUFOVUgsV0FBQUEsV0FRVkksYUFBZSxHQUFmQSxlQVJVSixXQUFBQSxXQVVWSyxZQUFjLEdBQWRBLGNBVlVMLFdBQUFBLFdBWVZNLFNBQVcsR0FBWEEsV0FaVU4sV0FBQUEsV0FjVk8sUUFBVSxHQUFWQSxXQWRVUCxhQUFBQSwyQkFrSEwsZ0NBQUtRLHFCQUFxQixFQUFyQkEsc0JBQUFBLHNCQUVWQyxTQUFXLEtBQVhBLFdBRlVELHNCQUFBQSxzQkFJVkUsMkJBQTZCLE1BQTdCQSw2QkFKVUYsc0JBQUFBLHNCQVFWRyxrQkFBb0IsTUFBcEJBLG9CQVJVSCxzQkFBQUEsc0JBVVZJLGdCQUFrQixNQUFsQkEsa0JBVlVKLHNCQUFBQSxzQkFZVkssVUFBWSxNQUFaQSxZQVpVTCxzQkFBQUEsc0JBY1ZNLGNBQWdCLE1BQWhCQSxpQkFkVU4sd0JBQUFBIn0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGl2aXR5VHlwZXMsIENhbWVsaXplLCBEaXNjb3JkQWN0aXZpdHksIERpc2NvcmRHYXRld2F5UGF5bG9hZCwgR2F0ZXdheU9wY29kZXMsIFByZXNlbmNlU3RhdHVzIH0gZnJvbSAnQGRpc2NvcmRlbm8vdHlwZXMnXG5pbXBvcnQgdHlwZSBTaGFyZCBmcm9tICcuL1NoYXJkLmpzJ1xuXG5leHBvcnQgZW51bSBTaGFyZFN0YXRlIHtcbiAgLyoqIFNoYXJkIGlzIGZ1bGx5IGNvbm5lY3RlZCB0byB0aGUgZ2F0ZXdheSBhbmQgcmVjZWl2aW5nIGV2ZW50cyBmcm9tIERpc2NvcmQuICovXG4gIENvbm5lY3RlZCA9IDAsXG4gIC8qKiBTaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gdGhlIGdhdGV3YXkuIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBzaGFyZCBpcyBub3QgY3VycmVudGx5IHRyeWluZyB0byBpZGVudGlmeSBvciByZXN1bWUuICovXG4gIENvbm5lY3RpbmcgPSAxLFxuICAvKiogU2hhcmQgZ290IGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0aW9uIGFjdGlvbnMgaGF2ZSBiZWVuIHN0YXJ0ZWQuICovXG4gIERpc2Nvbm5lY3RlZCA9IDIsXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBnYXRld2F5IGJ1dCBvbmx5IGhlYXJ0YmVhdGluZy4gQXQgdGhpcyBzdGF0ZSB0aGUgc2hhcmQgaGFzIG5vdCBiZWVuIGlkZW50aWZpZWQgd2l0aCBkaXNjb3JkLiAqL1xuICBVbmlkZW50aWZpZWQgPSAzLFxuICAvKiogU2hhcmQgaXMgdHJ5aW5nIHRvIGlkZW50aWZ5IHdpdGggdGhlIGdhdGV3YXkgdG8gY3JlYXRlIGEgbmV3IHNlc3Npb24uICovXG4gIElkZW50aWZ5aW5nID0gNCxcbiAgLyoqIFNoYXJkIGlzIHRyeWluZyB0byByZXN1bWUgYSBzZXNzaW9uIHdpdGggdGhlIGdhdGV3YXkuICovXG4gIFJlc3VtaW5nID0gNSxcbiAgLyoqIFNoYXJkIGdvdCBzaHV0IGRvd24gc3R1ZGllZCBvciBkdWUgdG8gYSBub3QgKHNlbGYpIGZpeGFibGUgZXJyb3IgYW5kIG1heSBub3QgYXR0ZW1wdCB0byByZWNvbm5lY3Qgb24gaXRzIG93bi4gKi9cbiAgT2ZmbGluZSA9IDYsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRHYXRld2F5Q29uZmlnIHtcbiAgLyoqIFdoZXRoZXIgaW5jb21pbmcgcGF5bG9hZHMgYXJlIGNvbXByZXNzZWQgdXNpbmcgemxpYi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNvbXByZXNzOiBib29sZWFuXG4gIC8qKiBUaGUgY2FsY3VsYXRlZCBpbnRlbnQgdmFsdWUgb2YgdGhlIGV2ZW50cyB3aGljaCB0aGUgc2hhcmQgc2hvdWxkIHJlY2VpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGludGVudHM6IG51bWJlclxuICAvKiogSWRlbnRpZnkgcHJvcGVydGllcyB0byB1c2UgKi9cbiAgcHJvcGVydGllczoge1xuICAgIC8qKiBPcGVyYXRpbmcgc3lzdGVtIHRoZSBzaGFyZCBydW5zIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJkYXJ3aW5cIiB8IFwibGludXhcIiB8IFwid2luZG93c1wiXG4gICAgICovXG4gICAgb3M6IHN0cmluZ1xuICAgIC8qKiBUaGUgXCJicm93c2VyXCIgd2hlcmUgdGhpcyBzaGFyZCBpcyBydW5uaW5nIG9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJEaXNjb3JkZW5vXCJcbiAgICAgKi9cbiAgICBicm93c2VyOiBzdHJpbmdcbiAgICAvKiogVGhlIGRldmljZSBvbiB3aGljaCB0aGUgc2hhcmQgaXMgcnVubmluZy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiRGlzY29yZGVub1wiXG4gICAgICovXG4gICAgZGV2aWNlOiBzdHJpbmdcbiAgfVxuICAvKiogQm90IHRva2VuIHdoaWNoIGlzIHVzZWQgdG8gY29ubmVjdCB0byBEaXNjb3JkICovXG4gIHRva2VuOiBzdHJpbmdcbiAgLyoqIFRoZSBVUkwgb2YgdGhlIGdhdGV3YXkgd2hpY2ggc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ3c3M6Ly9nYXRld2F5LmRpc2NvcmQuZ2dcIlxuICAgKi9cbiAgdXJsOiBzdHJpbmdcbiAgLyoqIFRoZSBnYXRld2F5IHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXJcbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2Ygc2hhcmRzIHRvIGNvbm5lY3QgdG8gYWNyb3NzIHRoZSBlbnRpcmUgYm90LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICB0b3RhbFNoYXJkczogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmRIZWFydCB7XG4gIC8qKiBXaGV0aGVyIG9yIG5vdCB0aGUgaGVhcnRiZWF0IHdhcyBhY2tub3dsZWRnZWQgYnkgRGlzY29yZCBpbiB0aW1lLiAqL1xuICBhY2tub3dsZWRnZWQ6IGJvb2xlYW5cbiAgLyoqIEludGVydmFsIGJldHdlZW4gaGVhcnRiZWF0cyByZXF1ZXN0ZWQgYnkgRGlzY29yZC4gKi9cbiAgaW50ZXJ2YWw6IG51bWJlclxuICAvKiogSWQgb2YgdGhlIGludGVydmFsLCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBoZWFydGJlYXRzLiAqL1xuICBpbnRlcnZhbElkPzogTm9kZUpTLlRpbWVyXG4gIC8qKiBVbml4IChpbiBtaWxsaXNlY29uZHMpIHRpbWVzdGFtcCB3aGVuIHRoZSBsYXN0IGhlYXJ0YmVhdCBBQ0sgd2FzIHJlY2VpdmVkIGZyb20gRGlzY29yZC4gKi9cbiAgbGFzdEFjaz86IG51bWJlclxuICAvKiogVW5peCB0aW1lc3RhbXAgKGluIG1pbGxpc2Vjb25kcykgd2hlbiB0aGUgbGFzdCBoZWFydGJlYXQgd2FzIHNlbnQuICovXG4gIGxhc3RCZWF0PzogbnVtYmVyXG4gIC8qKiBSb3VuZCB0cmlwIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgZnJvbSBTaGFyZCB0byBEaXNjb3JkIGFuZCBiYWNrLlxuICAgKiBDYWxjdWxhdGVkIHVzaW5nIHRoZSBoZWFydGJlYXQgc3lzdGVtLlxuICAgKiBOb3RlOiB0aGlzIHZhbHVlIGlzIHVuZGVmaW5lZCB1bnRpbCB0aGUgZmlyc3QgaGVhcnRiZWF0IHRvIERpc2NvcmQgaGFzIGhhcHBlbmVkLlxuICAgKi9cbiAgcnR0PzogbnVtYmVyXG4gIC8qKiBJZCBvZiB0aGUgdGltZW91dCB3aGljaCBpcyB1c2VkIGZvciBzZW5kaW5nIHRoZSBmaXJzdCBoZWFydGJlYXQgdG8gRGlzY29yZCBzaW5jZSBpdCdzIFwic3BlY2lhbFwiLiAqL1xuICB0aW1lb3V0SWQ/OiBOb2RlSlMuVGltZW91dFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkRXZlbnRzIHtcbiAgLyoqIEEgaGVhcnRiZWF0IGhhcyBiZWVuIHNlbmQuICovXG4gIGhlYXJ0YmVhdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIEEgaGVhcnRiZWF0IEFDSyB3YXMgcmVjZWl2ZWQuICovXG4gIGhlYXJ0YmVhdEFjaz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFNoYXJkIGhhcyByZWNlaXZlZCBhIEhlbGxvIHBheWxvYWQuICovXG4gIGhlbGxvPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIFNoYXJkcyBzZXNzaW9uIGhhcyBiZWVuIGludmFsaWRhdGVkLiAqL1xuICBpbnZhbGlkU2Vzc2lvbj86IChzaGFyZDogU2hhcmQsIHJlc3VtYWJsZTogYm9vbGVhbikgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIGEgcmVzdW1lIGFjdGlvbi4gKi9cbiAgcmVzdW1pbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaGFzIHN1Y2Nlc3NmdWxseSByZXN1bWVkIGFuIG9sZCBzZXNzaW9uLiAqL1xuICByZXN1bWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogRGlzY29yZCBoYXMgcmVxdWVzdGVkIHRoZSBTaGFyZCB0byByZWNvbm5lY3QuICovXG4gIHJlcXVlc3RlZFJlY29ubmVjdD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBzdGFydGVkIHRvIGNvbm5lY3QgdG8gRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3Rpbmc/OiAoc2hhcmQ6IFNoYXJkKSA9PiB1bmtub3duXG4gIC8qKiBUaGUgc2hhcmQgaXMgY29ubmVjdGVkIHdpdGggRGlzY29yZCdzIGdhdGV3YXkuICovXG4gIGNvbm5lY3RlZD86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBEaXNjb3JkJ3MgZ2F0ZXdheS4gKi9cbiAgZGlzY29ubmVjdGVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyBzdGFydGVkIHRvIGlkZW50aWZ5IGl0c2VsZiB0byBEaXNjb3JkLiAqL1xuICBpZGVudGlmeWluZz86IChzaGFyZDogU2hhcmQpID0+IHVua25vd25cbiAgLyoqIFRoZSBzaGFyZCBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gaWRlbnRpZmllZCBpdHNlbGYgd2l0aCBEaXNjb3JkLiAqL1xuICBpZGVudGlmaWVkPzogKHNoYXJkOiBTaGFyZCkgPT4gdW5rbm93blxuICAvKiogVGhlIHNoYXJkIGhhcyByZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBEaXNjb3JkLiAqL1xuICBtZXNzYWdlPzogKHNoYXJkOiBTaGFyZCwgcGF5bG9hZDogQ2FtZWxpemU8RGlzY29yZEdhdGV3YXlQYXlsb2FkPikgPT4gdW5rbm93blxufVxuXG5leHBvcnQgZW51bSBTaGFyZFNvY2tldENsb3NlQ29kZXMge1xuICAvKiogQSByZWd1bGFyIFNoYXJkIHNodXRkb3duLiAqL1xuICBTaHV0ZG93biA9IDMwMDAsXG4gIC8qKiBBIHJlc3VtZSBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZXJlZm9yZSB0aGUgb2xkIGNvbm5lY3Rpb24gbmVlZHMgdG8gYmUgY2xvc2VkLiAqL1xuICBSZXN1bWVDbG9zaW5nT2xkQ29ubmVjdGlvbiA9IDMwMjQsXG4gIC8qKiBEaWQgbm90IHJlY2VpdmUgYSBoZWFydGJlYXQgQUNLIGluIHRpbWUuXG4gICAqIENsb3NpbmcgdGhlIHNoYXJkIGFuZCBjcmVhdGluZyBhIG5ldyBzZXNzaW9uLlxuICAgKi9cbiAgWm9tYmllZENvbm5lY3Rpb24gPSAzMDEwLFxuICAvKiogRGlzY29yZGVubydzIGdhdGV3YXkgdGVzdHMgaGFlIGJlZW4gZmluaXNoZWQsIHRoZXJlZm9yZSB0aGUgU2hhcmQgY2FuIGJlIHR1cm5lZCBvZmYuICovXG4gIFRlc3RpbmdGaW5pc2hlZCA9IDMwNjQsXG4gIC8qKiBTcGVjaWFsIGNsb3NlIGNvZGUgcmVzZXJ2ZWQgZm9yIERpc2NvcmRlbm8ncyB6ZXJvLWRvd250aW1lIHJlc2hhcmRpbmcgc3lzdGVtLiAqL1xuICBSZXNoYXJkZWQgPSAzMDY1LFxuICAvKiogU2hhcmQgaXMgcmUtaWRlbnRpZnlpbmcgdGhlcmVmb3JlIHRoZSBvbGQgY29ubmVjdGlvbiBuZWVkcyB0byBiZSBjbG9zZWQuICovXG4gIFJlSWRlbnRpZnlpbmcgPSAzMDY2LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJkU29ja2V0UmVxdWVzdCB7XG4gIC8qKiBUaGUgT1AtQ29kZSBmb3IgdGhlIHBheWxvYWQgdG8gc2VuZC4gKi9cbiAgb3A6IEdhdGV3YXlPcGNvZGVzXG4gIC8qKiBQYXlsb2FkIGRhdGEuICovXG4gIGQ6IHVua25vd25cbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyN1cGRhdGUtcHJlc2VuY2UgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90U3RhdHVzVXBkYXRlIHtcbiAgLy8gLyoqIFVuaXggdGltZSAoaW4gbWlsbGlzZWNvbmRzKSBvZiB3aGVuIHRoZSBjbGllbnQgd2VudCBpZGxlLCBvciBudWxsIGlmIHRoZSBjbGllbnQgaXMgbm90IGlkbGUgKi9cbiAgc2luY2U6IG51bWJlciB8IG51bGxcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzOiBCb3RBY3Rpdml0eVtdXG4gIC8qKiBUaGUgdXNlcidzIG5ldyBzdGF0dXMgKi9cbiAgc3RhdHVzOiBrZXlvZiB0eXBlb2YgUHJlc2VuY2VTdGF0dXNcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5LWV2ZW50cyNhY3Rpdml0eS1vYmplY3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm90QWN0aXZpdHkge1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogQWN0aXZpdHlUeXBlc1xuICB1cmw/OiBzdHJpbmdcbn1cblxuLyoqIGh0dHBzOi8vZGlzY29yZC5jb20vZGV2ZWxvcGVycy9kb2NzL3RvcGljcy9nYXRld2F5I3VwZGF0ZS12b2ljZS1zdGF0ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVWb2ljZVN0YXRlIHtcbiAgLyoqIGlkIG9mIHRoZSBndWlsZCAqL1xuICBndWlsZElkOiBzdHJpbmdcbiAgLyoqIGlkIG9mIHRoZSB2b2ljZSBjaGFubmVsIGNsaWVudCB3YW50cyB0byBqb2luIChudWxsIGlmIGRpc2Nvbm5lY3RpbmcpICovXG4gIGNoYW5uZWxJZDogc3RyaW5nIHwgbnVsbFxuICAvKiogSXMgdGhlIGNsaWVudCBtdXRlZCAqL1xuICBzZWxmTXV0ZTogYm9vbGVhblxuICAvKiogSXMgdGhlIGNsaWVudCBkZWFmZW5lZCAqL1xuICBzZWxmRGVhZjogYm9vbGVhblxufVxuXG4vKiogaHR0cHM6Ly9kaXNjb3JkLmNvbS9kZXZlbG9wZXJzL2RvY3MvdG9waWNzL2dhdGV3YXktZXZlbnRzI3VwZGF0ZS1wcmVzZW5jZSAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNVcGRhdGUge1xuICAvLyAvKiogVW5peCB0aW1lIChpbiBtaWxsaXNlY29uZHMpIG9mIHdoZW4gdGhlIGNsaWVudCB3ZW50IGlkbGUsIG9yIG51bGwgaWYgdGhlIGNsaWVudCBpcyBub3QgaWRsZSAqL1xuICAvLyBzaW5jZTogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIFRoZSB1c2VyJ3MgYWN0aXZpdGllcyAqL1xuICBhY3Rpdml0aWVzOiBDYW1lbGl6ZTxEaXNjb3JkQWN0aXZpdHlbXT5cbiAgLyoqIFRoZSB1c2VyJ3MgbmV3IHN0YXR1cyAqL1xuICBzdGF0dXM6IGtleW9mIHR5cGVvZiBQcmVzZW5jZVN0YXR1c1xuICAvLyAvKiogV2hldGhlciBvciBub3QgdGhlIGNsaWVudCBpcyBhZmsgKi9cbiAgLy8gYWZrOiBib29sZWFuO1xufVxuIl0sIm5hbWVzIjpbIlNoYXJkU3RhdGUiLCJDb25uZWN0ZWQiLCJDb25uZWN0aW5nIiwiRGlzY29ubmVjdGVkIiwiVW5pZGVudGlmaWVkIiwiSWRlbnRpZnlpbmciLCJSZXN1bWluZyIsIk9mZmxpbmUiLCJTaGFyZFNvY2tldENsb3NlQ29kZXMiLCJTaHV0ZG93biIsIlJlc3VtZUNsb3NpbmdPbGRDb25uZWN0aW9uIiwiWm9tYmllZENvbm5lY3Rpb24iLCJUZXN0aW5nRmluaXNoZWQiLCJSZXNoYXJkZWQiLCJSZUlkZW50aWZ5aW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxXQUdPLHFCQUFLQSxVQUFVLEVBQVZBLFdBQUFBLFdBRVZDLFVBQVksR0FBWkEsWUFGVUQsV0FBQUEsV0FJVkUsV0FBYSxHQUFiQSxhQUpVRixXQUFBQSxXQU1WRyxhQUFlLEdBQWZBLGVBTlVILFdBQUFBLFdBUVZJLGFBQWUsR0FBZkEsZUFSVUosV0FBQUEsV0FVVkssWUFBYyxHQUFkQSxjQVZVTCxXQUFBQSxXQVlWTSxTQUFXLEdBQVhBLFdBWlVOLFdBQUFBLFdBY1ZPLFFBQVUsR0FBVkEsV0FkVVAsYUFBQUEsMkJBa0hMLGdDQUFLUSxxQkFBcUIsRUFBckJBLHNCQUFBQSxzQkFFVkMsU0FBVyxLQUFYQSxXQUZVRCxzQkFBQUEsc0JBSVZFLDJCQUE2QixNQUE3QkEsNkJBSlVGLHNCQUFBQSxzQkFRVkcsa0JBQW9CLE1BQXBCQSxvQkFSVUgsc0JBQUFBLHNCQVVWSSxnQkFBa0IsTUFBbEJBLGtCQVZVSixzQkFBQUEsc0JBWVZLLFVBQVksTUFBWkEsWUFaVUwsc0JBQUFBLHNCQWNWTSxjQUFnQixNQUFoQkEsaUJBZFVOLHdCQUFBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@discordeno/gateway",
3
- "version": "19.0.0-next.f6bd769",
3
+ "version": "19.0.0-next.fbd26f4",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "type": "module",
@@ -24,8 +24,8 @@
24
24
  "test:test-type": "tsc --project tsconfig.test.json"
25
25
  },
26
26
  "dependencies": {
27
- "@discordeno/types": "19.0.0-next.f6bd769",
28
- "@discordeno/utils": "19.0.0-next.f6bd769",
27
+ "@discordeno/types": "19.0.0-next.fbd26f4",
28
+ "@discordeno/utils": "19.0.0-next.fbd26f4",
29
29
  "ws": "^8.11.0"
30
30
  },
31
31
  "devDependencies": {