@discordeno/rest 18.0.0-next.c271a85 → 19.0.0-next.024fbe3

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.
Files changed (69) hide show
  1. package/dist/index.d.ts +3 -16
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/{createInvalidRequestBucket.d.ts → invalidBucket.d.ts} +1 -5
  5. package/dist/invalidBucket.d.ts.map +1 -0
  6. package/dist/invalidBucket.js +2 -0
  7. package/dist/manager.d.ts +3574 -0
  8. package/dist/manager.d.ts.map +1 -0
  9. package/dist/manager.js +2 -0
  10. package/dist/queue.d.ts +57 -0
  11. package/dist/queue.d.ts.map +1 -0
  12. package/dist/queue.js +2 -0
  13. package/package.json +15 -7
  14. package/dist/checkRateLimits.d.ts +0 -4
  15. package/dist/checkRateLimits.d.ts.map +0 -1
  16. package/dist/checkRateLimits.js +0 -2
  17. package/dist/cleanupQueues.d.ts +0 -7
  18. package/dist/cleanupQueues.d.ts.map +0 -1
  19. package/dist/cleanupQueues.js +0 -2
  20. package/dist/convertRestError.d.ts +0 -3
  21. package/dist/convertRestError.d.ts.map +0 -1
  22. package/dist/convertRestError.js +0 -3
  23. package/dist/createInvalidRequestBucket.d.ts.map +0 -1
  24. package/dist/createInvalidRequestBucket.js +0 -2
  25. package/dist/createQueueBucket.d.ts +0 -61
  26. package/dist/createQueueBucket.d.ts.map +0 -1
  27. package/dist/createQueueBucket.js +0 -2
  28. package/dist/createRequestBody.d.ts +0 -16
  29. package/dist/createRequestBody.d.ts.map +0 -1
  30. package/dist/createRequestBody.js +0 -2
  31. package/dist/processGlobalQueue.d.ts +0 -9
  32. package/dist/processGlobalQueue.d.ts.map +0 -1
  33. package/dist/processGlobalQueue.js +0 -2
  34. package/dist/processQueue.d.ts +0 -4
  35. package/dist/processQueue.d.ts.map +0 -1
  36. package/dist/processQueue.js +0 -2
  37. package/dist/processRateLimitedPaths.d.ts +0 -4
  38. package/dist/processRateLimitedPaths.d.ts.map +0 -1
  39. package/dist/processRateLimitedPaths.js +0 -2
  40. package/dist/processRequest.d.ts +0 -5
  41. package/dist/processRequest.d.ts.map +0 -1
  42. package/dist/processRequest.js +0 -2
  43. package/dist/processRequestHeaders.d.ts +0 -4
  44. package/dist/processRequestHeaders.d.ts.map +0 -1
  45. package/dist/processRequestHeaders.js +0 -2
  46. package/dist/rest.d.ts +0 -27
  47. package/dist/rest.d.ts.map +0 -1
  48. package/dist/rest.js +0 -2
  49. package/dist/restManager.d.ts +0 -387
  50. package/dist/restManager.d.ts.map +0 -1
  51. package/dist/restManager.js +0 -2
  52. package/dist/routes.d.ts +0 -119
  53. package/dist/routes.d.ts.map +0 -1
  54. package/dist/routes.js +0 -2
  55. package/dist/runMethod.d.ts +0 -8
  56. package/dist/runMethod.d.ts.map +0 -1
  57. package/dist/runMethod.js +0 -2
  58. package/dist/runProxyMethod.d.ts +0 -7
  59. package/dist/runProxyMethod.d.ts.map +0 -1
  60. package/dist/runProxyMethod.js +0 -2
  61. package/dist/sendRequest.d.ts +0 -17
  62. package/dist/sendRequest.d.ts.map +0 -1
  63. package/dist/sendRequest.js +0 -4
  64. package/dist/simplifyUrl.d.ts +0 -7
  65. package/dist/simplifyUrl.d.ts.map +0 -1
  66. package/dist/simplifyUrl.js +0 -2
  67. package/dist/types.d.ts +0 -67
  68. package/dist/types.d.ts.map +0 -1
  69. package/dist/types.js +0 -2
package/dist/index.d.ts CHANGED
@@ -1,17 +1,4 @@
1
- export * from '@discordeno/types';
2
- export * from '@discordeno/utils';
3
- export * from './checkRateLimits.js';
4
- export * from './cleanupQueues.js';
5
- export * from './convertRestError.js';
6
- export * from './createRequestBody.js';
7
- export * from './processGlobalQueue.js';
8
- export * from './processQueue.js';
9
- export * from './processRateLimitedPaths.js';
10
- export * from './processRequest.js';
11
- export * from './processRequestHeaders.js';
12
- export * from './rest.js';
13
- export * from './restManager.js';
14
- export * from './runMethod.js';
15
- export * from './sendRequest.js';
16
- export * from './simplifyUrl.js';
1
+ export * from './invalidBucket.js';
2
+ export * from './manager.js';
3
+ export * from './queue.js';
17
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export*from"@discordeno/types";export*from"@discordeno/utils";export*from"./checkRateLimits.js";export*from"./cleanupQueues.js";export*from"./convertRestError.js";export*from"./createRequestBody.js";export*from"./processGlobalQueue.js";export*from"./processQueue.js";export*from"./processRateLimitedPaths.js";export*from"./processRequest.js";export*from"./processRequestHeaders.js";export*from"./rest.js";export*from"./restManager.js";export*from"./runMethod.js";export*from"./sendRequest.js";export*from"./simplifyUrl.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICdAZGlzY29yZGVuby90eXBlcydcbmV4cG9ydCAqIGZyb20gJ0BkaXNjb3JkZW5vL3V0aWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9jaGVja1JhdGVMaW1pdHMuanMnXG5leHBvcnQgKiBmcm9tICcuL2NsZWFudXBRdWV1ZXMuanMnXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRSZXN0RXJyb3IuanMnXG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZVJlcXVlc3RCb2R5LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9wcm9jZXNzR2xvYmFsUXVldWUuanMnXG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3NRdWV1ZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vcHJvY2Vzc1JhdGVMaW1pdGVkUGF0aHMuanMnXG5leHBvcnQgKiBmcm9tICcuL3Byb2Nlc3NSZXF1ZXN0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9wcm9jZXNzUmVxdWVzdEhlYWRlcnMuanMnXG5leHBvcnQgKiBmcm9tICcuL3Jlc3QuanMnXG5leHBvcnQgKiBmcm9tICcuL3Jlc3RNYW5hZ2VyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9ydW5NZXRob2QuanMnXG5leHBvcnQgKiBmcm9tICcuL3NlbmRSZXF1ZXN0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zaW1wbGlmeVVybC5qcydcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFjLG1CQUFtQixBQUNqQyxZQUFjLG1CQUFtQixBQUNqQyxZQUFjLHNCQUFzQixBQUNwQyxZQUFjLG9CQUFvQixBQUNsQyxZQUFjLHVCQUF1QixBQUNyQyxZQUFjLHdCQUF3QixBQUN0QyxZQUFjLHlCQUF5QixBQUN2QyxZQUFjLG1CQUFtQixBQUNqQyxZQUFjLDhCQUE4QixBQUM1QyxZQUFjLHFCQUFxQixBQUNuQyxZQUFjLDRCQUE0QixBQUMxQyxZQUFjLFdBQVcsQUFDekIsWUFBYyxrQkFBa0IsQUFDaEMsWUFBYyxnQkFBZ0IsQUFDOUIsWUFBYyxrQkFBa0IsQUFDaEMsWUFBYyxrQkFBa0IifQ==
1
+ export*from"./invalidBucket.js";export*from"./manager.js";export*from"./queue.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludmFsaWRCdWNrZXQuanMnXG5leHBvcnQgKiBmcm9tICcuL21hbmFnZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL3F1ZXVlLmpzJ1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQWMsb0JBQW9CLEFBQ2xDLFlBQWMsY0FBYyxBQUM1QixZQUFjLFlBQVkifQ==
@@ -18,8 +18,6 @@ export interface InvalidRequestBucketOptions {
18
18
  timeoutId?: NodeJS.Timeout;
19
19
  /** how safe to be from max. Defaults to 1 */
20
20
  safety?: number;
21
- /** when first request in this period was made */
22
- frozenAt?: number;
23
21
  /** The request statuses that count as an invalid request. */
24
22
  errorStatuses?: number[];
25
23
  /** The amount of requests that were requested from this bucket. */
@@ -36,8 +34,6 @@ export interface InvalidRequestBucket {
36
34
  timeoutId: NodeJS.Timeout | undefined;
37
35
  /** how safe to be from max. Defaults to 1 */
38
36
  safety: number;
39
- /** when first request in this period was made */
40
- frozenAt: number;
41
37
  /** The request statuses that count as an invalid request. */
42
38
  errorStatuses: number[];
43
39
  /** The amount of requests that were requested from this bucket. */
@@ -57,4 +53,4 @@ export interface InvalidRequestBucket {
57
53
  /** Handler for whenever a request is validated. This should update the requested values or trigger any other necessary stuff. */
58
54
  handleCompletedRequest: (code: number, sharedScope: boolean) => void;
59
55
  }
60
- //# sourceMappingURL=createInvalidRequestBucket.d.ts.map
56
+ //# sourceMappingURL=invalidBucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalidBucket.d.ts","sourceRoot":"","sources":["../src/invalidBucket.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,oBAAoB,CAiFtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;IAC1B,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAA;IACX,sGAAsG;IACtG,QAAQ,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAA;IACrC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;IACzD,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAA;IAEnB,+DAA+D;IAC/D,eAAe,EAAE,MAAM,MAAM,CAAA;IAC7B,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,OAAO,CAAA;IAC/B,yCAAyC;IACzC,yBAAyB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,uDAAuD;IACvD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,iIAAiI;IACjI,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,KAAK,IAAI,CAAA;CACrE"}
@@ -0,0 +1,2 @@
1
+ import{delay as e}from"@discordeno/utils";export function createInvalidRequestBucket(t){let r={current:t.current??0,max:t.max??1e4,interval:t.interval??6e5,timeoutId:t.timeoutId,safety:t.safety??1,errorStatuses:t.errorStatuses??[401,403,429],requested:t.requested??0,processing:!1,waiting:[],requestsAllowed:function(){return r.max-r.current-r.requested-r.safety},isRequestAllowed:function(){return r.requestsAllowed()>0},waitUntilRequestAvailable:async function(){return await new Promise(async e=>{r.isRequestAllowed()?(r.requested++,e()):(r.waiting.push(e),await r.processWaiting())})},processWaiting:async function(){if(!r.processing){for(r.processing=!0;r.waiting.length>0;)r.isRequestAllowed()?(r.requested++,r.waiting.shift()?.()):await e(1e3);r.processing=!1}},handleCompletedRequest:function(e,t){r.requested--,r.errorStatuses.includes(e)&&(429===e&&t||(r.current++,void 0===r.timeoutId&&(r.timeoutId=setTimeout(()=>{r.current=0,r.timeoutId=void 0},r.interval))))}};return r}
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnZhbGlkQnVja2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlbGF5IH0gZnJvbSAnQGRpc2NvcmRlbm8vdXRpbHMnXG5cbi8qKlxuICogQSBpbnZhbGlkIHJlcXVlc3QgYnVja2V0IGlzIHVzZWQgaW4gYSBzaW1pbGFyIG1hbm5lciBhcyBhIGxlYWt5IGJ1Y2tldCBidXQgYSBpbnZhbGlkIHJlcXVlc3QgYnVja2V0IGNhbiBiZSByZWZpbGxlZCBhcyBuZWVkZWQuXG4gKiBJdCdzIHB1cnBvc2UgaXMgdG8gbWFrZSBzdXJlIHRoZSBib3QgZG9lcyBub3QgaGl0IHRoZSBsaW1pdCB0byBnZXR0aW5nIGEgMSBociBiYW4uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdXNlZCB0byBjb25maWd1cmUgdGhpcyBidWNrZXQuXG4gKiBAcmV0dXJucyBSZWZpbGxpbmdCdWNrZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludmFsaWRSZXF1ZXN0QnVja2V0IChcbiAgb3B0aW9uczogSW52YWxpZFJlcXVlc3RCdWNrZXRPcHRpb25zXG4pOiBJbnZhbGlkUmVxdWVzdEJ1Y2tldCB7XG4gIGNvbnN0IGJ1Y2tldDogSW52YWxpZFJlcXVlc3RCdWNrZXQgPSB7XG4gICAgY3VycmVudDogb3B0aW9ucy5jdXJyZW50ID8/IDAsXG4gICAgbWF4OiBvcHRpb25zLm1heCA/PyAxMDAwMCxcbiAgICBpbnRlcnZhbDogb3B0aW9ucy5pbnRlcnZhbCA/PyA2MDAwMDAsXG4gICAgdGltZW91dElkOiBvcHRpb25zLnRpbWVvdXRJZCxcbiAgICBzYWZldHk6IG9wdGlvbnMuc2FmZXR5ID8/IDEsXG4gICAgZXJyb3JTdGF0dXNlczogb3B0aW9ucy5lcnJvclN0YXR1c2VzID8/IFs0MDEsIDQwMywgNDI5XSxcbiAgICByZXF1ZXN0ZWQ6IG9wdGlvbnMucmVxdWVzdGVkID8/IDAsXG4gICAgcHJvY2Vzc2luZzogZmFsc2UsXG5cbiAgICB3YWl0aW5nOiBbXSxcblxuICAgIHJlcXVlc3RzQWxsb3dlZDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGJ1Y2tldC5tYXggLSBidWNrZXQuY3VycmVudCAtIGJ1Y2tldC5yZXF1ZXN0ZWQgLSBidWNrZXQuc2FmZXR5XG4gICAgfSxcblxuICAgIGlzUmVxdWVzdEFsbG93ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBidWNrZXQucmVxdWVzdHNBbGxvd2VkKCkgPiAwXG4gICAgfSxcblxuICAgIHdhaXRVbnRpbFJlcXVlc3RBdmFpbGFibGU6IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yXG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgICAgLy8gSWYgd2hhdGV2ZXIgYW1vdW50IG9mIHJlcXVlc3RzIGlzIGxlZnQgaXMgbW9yZSB0aGFuIHRoZSBzYWZldHkgbWFyZ2luLCBhbGxvdyB0aGUgcmVxdWVzdFxuICAgICAgICBpZiAoYnVja2V0LmlzUmVxdWVzdEFsbG93ZWQoKSkge1xuICAgICAgICAgIGJ1Y2tldC5yZXF1ZXN0ZWQrK1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1Y2tldC53YWl0aW5nLnB1c2gocmVzb2x2ZSlcbiAgICAgICAgICBhd2FpdCBidWNrZXQucHJvY2Vzc1dhaXRpbmcoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG5cbiAgICBwcm9jZXNzV2FpdGluZzogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gSWYgYWxyZWFkeSBwcm9jZXNzaW5nLCB0aGF0IGxvb3Agd2lsbCBoYW5kbGUgYWxsIHdhaXRpbmcgcmVxdWVzdHMuXG4gICAgICBpZiAoYnVja2V0LnByb2Nlc3NpbmcpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIE1hcmsgYXMgcHJvY2Vzc2luZyBzbyBvdGhlciBsb29wcyBkb24ndCBzdGFydFxuICAgICAgYnVja2V0LnByb2Nlc3NpbmcgPSB0cnVlXG5cbiAgICAgIHdoaWxlIChidWNrZXQud2FpdGluZy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChidWNrZXQuaXNSZXF1ZXN0QWxsb3dlZCgpKSB7XG4gICAgICAgICAgYnVja2V0LnJlcXVlc3RlZCsrXG4gICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgbmV4dCBpdGVtIGluIHRoZSBxdWV1ZVxuICAgICAgICAgIGJ1Y2tldC53YWl0aW5nLnNoaWZ0KCk/LigpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgZGVsYXkoMTAwMClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBNYXJrIGFzIGZhbHNlIHNvIG5leHQgcGVuZGluZyByZXF1ZXN0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgbmV3IGxvb3AuXG4gICAgICBidWNrZXQucHJvY2Vzc2luZyA9IGZhbHNlXG4gICAgfSxcblxuICAgIGhhbmRsZUNvbXBsZXRlZFJlcXVlc3Q6IGZ1bmN0aW9uIChjb2RlLCBzaGFyZWRTY29wZSkge1xuICAgICAgLy8gU2luY2UgcmVxdWVzdCBpcyBjb21wbGV0ZSwgd2UgY2FuIHJlbW92ZSBvbmUgZnJvbSByZXF1ZXN0ZWQuXG4gICAgICBidWNrZXQucmVxdWVzdGVkLS1cbiAgICAgIC8vIFNpbmNlIGl0IGlzIGFzIGEgdmFsaWQgcmVxdWVzdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgaWYgKCFidWNrZXQuZXJyb3JTdGF0dXNlcy5pbmNsdWRlcyhjb2RlKSkgcmV0dXJuXG4gICAgICAvLyBTaGFyZWQgc2NvcGUgaXMgbm90IGNvbnNpZGVyZWQgaW52YWxpZFxuICAgICAgaWYgKGNvZGUgPT09IDQyOSAmJiBzaGFyZWRTY29wZSkgcmV0dXJuXG5cbiAgICAgIC8vIElOVkFMSUQgUkVRVUVTVCBXQVMgTUFERVxuXG4gICAgICAvLyBNYXJrIGEgcmVxdWVzdCBoYXMgYmVlbiBpbnZhbGlkXG4gICAgICBidWNrZXQuY3VycmVudCsrXG4gICAgICAvLyBJZiBhIHRpbWVvdXQgd2FzIG5vdCBzdGFydGVkLCBzdGFydCBhIHRpbWVvdXQgdG8gcmVzZXQgdGhpcyBidWNrZXRcbiAgICAgIGlmIChidWNrZXQudGltZW91dElkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYnVja2V0LnRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGJ1Y2tldC5jdXJyZW50ID0gMFxuICAgICAgICAgIGJ1Y2tldC50aW1lb3V0SWQgPSB1bmRlZmluZWRcbiAgICAgICAgfSwgYnVja2V0LmludGVydmFsKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWNrZXRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkUmVxdWVzdEJ1Y2tldE9wdGlvbnMge1xuICAvKiogY3VycmVudCBpbnZhbGlkIGFtb3VudCAqL1xuICBjdXJyZW50PzogbnVtYmVyXG4gIC8qKiBtYXggaW52YWxpZCByZXF1ZXN0cyBhbGxvd2VkIHVudGlsIGJhbi4gRGVmYXVsdHMgdG8gMTAsMDAwICovXG4gIG1heD86IG51bWJlclxuICAvKiogVGhlIHRpbWUgdGhhdCBkaXNjb3JkIGFsbG93cyB0byBtYWtlIHRoZSBtYXggbnVtYmVyIG9mIGludmFsaWQgcmVxdWVzdHMuIERlZmF1bHRzIHRvIDEwIG1pbnV0ZXMgKi9cbiAgaW50ZXJ2YWw/OiBudW1iZXJcbiAgLyoqIHRpbWVyIHRvIHJlc2V0IHRvIDAgKi9cbiAgdGltZW91dElkPzogTm9kZUpTLlRpbWVvdXRcbiAgLyoqIGhvdyBzYWZlIHRvIGJlIGZyb20gbWF4LiBEZWZhdWx0cyB0byAxICovXG4gIHNhZmV0eT86IG51bWJlclxuICAvKiogVGhlIHJlcXVlc3Qgc3RhdHVzZXMgdGhhdCBjb3VudCBhcyBhbiBpbnZhbGlkIHJlcXVlc3QuICovXG4gIGVycm9yU3RhdHVzZXM/OiBudW1iZXJbXVxuICAvKiogVGhlIGFtb3VudCBvZiByZXF1ZXN0cyB0aGF0IHdlcmUgcmVxdWVzdGVkIGZyb20gdGhpcyBidWNrZXQuICovXG4gIHJlcXVlc3RlZD86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludmFsaWRSZXF1ZXN0QnVja2V0IHtcbiAgLyoqIGN1cnJlbnQgaW52YWxpZCBhbW91bnQgKi9cbiAgY3VycmVudDogbnVtYmVyXG4gIC8qKiBtYXggaW52YWxpZCByZXF1ZXN0cyBhbGxvd2VkIHVudGlsIGJhbi4gRGVmYXVsdHMgdG8gMTAsMDAwICovXG4gIG1heDogbnVtYmVyXG4gIC8qKiBUaGUgdGltZSB0aGF0IGRpc2NvcmQgYWxsb3dzIHRvIG1ha2UgdGhlIG1heCBudW1iZXIgb2YgaW52YWxpZCByZXF1ZXN0cy4gRGVmYXVsdHMgdG8gMTAgbWludXRlcyAqL1xuICBpbnRlcnZhbDogbnVtYmVyXG4gIC8qKiB0aW1lciB0byByZXNldCB0byAwICovXG4gIHRpbWVvdXRJZDogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWRcbiAgLyoqIGhvdyBzYWZlIHRvIGJlIGZyb20gbWF4LiBEZWZhdWx0cyB0byAxICovXG4gIHNhZmV0eTogbnVtYmVyXG4gIC8qKiBUaGUgcmVxdWVzdCBzdGF0dXNlcyB0aGF0IGNvdW50IGFzIGFuIGludmFsaWQgcmVxdWVzdC4gKi9cbiAgZXJyb3JTdGF0dXNlczogbnVtYmVyW11cbiAgLyoqIFRoZSBhbW91bnQgb2YgcmVxdWVzdHMgdGhhdCB3ZXJlIHJlcXVlc3RlZCBmcm9tIHRoaXMgYnVja2V0LiAqL1xuICByZXF1ZXN0ZWQ6IG51bWJlclxuICAvKiogVGhlIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBwZW5kaW5nLiAqL1xuICB3YWl0aW5nOiBBcnJheTwodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZD5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSB3YWl0aW5nIHF1ZXVlIGlzIGFscmVhZHkgcHJvY2Vzc2luZy4gKi9cbiAgcHJvY2Vzc2luZzogYm9vbGVhblxuXG4gIC8qKiBHaXZlcyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIHRoYXQgYXJlIGN1cnJlbnRseSBhbGxvd2VkLiAqL1xuICByZXF1ZXN0c0FsbG93ZWQ6ICgpID0+IG51bWJlclxuICAvKiogQ2hlY2tzIGlmIGEgcmVxdWVzdCBpcyBhbGxvd2VkIGF0IHRoaXMgdGltZS4gKi9cbiAgaXNSZXF1ZXN0QWxsb3dlZDogKCkgPT4gYm9vbGVhblxuICAvKiogV2FpdHMgdW50aWwgYSByZXF1ZXN0IGlzIGF2YWlsYWJsZSAqL1xuICB3YWl0VW50aWxSZXF1ZXN0QXZhaWxhYmxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKiBCZWdpbnMgcHJvY2Vzc2luZyB0aGUgd2FpdGluZyBxdWV1ZSBvZiByZXF1ZXN0cy4gKi9cbiAgcHJvY2Vzc1dhaXRpbmc6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqIEhhbmRsZXIgZm9yIHdoZW5ldmVyIGEgcmVxdWVzdCBpcyB2YWxpZGF0ZWQuIFRoaXMgc2hvdWxkIHVwZGF0ZSB0aGUgcmVxdWVzdGVkIHZhbHVlcyBvciB0cmlnZ2VyIGFueSBvdGhlciBuZWNlc3Nhcnkgc3R1ZmYuICovXG4gIGhhbmRsZUNvbXBsZXRlZFJlcXVlc3Q6IChjb2RlOiBudW1iZXIsIHNoYXJlZFNjb3BlOiBib29sZWFuKSA9PiB2b2lkXG59XG4iXSwibmFtZXMiOlsiZGVsYXkiLCJjcmVhdGVJbnZhbGlkUmVxdWVzdEJ1Y2tldCIsIm9wdGlvbnMiLCJidWNrZXQiLCJjdXJyZW50IiwibWF4IiwiaW50ZXJ2YWwiLCJ0aW1lb3V0SWQiLCJzYWZldHkiLCJlcnJvclN0YXR1c2VzIiwicmVxdWVzdGVkIiwicHJvY2Vzc2luZyIsIndhaXRpbmciLCJyZXF1ZXN0c0FsbG93ZWQiLCJpc1JlcXVlc3RBbGxvd2VkIiwid2FpdFVudGlsUmVxdWVzdEF2YWlsYWJsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicHVzaCIsInByb2Nlc3NXYWl0aW5nIiwibGVuZ3RoIiwic2hpZnQiLCJoYW5kbGVDb21wbGV0ZWRSZXF1ZXN0IiwiY29kZSIsInNoYXJlZFNjb3BlIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFTQSxTQUFBQSxDQUFLLEtBQVEsbUJBQW1CLEFBU3pDLFFBQU8sU0FBU0MsMkJBQ2RDLENBQW9DLENBQ2QsQ0FDdEIsSUFBTUMsRUFBK0IsQ0FDbkNDLFFBQVNGLEVBQVFFLE9BQU8sRUFBSSxFQUM1QkMsSUFBS0gsRUFBUUcsR0FBRyxFQUFJLElBQ3BCQyxTQUFVSixFQUFRSSxRQUFRLEVBQUksSUFDOUJDLFVBQVdMLEVBQVFLLFNBQVMsQ0FDNUJDLE9BQVFOLEVBQVFNLE1BQU0sRUFBSSxFQUMxQkMsY0FBZVAsRUFBUU8sYUFBYSxFQUFJLENBQUMsSUFBSyxJQUFLLElBQUksQ0FDdkRDLFVBQVdSLEVBQVFRLFNBQVMsRUFBSSxFQUNoQ0MsV0FBWSxDQUFBLEVBRVpDLFFBQVMsRUFBRSxDQUVYQyxnQkFBaUIsVUFBWSxDQUMzQixPQUFPVixFQUFPRSxHQUFHLENBQUdGLEVBQU9DLE9BQU8sQ0FBR0QsRUFBT08sU0FBUyxDQUFHUCxFQUFPSyxNQUFNLEFBQ3ZFLEVBRUFNLGlCQUFrQixVQUFZLENBQzVCLE9BQU9YLEVBQU9VLGVBQWUsR0FBSyxDQUNwQyxFQUVBRSwwQkFBMkIsZ0JBQWtCLENBRTNDLE9BQU8sTUFBTSxJQUFJQyxRQUFRLE1BQU9DLEdBQVksQ0FFdENkLEVBQU9XLGdCQUFnQixJQUN6QlgsRUFBT08sU0FBUyxHQUNoQk8sTUFFQWQsRUFBT1MsT0FBTyxDQUFDTSxJQUFJLENBQUNELEdBQ3BCLE1BQU1kLEVBQU9nQixjQUFjLEdBRS9CLEVBQ0YsRUFFQUEsZUFBZ0IsZ0JBQWtCLENBRWhDLElBQUloQixFQUFPUSxVQUFVLEVBT3JCLElBRkFSLEVBQU9RLFVBQVUsQ0FBRyxDQUFBLEVBRWJSLEVBQU9TLE9BQU8sQ0FBQ1EsTUFBTSxDQUFHLEdBQ3pCakIsRUFBT1csZ0JBQWdCLElBQ3pCWCxFQUFPTyxTQUFTLEdBRWhCUCxFQUFPUyxPQUFPLENBQUNTLEtBQUssUUFFcEIsTUFBTXJCLEVBQU0sSUFLaEJHLENBQUFBLEVBQU9RLFVBQVUsQ0FBRyxDQUFBLEVBaEJuQixBQWlCSCxFQUVBVyx1QkFBd0IsU0FBVUMsQ0FBSSxDQUFFQyxDQUFXLENBQUUsQ0FFbkRyQixFQUFPTyxTQUFTLEdBRVhQLEVBQU9NLGFBQWEsQ0FBQ2dCLFFBQVEsQ0FBQ0YsS0FFdEIsTUFBVEEsR0FBZ0JDLElBS3BCckIsRUFBT0MsT0FBTyxHQUVXc0IsS0FBQUEsSUFBckJ2QixFQUFPSSxTQUFTLEVBQ2xCSixDQUFBQSxFQUFPSSxTQUFTLENBQUdvQixXQUFXLElBQU0sQ0FDbEN4QixFQUFPQyxPQUFPLENBQUcsRUFDakJELEVBQU9JLFNBQVMsQ0FBR21CLEtBQUFBLENBQ3JCLEVBQUd2QixFQUFPRyxRQUFRLENBQUEsR0FFdEIsQ0FDRixFQUVBLE9BQU9ILENBQ1QsQ0FBQyJ9