@cubist-labs/cubesigner-sdk 0.4.276 → 0.4.279

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.
@@ -521,4 +521,4 @@ _C2FInvocation_data = new WeakMap();
521
521
  export const NamedWasmPolicy = C2FFunction;
522
522
  /** The result of invoking a named WASM policy. */
523
523
  export const PolicyInvocation = C2FInvocation;
524
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUF1QkEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFtRTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsU0FBb0IsRUFDcEIsTUFBa0I7SUFFbEIsOERBQThEO0lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBELHFCQUFxQjtJQUNyQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLHlCQUF5QjtJQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDbkMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsTUFBTTtLQUNiLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5EOztHQUVHO0FBQ0gs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ICBDMkZSZXNwb25zZSxcbiAgQ3ViZVNpZ25lclJlc3BvbnNlLFxuICBFZGl0UG9saWN5LFxuICBFbXB0eSxcbiAgSW52b2tlQzJGUmVzcG9uc2UsXG4gIEpzb25WYWx1ZSxcbiAgS2V5UG9saWN5LFxuICBLZXlQb2xpY3lSdWxlLFxuICBNZmFSZWNlaXB0cyxcbiAgUG9saWN5QXR0YWNoZWRUb0lkLFxuICBQb2xpY3lUeXBlLFxuICBSb2xlUG9saWN5LFxuICBSb2xlUG9saWN5UnVsZSxcbiAgVXBkYXRlUG9saWN5UmVxdWVzdCxcbiAgV2FzbVJ1bGUsXG4gIEFjZUF0dHJpYnV0ZSxcbiAgUG9saWN5QWN0aW9uLFxuICBBY2UsXG4gIFBvbGljeUluZm8sXG59IGZyb20gXCIuL2luZGV4LnRzXCI7XG5cbmltcG9ydCB7IGxvYWRTdWJ0bGVDcnlwdG8sIGVuY29kZVRvSGV4LCBkZWNvZGVGcm9tSGV4IH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcblxuLyoqXG4gKiBOYW1lZCBwb2xpY3kgcnVsZSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBQb2xpY3lSdWxlID0gS2V5UG9saWN5UnVsZSB8IFJvbGVQb2xpY3lSdWxlIHwgV2FzbVJ1bGU7XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3Ige0BsaW5rIFBvbGljeUluZm99IHdpdGggYSBtb3JlIGRldGFpbGVkIGBhY2xgIHR5cGUuXG4gKi9cbnR5cGUgTmFtZWRQb2xpY3lJbmZvID0gUG9saWN5SW5mbyAmIHtcbiAgYWNsPzogUG9saWN5QWNsO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgbmFtZWQga2V5IHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5UG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiS2V5XCI7XG59O1xuXG4vKipcbiAqIFRoZSBwb2xpY3kgaW5mbyBmb3IgYSBuYW1lZCByb2xlIHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgUm9sZVBvbGljeUluZm8gPSBOYW1lZFBvbGljeUluZm8gJiB7XG4gIHBvbGljeV90eXBlOiBcIlJvbGVcIjtcbn07XG5cbi8qKlxuICogVGhlIHBvbGljeSBpbmZvIGZvciBhIG5hbWVkIHdhc20gcG9saWN5LlxuICovXG5leHBvcnQgdHlwZSBXYXNtUG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiV2FzbVwiO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBDMkZJbmZvID0gV2FzbVBvbGljeUluZm87XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3IgdmFsaWQgbmFtZWQgcG9saWN5IHZlcnNpb24gc3RyaW5ncy5cbiAqL1xuZXhwb3J0IHR5cGUgVmVyc2lvbiA9IGB2JHtudW1iZXJ9YCB8IGBsYXRlc3RgO1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cnkuICovXG5leHBvcnQgdHlwZSBQb2xpY3lBY2UgPSBBY2U8UG9saWN5QWN0aW9uLCBQb2xpY3lDdHg+O1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgbGlzdC4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUFjbCA9IFBvbGljeUFjZVtdO1xuXG4vKiogQWRkaXRpb25hbCBjb250ZXh0cyB3aGVuIHVzaW5nIHBvbGljaWVzLiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5Q3R4ID0ge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlcyAoa2V5cywgcm9sZXMsIGFuZCBrZXktaW4tcm9sZXMpIHRoYXQgdGhlIGFjY2VzcyBjb250cm9sIGVudHJ5XG4gICAqIGFwcGxpZXMgdG8uXG4gICAqL1xuICByZXNvdXJjZXM6IEFjZUF0dHJpYnV0ZTxQb2xpY3lSZXNvdXJjZT47XG59O1xuXG4vKiogQSByZXNvdXJjZSBhIHBvbGljeSBpcyBpbnZva2VkIHdpdGggb3IgYXR0YWNoZWQgdG8uICovXG5leHBvcnQgdHlwZSBQb2xpY3lSZXNvdXJjZSA9XG4gIC8qKiBBIGtleSBvciByb2xlIGlkLiAqL1xuICB8IHN0cmluZ1xuICAvKiogS2V5cyBhdHRhY2hlZCB0byByb2xlcy4gKi9cbiAgfCB7IGtleV9pZHM6IFwiKlwiIHwgc3RyaW5nW107IHJvbGVfaWRzOiBcIipcIiB8IHN0cmluZ1tdIH07XG5cbi8qKlxuICogVXBsb2FkIHRoZSBnaXZlbiBXYXNtIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAqIEBwYXJhbSBwb2xpY3kgVGhlIFdhc20gZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgV2FzbSBmdW5jdGlvbiBvYmplY3QgaGFzaCB0byB1c2UgZm9yIGNyZWF0aW5nL3VwZGF0aW5nIEMyRiBwb2xpY2llcy5cbiAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBwb2xpY3kgZmFpbHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwbG9hZFdhc21GdW5jdGlvbihcbiAgYXBpQ2xpZW50OiBBcGlDbGllbnQsXG4gIHBvbGljeTogVWludDhBcnJheSxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIGdldCB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHVwbG9hZCB1cmwuXG4gIGNvbnN0IHN1YnRsZSA9IGF3YWl0IGxvYWRTdWJ0bGVDcnlwdG8oKTtcbiAgY29uc3QgaGFzaEJ5dGVzID0gYXdhaXQgc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgcG9saWN5KTtcbiAgY29uc3QgaGFzaCA9IGVuY29kZVRvSGV4KG5ldyBVaW50OEFycmF5KGhhc2hCeXRlcykpO1xuXG4gIC8vIGdldCB0aGUgdXBsb2FkIFVSTFxuICBjb25zdCB7IHNpZ25lZF91cmwgfSA9IGF3YWl0IGFwaUNsaWVudC53YXNtUG9saWN5VXBsb2FkKHsgaGFzaCB9KTtcblxuICAvLyB1cGxvYWQgdGhlIHdhc20gb2JqZWN0XG4gIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChzaWduZWRfdXJsLCB7XG4gICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgIGJvZHk6IHBvbGljeSxcbiAgfSk7XG5cbiAgaWYgKCFyZXNwLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdXBsb2FkIGZ1bmN0aW9uIHdpdGggc3RhdHVzOiAke3Jlc3Auc3RhdHVzfTogJHtyZXNwLnN0YXR1c1RleHR9YCk7XG4gIH1cblxuICByZXR1cm4gaGFzaDtcbn1cblxuLyoqXG4gKiBVcGxvYWQgdGhlIGdpdmVuIFdhc20gcG9saWN5LlxuICpcbiAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICogQHBhcmFtIHBvbGljeSBUaGUgV2FzbSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBXYXNtIGZ1bmN0aW9uIG9iamVjdCBoYXNoIHRvIHVzZSBmb3IgY3JlYXRpbmcvdXBkYXRpbmcgQzJGIHBvbGljaWVzLlxuICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIHBvbGljeSBmYWlscy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgdXBsb2FkV2FzbVBvbGljeSA9IHVwbG9hZFdhc21GdW5jdGlvbjtcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBmb3Igc2hhcmVkIG1ldGhvZHMgYmV0d2VlbiBrZXksIHJvbGUgYW5kIFdhc20gcG9saWNpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYW1lZFBvbGljeSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlDbGllbnQ6IEFwaUNsaWVudDtcbiAgcHJvdGVjdGVkIGRhdGE6IE5hbWVkUG9saWN5SW5mbztcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCBmb3IgY3JlYXRpbmcgYSBuYW1lZCBwb2xpY3kgZnJvbSBhIHBvbGljeSBpbmZvLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBhcGkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGluZm8gVGhlIHBvbGljeSBpbmZvLlxuICAgKiBAcmV0dXJucyBUaGUgbmFtZWQgcG9saWN5IG9iamVjdCBmb3IgdGhlIGdpdmVuIGluZm8uXG4gICAqL1xuICBzdGF0aWMgZnJvbUluZm8oYXBpQ2xpZW50OiBBcGlDbGllbnQsIGluZm86IFBvbGljeUluZm8pOiBOYW1lZFBvbGljeSB7XG4gICAgc3dpdGNoIChpbmZvLnBvbGljeV90eXBlKSB7XG4gICAgICBjYXNlIFwiS2V5XCI6XG4gICAgICAgIHJldHVybiBuZXcgTmFtZWRLZXlQb2xpY3koYXBpQ2xpZW50LCBpbmZvIGFzIEtleVBvbGljeUluZm8pO1xuICAgICAgY2FzZSBcIlJvbGVcIjpcbiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZFJvbGVQb2xpY3koYXBpQ2xpZW50LCBpbmZvIGFzIFJvbGVQb2xpY3lJbmZvKTtcbiAgICAgIGNhc2UgXCJXYXNtXCI6XG4gICAgICAgIHJldHVybiBuZXcgQzJGRnVuY3Rpb24oYXBpQ2xpZW50LCBpbmZvIGFzIEMyRkluZm8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBUaGUgcG9saWN5IGlkICovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGEucG9saWN5X2lkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBwb2xpY3kgdHlwZSAqL1xuICBnZXQgcG9saWN5VHlwZSgpOiBQb2xpY3lUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnBvbGljeV90eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIHZlcnNpb24gVGhlIHBvbGljeSB2ZXJzaW9uIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIHZlcnNpb24odmVyc2lvbjogVmVyc2lvbik6IFByb21pc2U8TmFtZWRQb2xpY3lSdWxlcz4ge1xuICAgIGxldCB2ZXJzaW9uSW5mbztcblxuICAgIGlmICh2ZXJzaW9uID09IGB2JHt0aGlzLmRhdGEudmVyc2lvbn1gKSB7XG4gICAgICB2ZXJzaW9uSW5mbyA9IHRoaXMuZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmVyc2lvbkluZm8gPSAoYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIHZlcnNpb24pKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOYW1lZFBvbGljeVJ1bGVzKHRoaXMuYXBpQ2xpZW50LCB2ZXJzaW9uSW5mbyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIGxhdGVzdCgpOiBQcm9taXNlPE5hbWVkUG9saWN5UnVsZXM+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaChcImxhdGVzdFwiKTtcbiAgICByZXR1cm4gbmV3IE5hbWVkUG9saWN5UnVsZXModGhpcy5hcGlDbGllbnQsIGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgbmFtZSBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IG5hbWUuXG4gICAqL1xuICBhc3luYyBuYW1lKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5uYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBuYW1lIGZvciB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmV3IHBvbGljeSBuYW1lLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0TmFtZShuYW1lOiBzdHJpbmcsIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgbmFtZSB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IG93bmVyIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1c2VyIGlkIG9mIHRoZSBwb2xpY3kgb3duZXIuXG4gICAqIEBleGFtcGxlIFVzZXIjYzNiOTM3OWMtNGU4Yy00MjE2LWJkMGEtNjVhY2U1M2NmOThmXG4gICAqL1xuICBhc3luYyBvd25lcigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEub3duZXI7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IG93bmVyIGZvciB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gb3duZXIgVGhlIG5ldyBvd25lciBvZiB0aGUgcG9saWN5LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0T3duZXIob3duZXI6IHN0cmluZywgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBvd25lciB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBtZXRhZGF0YS5cbiAgICovXG4gIGFzeW5jIG1ldGFkYXRhKCk6IFByb21pc2U8SnNvblZhbHVlPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5tZXRhZGF0YSBhcyBKc29uVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIG5ldyBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIG5hbWVkIHBvbGljeSAob3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nIHZhbHVlKS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIFRoZSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBuYW1lZCBwb2xpY3kuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRNZXRhZGF0YShtZXRhZGF0YTogSnNvblZhbHVlLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IG1ldGFkYXRhIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGFuZCByZXR1cm4gdGhlIGVkaXQgcG9saWN5IGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZWRpdCBwb2xpY3kgZm9yIHRoaXMgbmFtZWQgcG9saWN5LlxuICAgKi9cbiAgYXN5bmMgZWRpdFBvbGljeSgpOiBQcm9taXNlPEVkaXRQb2xpY3kgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmVkaXRfcG9saWN5O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBlZGl0IHBvbGljeSBmb3IgdGhlIG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIGVkaXRQb2xpY3kgVGhlIG5ldyBlZGl0IHBvbGljeS5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldEVkaXRQb2xpY3koZWRpdFBvbGljeTogRWRpdFBvbGljeSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBlZGl0X3BvbGljeTogZWRpdFBvbGljeSB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcyBmb3IgdGhpcyBuYW1lZCBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBhY2woKTogUHJvbWlzZTxQb2xpY3lBY2wgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmFjbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG5ldyBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIGZvciB0aGUgbmFtZWQgcG9saWN5IChvdmVyd3JpdGluZyB0aGUgZXhpc3RpbmcgZW50cmllcykuXG4gICAqXG4gICAqIEBwYXJhbSBhY2wgVGhlIGFjY2VzcyBjb250cm9sIGVudHJpZXMgdG8gc2V0LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0QWNsKGFjbDogUG9saWN5QWNsLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IGFjbCB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMsIHJvbGVzLCBhbmQga2V5LWluLXJvbGVzIHRoYXQgYWxsIHZlcnNpb25zIG9mIHRoaXMgcG9saWN5XG4gICAqIGFyZSBhdHRhY2hlZCB0by5cbiAgICovXG4gIGFzeW5jIGFsbEF0dGFjaGVkKCk6IFByb21pc2U8UG9saWN5QXR0YWNoZWRUb0lkW10+IHtcbiAgICAvLyB0aGVyZSBpcyBubyBzaW5nbGUtY2FsbCB3YXkgdG8gYWNoaWV2ZSB0aGlzLiBTbyBpbnN0ZWFkLCB3ZVxuICAgIC8vIDEuIEdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBvbGljeVxuICAgIC8vIDIuIEZvciBhbGwgdmVyc2lvbnMgYHYwYCB0byBgbGF0ZXN0YCwgZmV0Y2ggdGhlIHBvbGljeSBpbmZvXG4gICAgLy8gMy4gSm9pbiBhbGwgcG9saWN5IGBhdHRhY2hlZF90b2AgYXJyYXlzXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goXCJsYXRlc3RcIik7XG5cbiAgICBjb25zdCBsYXRlc3QgPSBkYXRhLnZlcnNpb247XG4gICAgY29uc3QgdmVyc2lvbnMgPSBBcnJheS5mcm9tKEFycmF5KGxhdGVzdCArIDEpLmtleXMoKSk7XG4gICAgY29uc3QgYmF0Y2hTaXplID0gMTA7XG4gICAgbGV0IGFsbEF0dGFjaGVkOiBQb2xpY3lBdHRhY2hlZFRvSWRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgYmF0Y2ggPSAwOyBiYXRjaCA8IHZlcnNpb25zLmxlbmd0aDsgYmF0Y2ggKz0gYmF0Y2hTaXplKSB7XG4gICAgICBjb25zdCBycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB2ZXJzaW9ucy5zbGljZShiYXRjaCwgYmF0Y2ggKyBiYXRjaFNpemUpLm1hcCgodmVyc2lvbikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmFwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgYHYke3ZlcnNpb259YCk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGFsbEF0dGFjaGVkID0gYWxsQXR0YWNoZWQuY29uY2F0KHJzLmZsYXRNYXAoKHBvbGljeSkgPT4gcG9saWN5LmF0dGFjaGVkX3RvKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbEF0dGFjaGVkLmNvbmNhdChkYXRhLmF0dGFjaGVkX3RvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdGhpcyBwb2xpY3kuXG4gICAqXG4gICAqIFRoaXMgY2FuIGZhaWwgaWYgdGhlIHBvbGljeSBpcyBzdGlsbCBhdHRhY2hlZCB0byBhbnkga2V5LCByb2xlLCBvciBrZXkgaW4gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEByZXR1cm5zIEEgcmVzcG9uc2Ugd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXBwcm92ZSBNRkEgaWYgbmVlZGVkXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxFbXB0eT4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5RGVsZXRlKHRoaXMuaWQsIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogTmFtZWRQb2xpY3lJbmZvKSB7XG4gICAgdGhpcy5hcGlDbGllbnQgPSBhcGlDbGllbnQ7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIEpTT04gcmVxdWVzdCB0byBzZW5kIHRvIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHVwZGF0ZShcbiAgICByZXF1ZXN0OiBVcGRhdGVQb2xpY3lSZXF1ZXN0LFxuICAgIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyxcbiAgKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5VXBkYXRlKHRoaXMuaWQsIHJlcXVlc3QsIG1mYVJlY2VpcHQpO1xuICAgIHRoaXMuZGF0YSA9IHJlc3AuZGF0YSgpIGFzIE5hbWVkUG9saWN5SW5mbztcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kgdG8gZmV0Y2guIERlZmF1bHRzIHRvIFwibGF0ZXN0XCIuXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgaW5mb3JtYXRpb24uXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoKHZlcnNpb246IFZlcnNpb24gPSBcImxhdGVzdFwiKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICB0aGlzLmRhdGEgPSAoYXdhaXQgdGhpcy5hcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIHZlcnNpb24pKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBuYW1lZCBrZXkgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRLZXlQb2xpY3kgZXh0ZW5kcyBOYW1lZFBvbGljeSB7XG4gIG92ZXJyaWRlIGRhdGE6IEtleVBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5IHdpdGggbmV3IHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZXMgVGhlIG5ldyBydWxlcyB0byB1cGRhdGUgdGhlIHBvbGljeSB3aXRoLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0UnVsZXMocnVsZXM6IEtleVBvbGljeSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBydWxlcyB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogS2V5UG9saWN5SW5mbykge1xuICAgIHN1cGVyKGFwaUNsaWVudCwgZGF0YSk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBuYW1lZCByb2xlIHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkUm9sZVBvbGljeSBleHRlbmRzIE5hbWVkUG9saWN5IHtcbiAgb3ZlcnJpZGUgZGF0YTogUm9sZVBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5IHdpdGggbmV3IHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZXMgVGhlIG5ldyBydWxlcyB0byB1cGRhdGUgdGhlIHBvbGljeSB3aXRoLlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0UnVsZXMocnVsZXM6IFJvbGVQb2xpY3ksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgcnVsZXMgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IFJvbGVQb2xpY3lJbmZvKSB7XG4gICAgc3VwZXIoYXBpQ2xpZW50LCBkYXRhKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbiAoQzJGKS5cbiAqXG4gKiBUaGlzIGNsYXNzIGV4dGVuZHMgTmFtZWRQb2xpY3kgYmVjYXVzZSBDMkYgZnVuY3Rpb25zIGNhbiBiZSBhdHRhY2hlZFxuICogdG8ga2V5cyBhbmQgcm9sZXMgbGlrZSBhIG5hbWVkIHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIEMyRkZ1bmN0aW9uIGV4dGVuZHMgTmFtZWRQb2xpY3kge1xuICBvdmVycmlkZSBkYXRhOiBDMkZJbmZvO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhpcyBDMkYgZnVuY3Rpb24gd2l0aCBhIG5ldyBXYXNtIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBuZXcgV2FzbSBmdW5jdGlvbi5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBmdW5jdGlvbiBmYWlscy5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZC5cbiAgICovXG4gIGFzeW5jIHNldFdhc21GdW5jdGlvbihwb2xpY3k6IFVpbnQ4QXJyYXksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIC8vIHVwbG9hZCB0aGUgcG9saWN5IG9iamVjdFxuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCB1cGxvYWRXYXNtRnVuY3Rpb24odGhpcy5hcGlDbGllbnQsIHBvbGljeSk7XG5cbiAgICAvLyB1cGRhdGUgdGhpcyBwb2xpY3kgd2l0aCB0aGUgbmV3IHBvbGljeSB2ZXJzaW9uLlxuICAgIGNvbnN0IGJvZHk6IFVwZGF0ZVBvbGljeVJlcXVlc3QgPSB7IHJ1bGVzOiBbeyBoYXNoIH1dIH07XG4gICAgdGhpcy5kYXRhID0gKGF3YWl0IHRoaXMudXBkYXRlKGJvZHksIG1mYVJlY2VpcHQpKSBhcyBDMkZJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZSB0aGlzIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtleUlkIFRoZSBvcHRpb25hbCBrZXkgaWQgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIHdpdGguXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB0byBpbnZva2UuIERlZmF1bHRzIHRvIFwibGF0ZXN0XCIuXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBvcHRpb25hbCBzaWduIHJlcXVlc3QgYm9keSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSByb2xlSWQgVGhlIG9wdGlvbmFsIHJvbGUgaWQgdGhhdCB0aGUgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIGJ5LlxuICAgKiBJZiBgdW5kZWZpbmVkYCwgdGhlIHBvbGljeSB3aWxsIGJlIGludm9rZWQgYnkgdGhlIHVzZXIgc2Vzc2lvbi5cbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICBhc3luYyBpbnZva2UoXG4gICAga2V5SWQ/OiBzdHJpbmcsXG4gICAgdmVyc2lvbjogVmVyc2lvbiA9IFwibGF0ZXN0XCIsXG4gICAgcmVxdWVzdD86IEpzb25WYWx1ZSxcbiAgICByb2xlSWQ/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8QzJGSW52b2NhdGlvbj4ge1xuICAgIC8vIFRPRE8gSWRlYWxseSwgYHZlcnNpb25gIHNob3VsZCBiZSB0aGUgZmlyc3QgcGFyYW1ldGVyLiBCdXQgZm9yIGJhY2t3YXJkc1xuICAgIC8vIGNvbXBhdGliaWxpdHksIHdlIGtlZXAgYGtleUlkYCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIGZvciBub3cuXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeUludm9rZSh0aGlzLmlkLCB2ZXJzaW9uLCB7XG4gICAgICBrZXlfaWQ6IGtleUlkLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHJvbGVfaWQ6IHJvbGVJZCxcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFBvbGljeUludm9jYXRpb24ocmVzcCk7XG4gIH1cblxuICAvLyBCYWNrd2FyZHMgY29tcGFiaWxpdHkgd2l0aCBOYW1lZCBXYXNtIFBvbGljeSBuYW1lc1xuICAvKipcbiAgICogVXBkYXRlIHRoZSBwb2xpY3kgd2l0aCB0aGUgbmV3IFdhc20gcG9saWN5LlxuICAgKlxuICAgKiBAcGFyYW0gcG9saWN5IFRoZSBuZXcgV2FzbSBwb2xpY3kgb2JqZWN0LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiB1cGxvYWRpbmcgdGhlIHBvbGljeSBvYmplY3QgZmFpbHMuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBzZXRXYXNtUG9saWN5ID0gdGhpcy5zZXRXYXNtRnVuY3Rpb247XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBDMkZJbmZvKSB7XG4gICAgc3VwZXIoYXBpQ2xpZW50LCBkYXRhKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKlxuICogQSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgbmFtZWQgcG9saWN5LlxuICovXG5leHBvcnQgY2xhc3MgTmFtZWRQb2xpY3lSdWxlcyB7XG4gIC8qKiBUaGUgQ3ViZVNpZ25lciBpbnN0YW5jZSB0aGF0IHRoaXMgcG9saWN5IGlzIGFzc29jaWF0ZWQgd2l0aCAqL1xuICByZWFkb25seSAjYXBpQ2xpZW50OiBBcGlDbGllbnQ7XG4gICNkYXRhOiBOYW1lZFBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAZXhhbXBsZSBOYW1lZFBvbGljeSNhNGE0NWNjMi0wNjQyLTRjOTgtYjZiZC0wZGEzNDdkNjA4YTRcbiAgICovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnBvbGljeV9pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbiBvZiB0aGUgcG9saWN5IHRoaXMgb2JqZWN0IGNvbnRhaW5zLlxuICAgKi9cbiAgZ2V0IHZlcnNpb24oKTogVmVyc2lvbiB7XG4gICAgcmV0dXJuIGB2JHt0aGlzLiNkYXRhLnZlcnNpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IHJ1bGVzLlxuICAgKlxuICAgKiBAZXhhbXBsZSBbIFwiQXNzZXJ0RXJjMjBUeFwiIF1cbiAgICovXG4gIGdldCBydWxlcygpOiBQb2xpY3lSdWxlW10ge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnJ1bGVzIGFzIFBvbGljeVJ1bGVbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGtleXMsIHJvbGVzLCBhbmQga2V5LWluLXJvbGVzIHRoaXMgdmVyc2lvbiBvZiB0aGUgcG9saWN5XG4gICAqICAgICAgICAgIGlzIGF0dGFjaGVkIHRvLlxuICAgKi9cbiAgYXN5bmMgYWxsQXR0YWNoZWQoKTogUHJvbWlzZTxQb2xpY3lBdHRhY2hlZFRvSWRbXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEuYXR0YWNoZWRfdG87XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IE5hbWVkUG9saWN5SW5mbykge1xuICAgIHRoaXMuI2FwaUNsaWVudCA9IGFwaUNsaWVudDtcbiAgICB0aGlzLiNkYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2goKTogUHJvbWlzZTxOYW1lZFBvbGljeUluZm8+IHtcbiAgICB0aGlzLiNkYXRhID0gKGF3YWl0IHRoaXMuI2FwaUNsaWVudC5wb2xpY3lHZXQodGhpcy5pZCwgdGhpcy52ZXJzaW9uKSkgYXMgTmFtZWRQb2xpY3lJbmZvO1xuICAgIHJldHVybiB0aGlzLiNkYXRhO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBpbnZva2luZyBhIENvbmZpZGVudGlhbCBDbG91ZCBGdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEMyRkludm9jYXRpb24ge1xuICByZWFkb25seSAjZGF0YTogSW52b2tlQzJGUmVzcG9uc2U7XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBwb2xpY3kgcmVzcG9uc2UgaXRzZWxmLiAqL1xuICBnZXQgcmVzcG9uc2UoKTogQzJGUmVzcG9uc2Uge1xuICAgIHJldHVybiB0aGlzLiNkYXRhLnJlc3BvbnNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtIGFzIHJhdyBieXRlcy4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLFxuICAgKiB1c2Uge0BsaW5rIFRleHREZWNvZGVyfSB0byBkZWNvZGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLlxuICAgKi9cbiAgZ2V0IHN0ZG91dEJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBkZWNvZGVGcm9tSGV4KHRoaXMuI2RhdGEuc3Rkb3V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGFzIHJhdyBieXRlcy4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLCB1c2VcbiAgICoge0BsaW5rIFRleHREZWNvZGVyfSB0byBkZWNvZGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uXG4gICAqL1xuICBnZXQgc3RkZXJyQnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGRlY29kZUZyb21IZXgodGhpcy4jZGF0YS5zdGRlcnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtIGFzIGEgQnVmZmVyLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLlxuICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHN0ZG91dEJ5dGVzfSBpbnN0ZWFkIGZvciBicm93c2VyIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBnZXQgc3Rkb3V0KCk6IEJ1ZmZlciB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBCdWZmZXIgcmV0dXJuIHR5cGUgcHJlc2VydmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnN0ZG91dEJ5dGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtIGFzIGEgQnVmZmVyLiBVc3VhbGx5IGEgVVRGLTggZW5jb2RlZCBzdHJpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uXG4gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgc3RkZXJyQnl0ZXN9IGluc3RlYWQgZm9yIGJyb3dzZXIgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIGdldCBzdGRlcnIoKTogQnVmZmVyIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIEJ1ZmZlciByZXR1cm4gdHlwZSBwcmVzZXJ2ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuc3RkZXJyQnl0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IEludm9rZUMyRlJlc3BvbnNlKSB7XG4gICAgdGhpcy4jZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuLy8gQmFja3dhcmRzIGNvbXBhYmlsaXR5IHdpdGggTmFtZWQgV2FzbSBQb2xpY3kgbmFtZXNcblxuLyoqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBXYXNtIHBvbGljeS4gKi9cbmV4cG9ydCB0eXBlIE5hbWVkV2FzbVBvbGljeSA9IEMyRkZ1bmN0aW9uO1xuLyoqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBXYXNtIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBOYW1lZFdhc21Qb2xpY3kgPSBDMkZGdW5jdGlvbjtcblxuLyoqIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBuYW1lZCBXQVNNIHBvbGljeS4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUludm9jYXRpb24gPSBDMkZJbnZvY2F0aW9uO1xuLyoqIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBuYW1lZCBXQVNNIHBvbGljeS4gKi9cbmV4cG9ydCBjb25zdCBQb2xpY3lJbnZvY2F0aW9uID0gQzJGSW52b2NhdGlvbjtcbiJdfQ==
524
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUF1QkEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFtRTFFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsU0FBb0IsRUFDcEIsTUFBa0I7SUFFbEIsOERBQThEO0lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBELHFCQUFxQjtJQUNyQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWxFLHlCQUF5QjtJQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDbkMsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsTUFBTTtLQUNiLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDO0FBRW5EOztHQUVHO0FBQ0gs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ICBDMkZSZXNwb25zZSxcbiAgQ3ViZVNpZ25lclJlc3BvbnNlLFxuICBFZGl0UG9saWN5LFxuICBFbXB0eSxcbiAgSW52b2tlQzJGUmVzcG9uc2UsXG4gIEpzb25WYWx1ZSxcbiAgS2V5UG9saWN5LFxuICBLZXlQb2xpY3lSdWxlLFxuICBNZmFSZWNlaXB0cyxcbiAgUG9saWN5QXR0YWNoZWRUb0lkLFxuICBQb2xpY3lUeXBlLFxuICBSb2xlUG9saWN5LFxuICBSb2xlUG9saWN5UnVsZSxcbiAgVXBkYXRlUG9saWN5UmVxdWVzdCxcbiAgV2FzbVJ1bGUsXG4gIEFjZUF0dHJpYnV0ZSxcbiAgUG9saWN5QWN0aW9uLFxuICBBY2UsXG4gIFBvbGljeUluZm8sXG59IGZyb20gXCIuL2luZGV4LnRzXCI7XG5cbmltcG9ydCB7IGxvYWRTdWJ0bGVDcnlwdG8sIGVuY29kZVRvSGV4LCBkZWNvZGVGcm9tSGV4IH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcblxuLyoqXG4gKiBOYW1lZCBwb2xpY3kgcnVsZSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBQb2xpY3lSdWxlID0gS2V5UG9saWN5UnVsZSB8IFJvbGVQb2xpY3lSdWxlIHwgV2FzbVJ1bGU7XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3Ige0BsaW5rIFBvbGljeUluZm99IHdpdGggYSBtb3JlIGRldGFpbGVkIGBhY2xgIHR5cGUuXG4gKi9cbnR5cGUgTmFtZWRQb2xpY3lJbmZvID0gUG9saWN5SW5mbyAmIHtcbiAgYWNsPzogUG9saWN5QWNsO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgbmFtZWQga2V5IHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5UG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiS2V5XCI7XG59O1xuXG4vKipcbiAqIFRoZSBwb2xpY3kgaW5mbyBmb3IgYSBuYW1lZCByb2xlIHBvbGljeS5cbiAqL1xuZXhwb3J0IHR5cGUgUm9sZVBvbGljeUluZm8gPSBOYW1lZFBvbGljeUluZm8gJiB7XG4gIHBvbGljeV90eXBlOiBcIlJvbGVcIjtcbn07XG5cbi8qKlxuICogVGhlIHBvbGljeSBpbmZvIGZvciBhIG5hbWVkIHdhc20gcG9saWN5LlxuICovXG5leHBvcnQgdHlwZSBXYXNtUG9saWN5SW5mbyA9IE5hbWVkUG9saWN5SW5mbyAmIHtcbiAgcG9saWN5X3R5cGU6IFwiV2FzbVwiO1xufTtcblxuLyoqXG4gKiBUaGUgcG9saWN5IGluZm8gZm9yIGEgQ29uZmlkZW50aWFsIENsb3VkIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBDMkZJbmZvID0gV2FzbVBvbGljeUluZm87XG5cbi8qKlxuICogQSBoZWxwZXIgdHlwZSBmb3IgdmFsaWQgbmFtZWQgcG9saWN5IHZlcnNpb24gc3RyaW5ncy5cbiAqL1xuZXhwb3J0IHR5cGUgVmVyc2lvbiA9IGB2JHtudW1iZXJ9YCB8IGBsYXRlc3RgO1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgZW50cnkuICovXG5leHBvcnQgdHlwZSBQb2xpY3lBY2UgPSBBY2U8UG9saWN5QWN0aW9uLCBQb2xpY3lDdHg+O1xuXG4vKiogQSBwb2xpY3kgYWNjZXNzIGNvbnRyb2wgbGlzdC4gKi9cbmV4cG9ydCB0eXBlIFBvbGljeUFjbCA9IFBvbGljeUFjZVtdO1xuXG4vKiogQWRkaXRpb25hbCBjb250ZXh0cyB3aGVuIHVzaW5nIHBvbGljaWVzLiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5Q3R4ID0ge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlcyAoa2V5cywgcm9sZXMsIGFuZCBrZXktaW4tcm9sZXMpIHRoYXQgdGhlIGFjY2VzcyBjb250cm9sIGVudHJ5XG4gICAqIGFwcGxpZXMgdG8uXG4gICAqL1xuICByZXNvdXJjZXM/OiBBY2VBdHRyaWJ1dGU8UG9saWN5UmVzb3VyY2U+O1xufTtcblxuLyoqIEEgcmVzb3VyY2UgYSBwb2xpY3kgaXMgaW52b2tlZCB3aXRoIG9yIGF0dGFjaGVkIHRvLiAqL1xuZXhwb3J0IHR5cGUgUG9saWN5UmVzb3VyY2UgPVxuICAvKiogQSBrZXkgb3Igcm9sZSBpZC4gKi9cbiAgfCBzdHJpbmdcbiAgLyoqIEtleXMgYXR0YWNoZWQgdG8gcm9sZXMuICovXG4gIHwgeyBrZXlfaWRzOiBcIipcIiB8IHN0cmluZ1tdOyByb2xlX2lkczogXCIqXCIgfCBzdHJpbmdbXSB9O1xuXG4vKipcbiAqIFVwbG9hZCB0aGUgZ2l2ZW4gV2FzbSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gKiBAcGFyYW0gcG9saWN5IFRoZSBXYXNtIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIFdhc20gZnVuY3Rpb24gb2JqZWN0IGhhc2ggdG8gdXNlIGZvciBjcmVhdGluZy91cGRhdGluZyBDMkYgcG9saWNpZXMuXG4gKiBAdGhyb3dzIGlmIHVwbG9hZGluZyB0aGUgcG9saWN5IGZhaWxzLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGxvYWRXYXNtRnVuY3Rpb24oXG4gIGFwaUNsaWVudDogQXBpQ2xpZW50LFxuICBwb2xpY3k6IFVpbnQ4QXJyYXksXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyBnZXQgdGhlIFNIQS0yNTYgaGFzaCBvZiB0aGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSB1cGxvYWQgdXJsLlxuICBjb25zdCBzdWJ0bGUgPSBhd2FpdCBsb2FkU3VidGxlQ3J5cHRvKCk7XG4gIGNvbnN0IGhhc2hCeXRlcyA9IGF3YWl0IHN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIHBvbGljeSk7XG4gIGNvbnN0IGhhc2ggPSBlbmNvZGVUb0hleChuZXcgVWludDhBcnJheShoYXNoQnl0ZXMpKTtcblxuICAvLyBnZXQgdGhlIHVwbG9hZCBVUkxcbiAgY29uc3QgeyBzaWduZWRfdXJsIH0gPSBhd2FpdCBhcGlDbGllbnQud2FzbVBvbGljeVVwbG9hZCh7IGhhc2ggfSk7XG5cbiAgLy8gdXBsb2FkIHRoZSB3YXNtIG9iamVjdFxuICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2goc2lnbmVkX3VybCwge1xuICAgIG1ldGhvZDogXCJQVVRcIixcbiAgICBib2R5OiBwb2xpY3ksXG4gIH0pO1xuXG4gIGlmICghcmVzcC5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHVwbG9hZCBmdW5jdGlvbiB3aXRoIHN0YXR1czogJHtyZXNwLnN0YXR1c306ICR7cmVzcC5zdGF0dXNUZXh0fWApO1xuICB9XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cbi8qKlxuICogVXBsb2FkIHRoZSBnaXZlbiBXYXNtIHBvbGljeS5cbiAqXG4gKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAqIEBwYXJhbSBwb2xpY3kgVGhlIFdhc20gZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgV2FzbSBmdW5jdGlvbiBvYmplY3QgaGFzaCB0byB1c2UgZm9yIGNyZWF0aW5nL3VwZGF0aW5nIEMyRiBwb2xpY2llcy5cbiAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBwb2xpY3kgZmFpbHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHVwbG9hZFdhc21Qb2xpY3kgPSB1cGxvYWRXYXNtRnVuY3Rpb247XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIHNoYXJlZCBtZXRob2RzIGJldHdlZW4ga2V5LCByb2xlIGFuZCBXYXNtIHBvbGljaWVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmFtZWRQb2xpY3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpQ2xpZW50OiBBcGlDbGllbnQ7XG4gIHByb3RlY3RlZCBkYXRhOiBOYW1lZFBvbGljeUluZm87XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmFtZWQgcG9saWN5IGZyb20gYSBwb2xpY3kgaW5mby5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgYXBpIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBpbmZvIFRoZSBwb2xpY3kgaW5mby5cbiAgICogQHJldHVybnMgVGhlIG5hbWVkIHBvbGljeSBvYmplY3QgZm9yIHRoZSBnaXZlbiBpbmZvLlxuICAgKi9cbiAgc3RhdGljIGZyb21JbmZvKGFwaUNsaWVudDogQXBpQ2xpZW50LCBpbmZvOiBQb2xpY3lJbmZvKTogTmFtZWRQb2xpY3kge1xuICAgIHN3aXRjaCAoaW5mby5wb2xpY3lfdHlwZSkge1xuICAgICAgY2FzZSBcIktleVwiOlxuICAgICAgICByZXR1cm4gbmV3IE5hbWVkS2V5UG9saWN5KGFwaUNsaWVudCwgaW5mbyBhcyBLZXlQb2xpY3lJbmZvKTtcbiAgICAgIGNhc2UgXCJSb2xlXCI6XG4gICAgICAgIHJldHVybiBuZXcgTmFtZWRSb2xlUG9saWN5KGFwaUNsaWVudCwgaW5mbyBhcyBSb2xlUG9saWN5SW5mbyk7XG4gICAgICBjYXNlIFwiV2FzbVwiOlxuICAgICAgICByZXR1cm4gbmV3IEMyRkZ1bmN0aW9uKGFwaUNsaWVudCwgaW5mbyBhcyBDMkZJbmZvKTtcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMgVGhlIHBvbGljeSBpZCAqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnBvbGljeV9pZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBUaGUgcG9saWN5IHR5cGUgKi9cbiAgZ2V0IHBvbGljeVR5cGUoKTogUG9saWN5VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wb2xpY3lfdHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSBwb2xpY3kgdmVyc2lvbiB0byBnZXQuXG4gICAqIEByZXR1cm5zIFRoZSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kuXG4gICAqL1xuICBhc3luYyB2ZXJzaW9uKHZlcnNpb246IFZlcnNpb24pOiBQcm9taXNlPE5hbWVkUG9saWN5UnVsZXM+IHtcbiAgICBsZXQgdmVyc2lvbkluZm87XG5cbiAgICBpZiAodmVyc2lvbiA9PSBgdiR7dGhpcy5kYXRhLnZlcnNpb259YCkge1xuICAgICAgdmVyc2lvbkluZm8gPSB0aGlzLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZlcnNpb25JbmZvID0gKGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeUdldCh0aGlzLmlkLCB2ZXJzaW9uKSkgYXMgTmFtZWRQb2xpY3lJbmZvO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTmFtZWRQb2xpY3lSdWxlcyh0aGlzLmFwaUNsaWVudCwgdmVyc2lvbkluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwb2xpY3kuXG4gICAqL1xuICBhc3luYyBsYXRlc3QoKTogUHJvbWlzZTxOYW1lZFBvbGljeVJ1bGVzPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goXCJsYXRlc3RcIik7XG4gICAgcmV0dXJuIG5ldyBOYW1lZFBvbGljeVJ1bGVzKHRoaXMuYXBpQ2xpZW50LCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBjdXJyZW50IG5hbWUgb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBuYW1lLlxuICAgKi9cbiAgYXN5bmMgbmFtZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBuZXcgbmFtZSBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5ldyBwb2xpY3kgbmFtZS5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldE5hbWUobmFtZTogc3RyaW5nLCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IG5hbWUgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW5kIHJldHVybiB0aGUgY3VycmVudCBvd25lciBvZiB0aGUgcG9saWN5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdXNlciBpZCBvZiB0aGUgcG9saWN5IG93bmVyLlxuICAgKiBAZXhhbXBsZSBVc2VyI2MzYjkzNzljLTRlOGMtNDIxNi1iZDBhLTY1YWNlNTNjZjk4ZlxuICAgKi9cbiAgYXN5bmMgb3duZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLm93bmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIG5ldyBvd25lciBmb3IgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIG93bmVyIFRoZSBuZXcgb3duZXIgb2YgdGhlIHBvbGljeS5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldE93bmVyKG93bmVyOiBzdHJpbmcsIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgb3duZXIgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW5kIHJldHVybiB0aGUgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBwb2xpY3kgbWV0YWRhdGEuXG4gICAqL1xuICBhc3luYyBtZXRhZGF0YSgpOiBQcm9taXNlPEpzb25WYWx1ZT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKCk7XG4gICAgcmV0dXJuIGRhdGEubWV0YWRhdGEgYXMgSnNvblZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBuZXcgbWV0YWRhdGEgdmFsdWUgZm9yIHRoZSBuYW1lZCBwb2xpY3kgKG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZyB2YWx1ZSkuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YSBUaGUgbmV3IG1ldGFkYXRhIGZvciB0aGUgbmFtZWQgcG9saWN5LlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBPcHRpb25hbCBNRkEgcmVjZWlwdChzKS5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKi9cbiAgYXN5bmMgc2V0TWV0YWRhdGEobWV0YWRhdGE6IEpzb25WYWx1ZSwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBtZXRhZGF0YSB9LCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhbmQgcmV0dXJuIHRoZSBlZGl0IHBvbGljeSBmb3IgdGhlIG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVkaXQgcG9saWN5IGZvciB0aGlzIG5hbWVkIHBvbGljeS5cbiAgICovXG4gIGFzeW5jIGVkaXRQb2xpY3koKTogUHJvbWlzZTxFZGl0UG9saWN5IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5lZGl0X3BvbGljeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBuZXcgZWRpdCBwb2xpY3kgZm9yIHRoZSBuYW1lZCBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSBlZGl0UG9saWN5IFRoZSBuZXcgZWRpdCBwb2xpY3kuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBzZXRFZGl0UG9saWN5KGVkaXRQb2xpY3k6IEVkaXRQb2xpY3ksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgZWRpdF9wb2xpY3k6IGVkaXRQb2xpY3kgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggYW5kIHJldHVybiB0aGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcyBmb3IgdGhlIG5hbWVkIHBvbGljeS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFjY2VzcyBjb250cm9sIGVudHJpZXMgZm9yIHRoaXMgbmFtZWQgcG9saWN5LlxuICAgKi9cbiAgYXN5bmMgYWNsKCk6IFByb21pc2U8UG9saWN5QWNsIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2goKTtcbiAgICByZXR1cm4gZGF0YS5hY2w7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBuZXcgYWNjZXNzIGNvbnRyb2wgZW50cmllcyBmb3IgdGhlIG5hbWVkIHBvbGljeSAob3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nIGVudHJpZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gYWNsIFRoZSBhY2Nlc3MgY29udHJvbCBlbnRyaWVzIHRvIHNldC5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldEFjbChhY2w6IFBvbGljeUFjbCwgbWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKSB7XG4gICAgYXdhaXQgdGhpcy51cGRhdGUoeyBhY2wgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYSBsaXN0IG9mIGFsbCBrZXlzLCByb2xlcywgYW5kIGtleS1pbi1yb2xlcyB0aGF0IGFsbCB2ZXJzaW9ucyBvZiB0aGlzIHBvbGljeVxuICAgKiBhcmUgYXR0YWNoZWQgdG8uXG4gICAqL1xuICBhc3luYyBhbGxBdHRhY2hlZCgpOiBQcm9taXNlPFBvbGljeUF0dGFjaGVkVG9JZFtdPiB7XG4gICAgLy8gdGhlcmUgaXMgbm8gc2luZ2xlLWNhbGwgd2F5IHRvIGFjaGlldmUgdGhpcy4gU28gaW5zdGVhZCwgd2VcbiAgICAvLyAxLiBHZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBwb2xpY3lcbiAgICAvLyAyLiBGb3IgYWxsIHZlcnNpb25zIGB2MGAgdG8gYGxhdGVzdGAsIGZldGNoIHRoZSBwb2xpY3kgaW5mb1xuICAgIC8vIDMuIEpvaW4gYWxsIHBvbGljeSBgYXR0YWNoZWRfdG9gIGFycmF5c1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmZldGNoKFwibGF0ZXN0XCIpO1xuXG4gICAgY29uc3QgbGF0ZXN0ID0gZGF0YS52ZXJzaW9uO1xuICAgIGNvbnN0IHZlcnNpb25zID0gQXJyYXkuZnJvbShBcnJheShsYXRlc3QgKyAxKS5rZXlzKCkpO1xuICAgIGNvbnN0IGJhdGNoU2l6ZSA9IDEwO1xuICAgIGxldCBhbGxBdHRhY2hlZDogUG9saWN5QXR0YWNoZWRUb0lkW10gPSBbXTtcblxuICAgIGZvciAobGV0IGJhdGNoID0gMDsgYmF0Y2ggPCB2ZXJzaW9ucy5sZW5ndGg7IGJhdGNoICs9IGJhdGNoU2l6ZSkge1xuICAgICAgY29uc3QgcnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgdmVyc2lvbnMuc2xpY2UoYmF0Y2gsIGJhdGNoICsgYmF0Y2hTaXplKS5tYXAoKHZlcnNpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5hcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIGB2JHt2ZXJzaW9ufWApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICBhbGxBdHRhY2hlZCA9IGFsbEF0dGFjaGVkLmNvbmNhdChycy5mbGF0TWFwKChwb2xpY3kpID0+IHBvbGljeS5hdHRhY2hlZF90bykpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxBdHRhY2hlZC5jb25jYXQoZGF0YS5hdHRhY2hlZF90byk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIHRoaXMgcG9saWN5LlxuICAgKlxuICAgKiBUaGlzIGNhbiBmYWlsIGlmIHRoZSBwb2xpY3kgaXMgc3RpbGwgYXR0YWNoZWQgdG8gYW55IGtleSwgcm9sZSwgb3Iga2V5IGluIHJvbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAcmV0dXJucyBBIHJlc3BvbnNlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFwcHJvdmUgTUZBIGlmIG5lZWRlZFxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkXG4gICAqL1xuICBhc3luYyBkZWxldGUobWZhUmVjZWlwdD86IE1mYVJlY2VpcHRzKTogUHJvbWlzZTxDdWJlU2lnbmVyUmVzcG9uc2U8RW1wdHk+PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeURlbGV0ZSh0aGlzLmlkLCBtZmFSZWNlaXB0KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IE5hbWVkUG9saWN5SW5mbykge1xuICAgIHRoaXMuYXBpQ2xpZW50ID0gYXBpQ2xpZW50O1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwb2xpY3kuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0IFRoZSBKU09OIHJlcXVlc3QgdG8gc2VuZCB0byB0aGUgQVBJIHNlcnZlci5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIHBvbGljeSBpbmZvcm1hdGlvbi5cbiAgICogQHRocm93cyBpZiBNRkEgaXMgcmVxdWlyZWQgYW5kIG5vIHJlY2VpcHRzIGFyZSBwcm92aWRlZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyB1cGRhdGUoXG4gICAgcmVxdWVzdDogVXBkYXRlUG9saWN5UmVxdWVzdCxcbiAgICBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMsXG4gICk6IFByb21pc2U8TmFtZWRQb2xpY3lJbmZvPiB7XG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeVVwZGF0ZSh0aGlzLmlkLCByZXF1ZXN0LCBtZmFSZWNlaXB0KTtcbiAgICB0aGlzLmRhdGEgPSByZXNwLmRhdGEoKSBhcyBOYW1lZFBvbGljeUluZm87XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCB0aGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiBvZiB0aGUgcG9saWN5IHRvIGZldGNoLiBEZWZhdWx0cyB0byBcImxhdGVzdFwiLlxuICAgKiBAcmV0dXJucyBUaGUgcG9saWN5IGluZm9ybWF0aW9uLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBmZXRjaCh2ZXJzaW9uOiBWZXJzaW9uID0gXCJsYXRlc3RcIik6IFByb21pc2U8TmFtZWRQb2xpY3lJbmZvPiB7XG4gICAgdGhpcy5kYXRhID0gKGF3YWl0IHRoaXMuYXBpQ2xpZW50LnBvbGljeUdldCh0aGlzLmlkLCB2ZXJzaW9uKSkgYXMgTmFtZWRQb2xpY3lJbmZvO1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgbmFtZWQga2V5IHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkS2V5UG9saWN5IGV4dGVuZHMgTmFtZWRQb2xpY3kge1xuICBvdmVycmlkZSBkYXRhOiBLZXlQb2xpY3lJbmZvO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBvbGljeSB3aXRoIG5ldyBydWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHJ1bGVzIFRoZSBuZXcgcnVsZXMgdG8gdXBkYXRlIHRoZSBwb2xpY3kgd2l0aC5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldFJ1bGVzKHJ1bGVzOiBLZXlQb2xpY3ksIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cykge1xuICAgIGF3YWl0IHRoaXMudXBkYXRlKHsgcnVsZXMgfSwgbWZhUmVjZWlwdCk7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLSBJTlRFUk5BTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGFwaUNsaWVudCBUaGUgQVBJIGNsaWVudCB0byB1c2UuXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBKU09OIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBzZXJ2ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0b3IoYXBpQ2xpZW50OiBBcGlDbGllbnQsIGRhdGE6IEtleVBvbGljeUluZm8pIHtcbiAgICBzdXBlcihhcGlDbGllbnQsIGRhdGEpO1xuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgbmFtZWQgcm9sZSBwb2xpY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYW1lZFJvbGVQb2xpY3kgZXh0ZW5kcyBOYW1lZFBvbGljeSB7XG4gIG92ZXJyaWRlIGRhdGE6IFJvbGVQb2xpY3lJbmZvO1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBvbGljeSB3aXRoIG5ldyBydWxlcy5cbiAgICpcbiAgICogQHBhcmFtIHJ1bGVzIFRoZSBuZXcgcnVsZXMgdG8gdXBkYXRlIHRoZSBwb2xpY3kgd2l0aC5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWRcbiAgICovXG4gIGFzeW5jIHNldFJ1bGVzKHJ1bGVzOiBSb2xlUG9saWN5LCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZSh7IHJ1bGVzIH0sIG1mYVJlY2VpcHQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBSb2xlUG9saWN5SW5mbykge1xuICAgIHN1cGVyKGFwaUNsaWVudCwgZGF0YSk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2YgYSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb24gKEMyRikuXG4gKlxuICogVGhpcyBjbGFzcyBleHRlbmRzIE5hbWVkUG9saWN5IGJlY2F1c2UgQzJGIGZ1bmN0aW9ucyBjYW4gYmUgYXR0YWNoZWRcbiAqIHRvIGtleXMgYW5kIHJvbGVzIGxpa2UgYSBuYW1lZCBwb2xpY3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBDMkZGdW5jdGlvbiBleHRlbmRzIE5hbWVkUG9saWN5IHtcbiAgb3ZlcnJpZGUgZGF0YTogQzJGSW5mbztcblxuICAvKipcbiAgICogVXBkYXRlIHRoaXMgQzJGIGZ1bmN0aW9uIHdpdGggYSBuZXcgV2FzbSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBvbGljeSBUaGUgbmV3IFdhc20gZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpLlxuICAgKiBAdGhyb3dzIGlmIHVwbG9hZGluZyB0aGUgZnVuY3Rpb24gZmFpbHMuXG4gICAqIEB0aHJvd3MgaWYgTUZBIGlzIHJlcXVpcmVkIGFuZCBubyByZWNlaXB0cyBhcmUgcHJvdmlkZWQuXG4gICAqL1xuICBhc3luYyBzZXRXYXNtRnVuY3Rpb24ocG9saWN5OiBVaW50OEFycmF5LCBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpIHtcbiAgICAvLyB1cGxvYWQgdGhlIHBvbGljeSBvYmplY3RcbiAgICBjb25zdCBoYXNoID0gYXdhaXQgdXBsb2FkV2FzbUZ1bmN0aW9uKHRoaXMuYXBpQ2xpZW50LCBwb2xpY3kpO1xuXG4gICAgLy8gdXBkYXRlIHRoaXMgcG9saWN5IHdpdGggdGhlIG5ldyBwb2xpY3kgdmVyc2lvbi5cbiAgICBjb25zdCBib2R5OiBVcGRhdGVQb2xpY3lSZXF1ZXN0ID0geyBydWxlczogW3sgaGFzaCB9XSB9O1xuICAgIHRoaXMuZGF0YSA9IChhd2FpdCB0aGlzLnVwZGF0ZShib2R5LCBtZmFSZWNlaXB0KSkgYXMgQzJGSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZva2UgdGhpcyBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBrZXlJZCBUaGUgb3B0aW9uYWwga2V5IGlkIHRoYXQgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCB3aXRoLlxuICAgKiBAcGFyYW0gdmVyc2lvbiBUaGUgdmVyc2lvbiBvZiB0aGUgZnVuY3Rpb24gdG8gaW52b2tlLiBEZWZhdWx0cyB0byBcImxhdGVzdFwiLlxuICAgKiBAcGFyYW0gcmVxdWVzdCBUaGUgb3B0aW9uYWwgc2lnbiByZXF1ZXN0IGJvZHkgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gcm9sZUlkIFRoZSBvcHRpb25hbCByb2xlIGlkIHRoYXQgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBieS5cbiAgICogSWYgYHVuZGVmaW5lZGAsIHRoZSBwb2xpY3kgd2lsbCBiZSBpbnZva2VkIGJ5IHRoZSB1c2VyIHNlc3Npb24uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgYXN5bmMgaW52b2tlKFxuICAgIGtleUlkPzogc3RyaW5nLFxuICAgIHZlcnNpb246IFZlcnNpb24gPSBcImxhdGVzdFwiLFxuICAgIHJlcXVlc3Q/OiBKc29uVmFsdWUsXG4gICAgcm9sZUlkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPEMyRkludm9jYXRpb24+IHtcbiAgICAvLyBUT0RPIElkZWFsbHksIGB2ZXJzaW9uYCBzaG91bGQgYmUgdGhlIGZpcnN0IHBhcmFtZXRlci4gQnV0IGZvciBiYWNrd2FyZHNcbiAgICAvLyBjb21wYXRpYmlsaXR5LCB3ZSBrZWVwIGBrZXlJZGAgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBmb3Igbm93LlxuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLmFwaUNsaWVudC5wb2xpY3lJbnZva2UodGhpcy5pZCwgdmVyc2lvbiwge1xuICAgICAga2V5X2lkOiBrZXlJZCxcbiAgICAgIHJlcXVlc3QsXG4gICAgICByb2xlX2lkOiByb2xlSWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBQb2xpY3lJbnZvY2F0aW9uKHJlc3ApO1xuICB9XG5cbiAgLy8gQmFja3dhcmRzIGNvbXBhYmlsaXR5IHdpdGggTmFtZWQgV2FzbSBQb2xpY3kgbmFtZXNcbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcG9saWN5IHdpdGggdGhlIG5ldyBXYXNtIHBvbGljeS5cbiAgICpcbiAgICogQHBhcmFtIHBvbGljeSBUaGUgbmV3IFdhc20gcG9saWN5IG9iamVjdC5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocykuXG4gICAqIEB0aHJvd3MgaWYgdXBsb2FkaW5nIHRoZSBwb2xpY3kgb2JqZWN0IGZhaWxzLlxuICAgKiBAdGhyb3dzIGlmIE1GQSBpcyByZXF1aXJlZCBhbmQgbm8gcmVjZWlwdHMgYXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgc2V0V2FzbVBvbGljeSA9IHRoaXMuc2V0V2FzbUZ1bmN0aW9uO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gYXBpQ2xpZW50IFRoZSBBUEkgY2xpZW50IHRvIHVzZS5cbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhcGlDbGllbnQ6IEFwaUNsaWVudCwgZGF0YTogQzJGSW5mbykge1xuICAgIHN1cGVyKGFwaUNsaWVudCwgZGF0YSk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWMgdmVyc2lvbiBvZiBhIG5hbWVkIHBvbGljeS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVkUG9saWN5UnVsZXMge1xuICAvKiogVGhlIEN1YmVTaWduZXIgaW5zdGFuY2UgdGhhdCB0aGlzIHBvbGljeSBpcyBhc3NvY2lhdGVkIHdpdGggKi9cbiAgcmVhZG9ubHkgI2FwaUNsaWVudDogQXBpQ2xpZW50O1xuICAjZGF0YTogTmFtZWRQb2xpY3lJbmZvO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgSUQgb2YgdGhlIHBvbGljeS5cbiAgICpcbiAgICogQGV4YW1wbGUgTmFtZWRQb2xpY3kjYTRhNDVjYzItMDY0Mi00Yzk4LWI2YmQtMGRhMzQ3ZDYwOGE0XG4gICAqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jZGF0YS5wb2xpY3lfaWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIHZlcnNpb24gb2YgdGhlIHBvbGljeSB0aGlzIG9iamVjdCBjb250YWlucy5cbiAgICovXG4gIGdldCB2ZXJzaW9uKCk6IFZlcnNpb24ge1xuICAgIHJldHVybiBgdiR7dGhpcy4jZGF0YS52ZXJzaW9ufWA7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBydWxlcy5cbiAgICpcbiAgICogQGV4YW1wbGUgWyBcIkFzc2VydEVyYzIwVHhcIiBdXG4gICAqL1xuICBnZXQgcnVsZXMoKTogUG9saWN5UnVsZVtdIHtcbiAgICByZXR1cm4gdGhpcy4jZGF0YS5ydWxlcyBhcyBQb2xpY3lSdWxlW107XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgYSBsaXN0IG9mIGFsbCBrZXlzLCByb2xlcywgYW5kIGtleS1pbi1yb2xlcyB0aGlzIHZlcnNpb24gb2YgdGhlIHBvbGljeVxuICAgKiAgICAgICAgICBpcyBhdHRhY2hlZCB0by5cbiAgICovXG4gIGFzeW5jIGFsbEF0dGFjaGVkKCk6IFByb21pc2U8UG9saWN5QXR0YWNoZWRUb0lkW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaCgpO1xuICAgIHJldHVybiBkYXRhLmF0dGFjaGVkX3RvO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBhcGlDbGllbnQgVGhlIEFQSSBjbGllbnQgdG8gdXNlLlxuICAgKiBAcGFyYW0gZGF0YSBUaGUgSlNPTiByZXNwb25zZSBmcm9tIHRoZSBBUEkgc2VydmVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGFwaUNsaWVudDogQXBpQ2xpZW50LCBkYXRhOiBOYW1lZFBvbGljeUluZm8pIHtcbiAgICB0aGlzLiNhcGlDbGllbnQgPSBhcGlDbGllbnQ7XG4gICAgdGhpcy4jZGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIHBvbGljeSBpbmZvcm1hdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHBvbGljeSBpbmZvcm1hdGlvbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZldGNoKCk6IFByb21pc2U8TmFtZWRQb2xpY3lJbmZvPiB7XG4gICAgdGhpcy4jZGF0YSA9IChhd2FpdCB0aGlzLiNhcGlDbGllbnQucG9saWN5R2V0KHRoaXMuaWQsIHRoaXMudmVyc2lvbikpIGFzIE5hbWVkUG9saWN5SW5mbztcbiAgICByZXR1cm4gdGhpcy4jZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSByZXN1bHQgb2YgaW52b2tpbmcgYSBDb25maWRlbnRpYWwgQ2xvdWQgRnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDMkZJbnZvY2F0aW9uIHtcbiAgcmVhZG9ubHkgI2RhdGE6IEludm9rZUMyRlJlc3BvbnNlO1xuXG4gIC8qKiBAcmV0dXJucyBUaGUgcG9saWN5IHJlc3BvbnNlIGl0c2VsZi4gKi9cbiAgZ2V0IHJlc3BvbnNlKCk6IEMyRlJlc3BvbnNlIHtcbiAgICByZXR1cm4gdGhpcy4jZGF0YS5yZXNwb25zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBhcyByYXcgYnl0ZXMuIFVzdWFsbHkgYSBVVEYtOCBlbmNvZGVkIHN0cmluZyxcbiAgICogdXNlIHtAbGluayBUZXh0RGVjb2Rlcn0gdG8gZGVjb2RlLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS5cbiAgICovXG4gIGdldCBzdGRvdXRCeXRlcygpOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gZGVjb2RlRnJvbUhleCh0aGlzLiNkYXRhLnN0ZG91dCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSBhcyByYXcgYnl0ZXMuIFVzdWFsbHkgYSBVVEYtOCBlbmNvZGVkIHN0cmluZywgdXNlXG4gICAqIHtAbGluayBUZXh0RGVjb2Rlcn0gdG8gZGVjb2RlLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLlxuICAgKi9cbiAgZ2V0IHN0ZGVyckJ5dGVzKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBkZWNvZGVGcm9tSGV4KHRoaXMuI2RhdGEuc3RkZXJyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBhcyBhIEJ1ZmZlci4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBzdGRvdXRCeXRlc30gaW5zdGVhZCBmb3IgYnJvd3NlciBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgZ2V0IHN0ZG91dCgpOiBCdWZmZXIge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gQnVmZmVyIHJldHVybiB0eXBlIHByZXNlcnZlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5zdGRvdXRCeXRlcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSBhcyBhIEJ1ZmZlci4gVXN1YWxseSBhIFVURi04IGVuY29kZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtLlxuICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rIHN0ZGVyckJ5dGVzfSBpbnN0ZWFkIGZvciBicm93c2VyIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBnZXQgc3RkZXJyKCk6IEJ1ZmZlciB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBCdWZmZXIgcmV0dXJuIHR5cGUgcHJlc2VydmVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnN0ZGVyckJ5dGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIEpTT04gcmVzcG9uc2UgZnJvbSB0aGUgQVBJIHNlcnZlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhOiBJbnZva2VDMkZSZXNwb25zZSkge1xuICAgIHRoaXMuI2RhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8vIEJhY2t3YXJkcyBjb21wYWJpbGl0eSB3aXRoIE5hbWVkIFdhc20gUG9saWN5IG5hbWVzXG5cbi8qKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgV2FzbSBwb2xpY3kuICovXG5leHBvcnQgdHlwZSBOYW1lZFdhc21Qb2xpY3kgPSBDMkZGdW5jdGlvbjtcbi8qKiBBIHJlcHJlc2VudGF0aW9uIG9mIGEgV2FzbSBwb2xpY3kuICovXG5leHBvcnQgY29uc3QgTmFtZWRXYXNtUG9saWN5ID0gQzJGRnVuY3Rpb247XG5cbi8qKiBUaGUgcmVzdWx0IG9mIGludm9raW5nIGEgbmFtZWQgV0FTTSBwb2xpY3kuICovXG5leHBvcnQgdHlwZSBQb2xpY3lJbnZvY2F0aW9uID0gQzJGSW52b2NhdGlvbjtcbi8qKiBUaGUgcmVzdWx0IG9mIGludm9raW5nIGEgbmFtZWQgV0FTTSBwb2xpY3kuICovXG5leHBvcnQgY29uc3QgUG9saWN5SW52b2NhdGlvbiA9IEMyRkludm9jYXRpb247XG4iXX0=
@@ -751,6 +751,8 @@ export interface paths {
751
751
  *
752
752
  * NOTE that if pagination is used and a page limit is set, the returned result
753
753
  * set may contain either FEWER or MORE elements than the requested page limit.
754
+ * In particular, legacy MFA requests are not paginated: every accessible one
755
+ * is returned in the first page, on top of the page limit.
754
756
  */
755
757
  get: operations["mfaList"];
756
758
  };
@@ -2849,7 +2851,7 @@ export interface components {
2849
2851
  /** @enum {string} */
2850
2852
  BadGatewayErrorCode: "Generic" | "CustomChainRpcError" | "EsploraApiError" | "SentryApiError" | "CallWebhookError" | "OAuthProviderError" | "OidcDisoveryFailed" | "OidcIssuerJwkEndpointUnavailable" | "SmtpServerUnavailable";
2851
2853
  /** @enum {string} */
2852
- BadRequestErrorCode: "GenericBadRequest" | "DisallowedAllowRuleReference" | "InvalidPaginationToken" | "InvalidEmail" | "InvalidEmailTemplate" | "QueryMetricsError" | "InvalidTelegramData" | "ValidationError" | "WebhookPolicyTimeoutOutOfBounds" | "WebhookPolicyDisallowedUrlScheme" | "WebhookPolicyDisallowedUrlHost" | "WebhookPolicyDisallowedHeaders" | "ReservedName" | "UserEmailNotConfigured" | "EmailPasswordNotFound" | "PasswordAuthNotAllowedByInvitation" | "OneTimeCodeExpired" | "InvalidBody" | "InvalidJwt" | "InvitationNoLongerValid" | "TokenRequestError" | "InvalidMfaReceipt" | "InvalidMfaPolicyCount" | "InvalidMfaPolicyNumAuthFactors" | "InvalidMfaPolicyNumAllowedApprovers" | "InvalidMfaPolicyGracePeriodTooLong" | "InvalidBabylonStakingPolicyParams" | "InvalidSuiTxReceiversEmptyAllowlist" | "InvalidBtcTxReceiversEmptyAllowlist" | "InvalidRequireRoleSessionAllowlist" | "InvalidCreateKeyCount" | "InvalidDiffieHellmanCount" | "OrgInviteExistingUser" | "OrgUserAlreadyExists" | "OrgNameTaken" | "KwkNotFoundInRegion" | "OrgIsNotOrgExport" | "RoleNameTaken" | "PolicyNameTaken" | "NameTaken" | "ContactNameInvalid" | "ContactAddressesInvalid" | "ContactLabelInvalid" | "ContactModified" | "PolicyNotFound" | "PolicyVersionNotFound" | "PolicyRuleDisallowedByType" | "PolicyTypeDisallowed" | "PolicyDuplicateError" | "PolicyStillAttached" | "PolicyModified" | "PolicyNotAttached" | "AddKeyToRoleCountTooHigh" | "InvalidKeyId" | "InvalidTimeLockAlreadyInThePast" | "InvalidRestrictedScopes" | "InvalidUpdate" | "InvalidMetadataLength" | "InvalidLength" | "InvalidKeyMaterialId" | "KeyNotFound" | "SiweChallengeNotFound" | "SiweInvalidRequest" | "SiwsChallengeNotFound" | "SiwsInvalidRequest" | "UserExportDerivedKey" | "UserExportPublicKeyInvalid" | "NistP256PublicKeyInvalid" | "UnableToAccessSmtpRelay" | "UserExportInProgress" | "RoleNotFound" | "InvalidRoleNameOrId" | "InvalidMfaReceiptOrgIdMissing" | "InvalidMfaReceiptInvalidOrgId" | "MfaRequestNotFound" | "InvalidKeyType" | "InvalidPropertiesForKeyType" | "MismatchedKeyPropertiesPatch" | "MissingBinanceApiKey" | "MissingBybitApiKey" | "MissingCoinbaseApiKey" | "BinanceKeyMasterMismatch" | "BybitAccountMismatch" | "InvalidKeyMaterial" | "InvalidHexValue" | "InvalidBase32Value" | "InvalidBase58Value" | "InvalidBase64Value" | "InvalidSs58Value" | "InvalidForkVersionLength" | "InvalidEthAddress" | "InvalidStellarAddress" | "InvalidOrgNameOrId" | "InvalidUpdateOrgRequestDisallowedMfaType" | "InvalidUpdateOrgRequestEmptyAllowedMfaTypes" | "EmailOtpDelayTooShortForRegisterMfa" | "InvalidStakeDeposit" | "InvalidBlobSignRequest" | "InvalidDiffieHellmanRequest" | "InvalidSolanaSignRequest" | "InvalidEip712SignRequest" | "InvalidEip7702SignRequest" | "OnlySpecifyOne" | "IncompatibleParams" | "NoOidcDataInProof" | "InvalidEvmSignRequest" | "InvalidEth2SignRequest" | "InvalidDeriveKeyRequest" | "InvalidStakingAmount" | "CustomStakingAmountNotAllowedForWrapperContract" | "InvalidUnstakeRequest" | "InvalidCreateUserRequest" | "UserAlreadyExists" | "IdpUserAlreadyExists" | "CognitoUserAlreadyOrgMember" | "UserNotFound" | "UserWithEmailNotFound" | "PolicyKeyMismatch" | "EmptyScopes" | "InvalidScopesForRoleSession" | "InvalidLifetime" | "NoSingleKeyForUser" | "InvalidOrgPolicyRule" | "SourceIpAllowlistEmpty" | "LimitWindowTooLong" | "Erc20ContractDisallowed" | "EmptyRuleError" | "PolicyFieldValidationError" | "OptionalListEmpty" | "MultipleExclusiveFieldsProvided" | "DuplicateFieldEntry" | "InvalidRange" | "InvalidOrgPolicyRepeatedRule" | "InvalidSuiTransaction" | "SuiSenderMismatch" | "AvaSignHashError" | "AvaSignError" | "BtcSegwitHashError" | "BtcTaprootHashError" | "BtcSignError" | "TaprootSignError" | "Eip712SignError" | "InvalidMemberRoleInUserAdd" | "InvalidMemberRoleInRecipientAdd" | "ThirdPartyUserAlreadyExists" | "OidcIdentityAlreadyExists" | "UserAlreadyHasIdentity" | "ThirdPartyUserNotFound" | "DeleteOidcUserError" | "DeleteUserError" | "SessionRoleMismatch" | "InvalidOidcToken" | "InvalidOidcIdentity" | "OidcIssuerUnsupported" | "OidcIssuerNotAllowed" | "OidcIssuerNoApplicableJwk" | "FidoKeyAlreadyRegistered" | "FidoKeySignCountTooLow" | "FidoVerificationFailed" | "FidoChallengeMfaMismatch" | "UnsupportedLegacyCognitoSession" | "InvalidIdentityProof" | "PaginationDataExpired" | "ExistingKeysViolateExclusiveKeyAccess" | "ExportDelayTooShort" | "ExportWindowTooLong" | "InvalidTotpFailureLimit" | "InvalidEip191SignRequest" | "CannotResendUserInvitation" | "InvalidNotificationEndpointCount" | "CannotDeletePendingSubscription" | "InvalidNotificationUrlProtocol" | "EmptyOneOfOrgEventFilter" | "EmptyAllExceptOrgEventFilter" | "InvalidTapNodeHash" | "InvalidOneTimeCode" | "MessageNotFound" | "MessageAlreadySigned" | "MessageRejected" | "MessageReplaced" | "InvalidMessageType" | "EmptyAddress" | "InvalidEth2SigningPolicySlotRange" | "InvalidEth2SigningPolicyEpochRange" | "InvalidEth2SigningPolicyTimestampRange" | "InvalidEth2SigningPolicyOverlappingRule" | "RpcUrlMissing" | "MmiChainIdMissing" | "EthersInvalidRpcUrl" | "EthersGetTransactionCountError" | "InvalidPassword" | "BabylonStakingFeePlusDustOverflow" | "BabylonStaking" | "BabylonStakingIncorrectKey" | "BabylonStakingSegwitNonDeposit" | "BabylonStakingRegistrationRequiresTaproot" | "PsbtSigning" | "TooManyResets" | "TooManyRequests" | "TooManyFailedLogins" | "BadBtcMessageSignP2shFlag" | "InvalidTendermintRequest" | "PolicyVersionMaxReached" | "PolicyVersionInvalid" | "PolicySecretLimitReached" | "PolicySecretTooLarge" | "InvalidRandomSecretLength" | "InvalidImportKey" | "AlienOwnerInvalid" | "EmptyUpdateRequest" | "InvalidPolicyReference" | "PolicyEngineDisabled" | "InvalidWasmPolicy" | "CelProgramTooLarge" | "InvalidPolicy" | "RedundantDerivationPath" | "ImportKeyMissing" | "InvalidAbiMethods" | "BabylonCovSign" | "InvalidPolicyLogsRequest" | "UserProfileMigrationMultipleEntries" | "UserProfileMigrationTooManyItems" | "InputTooShort" | "InvalidTweakLength" | "InvalidCustomChains" | "InvalidRpcRequest" | "InvalidAclEntry";
2854
+ BadRequestErrorCode: "GenericBadRequest" | "CannotVoteOnRedeemedRequest" | "PendingOpAlreadyVetoed" | "MultiplePendingOpsReferenced" | "DisallowedAllowRuleReference" | "InvalidPaginationToken" | "InvalidEmail" | "InvalidEmailTemplate" | "QueryMetricsError" | "InvalidTelegramData" | "ValidationError" | "WebhookPolicyTimeoutOutOfBounds" | "WebhookPolicyDisallowedUrlScheme" | "WebhookPolicyDisallowedUrlHost" | "WebhookPolicyDisallowedHeaders" | "ReservedName" | "UserEmailNotConfigured" | "EmailPasswordNotFound" | "PasswordAuthNotAllowedByInvitation" | "OneTimeCodeExpired" | "InvalidBody" | "InvalidJwt" | "InvitationNoLongerValid" | "TokenRequestError" | "InvalidMfaReceipt" | "InvalidMfaPolicyCount" | "InvalidMfaPolicyNumAuthFactors" | "InvalidMfaPolicyNumAllowedApprovers" | "InvalidMfaPolicyGracePeriodTooLong" | "InvalidBabylonStakingPolicyParams" | "InvalidSuiTxReceiversEmptyAllowlist" | "InvalidBtcTxReceiversEmptyAllowlist" | "InvalidRequireRoleSessionAllowlist" | "InvalidCreateKeyCount" | "InvalidDiffieHellmanCount" | "OrgInviteExistingUser" | "OrgUserAlreadyExists" | "OrgNameTaken" | "KwkNotFoundInRegion" | "OrgIsNotOrgExport" | "RoleNameTaken" | "PolicyNameTaken" | "NameTaken" | "ContactNameInvalid" | "ContactAddressesInvalid" | "ContactLabelInvalid" | "ContactModified" | "PolicyNotFound" | "PolicyVersionNotFound" | "PolicyRuleDisallowedByType" | "PolicyTypeDisallowed" | "PolicyDuplicateError" | "PolicyStillAttached" | "PolicyModified" | "PolicyNotAttached" | "AddKeyToRoleCountTooHigh" | "InvalidKeyId" | "InvalidTimeLockAlreadyInThePast" | "InvalidRestrictedScopes" | "InvalidUpdate" | "InvalidMetadataLength" | "InvalidLength" | "InvalidKeyMaterialId" | "KeyNotFound" | "SiweChallengeNotFound" | "SiweInvalidRequest" | "SiwsChallengeNotFound" | "SiwsInvalidRequest" | "UserExportDerivedKey" | "UserExportPublicKeyInvalid" | "NistP256PublicKeyInvalid" | "UnableToAccessSmtpRelay" | "UserExportInProgress" | "RoleNotFound" | "InvalidRoleNameOrId" | "InvalidMfaReceiptOrgIdMissing" | "InvalidMfaReceiptInvalidOrgId" | "MfaRequestNotFound" | "InvalidKeyType" | "InvalidPropertiesForKeyType" | "MismatchedKeyPropertiesPatch" | "MissingBinanceApiKey" | "MissingBybitApiKey" | "MissingCoinbaseApiKey" | "BinanceKeyMasterMismatch" | "BybitAccountMismatch" | "InvalidKeyMaterial" | "InvalidHexValue" | "InvalidBase32Value" | "InvalidBase58Value" | "InvalidBase64Value" | "InvalidSs58Value" | "InvalidForkVersionLength" | "InvalidEthAddress" | "InvalidStellarAddress" | "InvalidOrgNameOrId" | "InvalidUpdateOrgRequestDisallowedMfaType" | "InvalidUpdateOrgRequestEmptyAllowedMfaTypes" | "EmailOtpDelayTooShortForRegisterMfa" | "InvalidStakeDeposit" | "InvalidBlobSignRequest" | "InvalidDiffieHellmanRequest" | "InvalidSolanaSignRequest" | "InvalidEip712SignRequest" | "InvalidEip7702SignRequest" | "OnlySpecifyOne" | "IncompatibleParams" | "NoOidcDataInProof" | "InvalidEvmSignRequest" | "InvalidEth2SignRequest" | "InvalidDeriveKeyRequest" | "InvalidStakingAmount" | "CustomStakingAmountNotAllowedForWrapperContract" | "InvalidUnstakeRequest" | "InvalidCreateUserRequest" | "UserAlreadyExists" | "IdpUserAlreadyExists" | "CognitoUserAlreadyOrgMember" | "UserNotFound" | "UserWithEmailNotFound" | "PolicyKeyMismatch" | "EmptyScopes" | "InvalidScopesForRoleSession" | "InvalidLifetime" | "NoSingleKeyForUser" | "InvalidOrgPolicyRule" | "SourceIpAllowlistEmpty" | "LimitWindowTooLong" | "Erc20ContractDisallowed" | "EmptyRuleError" | "PolicyFieldValidationError" | "OptionalListEmpty" | "MultipleExclusiveFieldsProvided" | "DuplicateFieldEntry" | "InvalidRange" | "InvalidOrgPolicyRepeatedRule" | "InvalidSuiTransaction" | "SuiSenderMismatch" | "AvaSignHashError" | "AvaSignError" | "BtcSegwitHashError" | "BtcTaprootHashError" | "BtcSignError" | "TaprootSignError" | "Eip712SignError" | "InvalidMemberRoleInUserAdd" | "InvalidMemberRoleInRecipientAdd" | "ThirdPartyUserAlreadyExists" | "OidcIdentityAlreadyExists" | "UserAlreadyHasIdentity" | "ThirdPartyUserNotFound" | "DeleteOidcUserError" | "DeleteUserError" | "SessionRoleMismatch" | "InvalidOidcToken" | "InvalidOidcIdentity" | "OidcIssuerUnsupported" | "OidcIssuerNotAllowed" | "OidcIssuerNoApplicableJwk" | "FidoKeyAlreadyRegistered" | "FidoKeySignCountTooLow" | "FidoVerificationFailed" | "FidoChallengeMfaMismatch" | "UnsupportedLegacyCognitoSession" | "InvalidIdentityProof" | "PaginationDataExpired" | "ExistingKeysViolateExclusiveKeyAccess" | "ExportDelayTooShort" | "ExportWindowTooLong" | "InvalidTotpFailureLimit" | "InvalidEip191SignRequest" | "CannotResendUserInvitation" | "InvalidNotificationEndpointCount" | "CannotDeletePendingSubscription" | "InvalidNotificationUrlProtocol" | "EmptyOneOfOrgEventFilter" | "EmptyAllExceptOrgEventFilter" | "InvalidTapNodeHash" | "InvalidOneTimeCode" | "MessageNotFound" | "MessageAlreadySigned" | "MessageRejected" | "MessageReplaced" | "InvalidMessageType" | "EmptyAddress" | "InvalidEth2SigningPolicySlotRange" | "InvalidEth2SigningPolicyEpochRange" | "InvalidEth2SigningPolicyTimestampRange" | "InvalidEth2SigningPolicyOverlappingRule" | "RpcUrlMissing" | "MmiChainIdMissing" | "EthersInvalidRpcUrl" | "EthersGetTransactionCountError" | "InvalidPassword" | "BabylonStakingFeePlusDustOverflow" | "BabylonStaking" | "BabylonStakingIncorrectKey" | "BabylonStakingSegwitNonDeposit" | "BabylonStakingRegistrationRequiresTaproot" | "PsbtSigning" | "TooManyResets" | "TooManyRequests" | "TooManyFailedLogins" | "BadBtcMessageSignP2shFlag" | "InvalidTendermintRequest" | "PolicyVersionMaxReached" | "PolicyVersionInvalid" | "PolicySecretLimitReached" | "PolicySecretTooLarge" | "InvalidRandomSecretLength" | "InvalidImportKey" | "AlienOwnerInvalid" | "EmptyUpdateRequest" | "InvalidPolicyReference" | "PolicyEngineDisabled" | "InvalidWasmPolicy" | "CelProgramTooLarge" | "InvalidPolicy" | "RedundantDerivationPath" | "ImportKeyMissing" | "InvalidAbiMethods" | "BabylonCovSign" | "InvalidPolicyLogsRequest" | "UserProfileMigrationMultipleEntries" | "UserProfileMigrationTooManyItems" | "InputTooShort" | "InvalidTweakLength" | "InvalidCustomChains" | "InvalidRpcRequest" | "InvalidAclEntry";
2853
2855
  BillingArgs: {
2854
2856
  billing_org: components["schemas"]["Id"];
2855
2857
  event_type: components["schemas"]["BillingEvent"];
@@ -6160,7 +6162,7 @@ export interface components {
6160
6162
  request_device_identifier?: boolean;
6161
6163
  };
6162
6164
  /** @enum {string} */
6163
- ForbiddenErrorCode: "AlienKeyCreate" | "CannotAssumeIdentity" | "SentryDisallowed" | "PasskeyLoginDisabled" | "PasskeyNotRegistered" | "CannotCreateOrg" | "WrongMfaEmailOtpJwt" | "OrgFlagNotSet" | "FidoRequiredToRemoveTotp" | "OidcIdentityLimitReached" | "OidcScopeCeilingMissing" | "OidcIssuerNotAllowedForMemberRole" | "OidcNoMemberRolesAllowed" | "EmailOtpNotConfigured" | "MfaChallengeExpired" | "ChainIdNotAllowed" | "InvalidOrg" | "OrgIdMismatch" | "SessionForWrongOrg" | "SelfDelete" | "SelfDisable" | "SelfMfaReset" | "InvalidOrgMembershipRoleChange" | "UserDisabled" | "OrgDisabled" | "OrgNotFound" | "OrgWithoutOwner" | "OrphanedUser" | "OidcUserNotFound" | "UserNotInOrg" | "UserNotOrgOwner" | "UserNotKeyOwner" | "InvalidRole" | "DisabledRole" | "KeyDisabled" | "KeyNotInRole" | "ContactNotInOrg" | "UserExportRequestNotInOrg" | "UserExportRequestInvalid" | "UserExportDisabled" | "UserNotOriginalKeyOwner" | "UserNotInRole" | "MustBeFullMember" | "SessionExpired" | "SessionChanged" | "SessionRevoked" | "ExpectedUserSession" | "SessionRoleChanged" | "ScopedNameNotFound" | "SessionInvalidEpochToken" | "SessionInvalidRefreshToken" | "SessionRefreshTokenExpired" | "InvalidAuthHeader" | "SessionNotFound" | "InvalidArn" | "SessionInvalidAuthToken" | "SessionAuthTokenExpired" | "SessionPossiblyStolenToken" | "MfaDisallowedIdentity" | "MfaDisallowedApprover" | "MfaTypeNotAllowed" | "MfaNotApprovedYet" | "MfaConfirmationCodeMismatch" | "MfaHttpRequestMismatch" | "MfaRemoveBelowMin" | "MfaOrgRequirementNotMet" | "MfaRegistrationDisallowed" | "TotpAlreadyConfigured" | "TotpConfigurationChanged" | "MfaTotpBadConfiguration" | "MfaTotpBadCode" | "MfaTotpRateLimit" | "ImproperSessionScope" | "FullSessionRequired" | "SessionWithoutAnyScopeUnder" | "UserRoleUnprivileged" | "MemberRoleForbidden" | "MfaNotConfigured" | "RemoveLastOidcIdentity" | "OperationNotAllowed" | "OrgExportRetrievalDisabled" | "ChangingKeyExportRequirementIsDisabled" | "AutoAddBlsKeyToProtectedRole" | "UserNotPolicyOwner" | "UserNotContactOwner" | "UserNotBucketOwner" | "LegacySessionCannotHaveScopeCeiling" | "RoleInParentOrgNotAllowed" | "RemoveKeyFromRoleUserNotAllowed" | "SiweChallengeExpired" | "SiweMessageNotValid" | "SiweMessageInvalidSignature" | "SiwsChallengeExpired" | "SiwsDomain" | "SiwsMessageInvalid" | "Acl";
6165
+ ForbiddenErrorCode: "AlienKeyCreate" | "CannotAssumeIdentity" | "SentryDisallowed" | "PasskeyLoginDisabled" | "PasskeyNotRegistered" | "CannotCreateOrg" | "WrongMfaEmailOtpJwt" | "OrgFlagNotSet" | "FidoRequiredToRemoveTotp" | "OidcIdentityLimitReached" | "OidcScopeCeilingMissing" | "OidcIssuerNotAllowedForMemberRole" | "OidcNoMemberRolesAllowed" | "EmailOtpNotConfigured" | "MfaChallengeExpired" | "ChainIdNotAllowed" | "InvalidOrg" | "OrgIdMismatch" | "SessionForWrongOrg" | "SelfDelete" | "SelfDisable" | "SelfMfaReset" | "InvalidOrgMembershipRoleChange" | "UserDisabled" | "OrgDisabled" | "OrgNotFound" | "OrgWithoutOwner" | "OrphanedUser" | "OidcUserNotFound" | "UserNotInOrg" | "UserNotOrgOwner" | "UserNotKeyOwner" | "InvalidRole" | "DisabledRole" | "KeyDisabled" | "KeyNotInRole" | "ContactNotInOrg" | "UserExportRequestNotInOrg" | "UserExportRequestInvalid" | "UserExportDisabled" | "UserNotOriginalKeyOwner" | "UserNotInRole" | "MustBeFullMember" | "SessionExpired" | "SessionChanged" | "SessionRevoked" | "ExpectedUserSession" | "SessionRoleChanged" | "ScopedNameNotFound" | "SessionInvalidEpochToken" | "SessionInvalidRefreshToken" | "SessionRefreshTokenExpired" | "InvalidAuthHeader" | "SessionNotFound" | "InvalidArn" | "SessionInvalidAuthToken" | "SessionAuthTokenExpired" | "SessionPossiblyStolenToken" | "MfaDisallowedIdentity" | "MfaDisallowedApprover" | "PendingOpDisallowedApprover" | "MfaTypeNotAllowed" | "MfaNotApprovedYet" | "MfaConfirmationCodeMismatch" | "MfaRemoveBelowMin" | "MfaOrgRequirementNotMet" | "MfaRegistrationDisallowed" | "TotpAlreadyConfigured" | "TotpConfigurationChanged" | "MfaTotpBadConfiguration" | "MfaTotpBadCode" | "MfaTotpRateLimit" | "ImproperSessionScope" | "FullSessionRequired" | "SessionWithoutAnyScopeUnder" | "UserRoleUnprivileged" | "MemberRoleForbidden" | "MfaNotConfigured" | "RemoveLastOidcIdentity" | "OperationNotAllowed" | "OrgExportRetrievalDisabled" | "ChangingKeyExportRequirementIsDisabled" | "AutoAddBlsKeyToProtectedRole" | "UserNotPolicyOwner" | "UserNotContactOwner" | "UserNotBucketOwner" | "LegacySessionCannotHaveScopeCeiling" | "RoleInParentOrgNotAllowed" | "RemoveKeyFromRoleUserNotAllowed" | "SiweChallengeExpired" | "SiweMessageNotValid" | "SiweMessageInvalidSignature" | "SiwsChallengeExpired" | "SiwsDomain" | "SiwsMessageInvalid" | "Acl";
6164
6166
  /**
6165
6167
  * @description Specifies a fork of the `BeaconChain`, to prevent replay attacks.
6166
6168
  * The schema of `Fork` is defined in the [Beacon chain
@@ -6893,13 +6895,16 @@ export interface components {
6893
6895
  * }
6894
6896
  */
6895
6897
  MfaPolicy: {
6896
- /** @description Users who are allowed to approve. If empty at creation time, default to the current user. */
6898
+ /**
6899
+ * @description Users who are allowed to approve. If empty, the current user
6900
+ * will be inserted by default.
6901
+ */
6897
6902
  allowed_approvers?: string[];
6898
6903
  /** @description Allowed approval types. When omitted, defaults to any. */
6899
6904
  allowed_mfa_types?: components["schemas"]["MfaType"][] | null;
6900
6905
  /**
6901
6906
  * Format: int32
6902
- * @description How many users to require to approve (defaults to 1).
6907
+ * @description How many users must approve (defaults to 1).
6903
6908
  */
6904
6909
  count?: number;
6905
6910
  lifetime?: components["schemas"]["Seconds"];
@@ -6956,7 +6961,7 @@ export interface components {
6956
6961
  MfaRequiredArgs: {
6957
6962
  /** @description Always set to first MFA id from `Self::ids` */
6958
6963
  id: string;
6959
- /** @description Non-empty MFA request IDs */
6964
+ /** @description Non-empty MFA request IDs or [`PendingOpPolicyRef`]-form refs */
6960
6965
  ids: string[];
6961
6966
  /** @description Organization id */
6962
6967
  org_id: string;
@@ -8097,7 +8102,7 @@ export interface components {
8097
8102
  };
8098
8103
  PolicyErrorCode: components["schemas"]["PolicyErrorOwnCodes"] | components["schemas"]["EvmTxDepositErrorCode"];
8099
8104
  /** @enum {string} */
8100
- PolicyErrorOwnCodes: "Inapplicable" | "SuiTxReceiversDisallowedTransactionKind" | "SuiTxReceiversDisallowedTransferAddress" | "SuiTxReceiversDisallowedCommand" | "BtcTxDisallowedOutputs" | "BtcSignatureExceededValue" | "BtcValueOverflow" | "BtcSighashTypeDisallowed" | "Eip7702AddressMismatch" | "EvmTxReceiverMismatch" | "EvmTxChainIdMismatch" | "EvmTxSenderMismatch" | "EvmTxExceededValue" | "EvmTxExceededGasCost" | "EvmTxGasCostUndefined" | "EvmDataDisallowed" | "Erc20DataInvalid" | "EvmContractAddressUndefined" | "EvmContractChainIdUndefined" | "EvmDataNotDefined" | "EvmDataInvalid" | "EvmContractNotInAllowlist" | "Erc20ExceededTransferLimit" | "Erc20ReceiverMismatch" | "Erc20ExceededApproveLimit" | "Erc20SpenderMismatch" | "EvmFunctionNotInAllowlist" | "EvmFunctionCallInvalid" | "EvmFunctionCallDisallowedArg" | "PolicyDisjunctionError" | "PolicyNegationError" | "Eth2ExceededMaxUnstake" | "Eth2ConcurrentUnstaking" | "NotInIpv4Allowlist" | "NotInOriginAllowlist" | "NotInOperationAllowlist" | "InvalidSourceIp" | "RawSigningNotAllowed" | "DiffieHellmanExchangeNotAllowed" | "Eip712SigningNotAllowed" | "OidcSourceNotAllowed" | "NoOidcAuthSourcesDefined" | "AddKeyToRoleDisallowed" | "KeysAlreadyInRole" | "KeyInMultipleRoles" | "KeyAccessError" | "RequireRoleSessionKeyAccessError" | "BtcMessageSigningNotAllowed" | "Eip191SigningNotAllowed" | "Eip7702SigningNotAllowed" | "TaprootSigningDisallowed" | "SegwitSigningDisallowed" | "PsbtSigningDisallowed" | "BabylonStakingDisallowed" | "TimeLocked" | "CelPolicyDenied" | "BabylonStakingNetwork" | "BabylonStakingParamsVersion" | "BabylonStakingExplicitParams" | "BabylonStakingStakerPk" | "BabylonStakingFinalityProviderPk" | "BabylonStakingLockTime" | "BabylonStakingValue" | "BabylonStakingChangeAddress" | "BabylonStakingFee" | "BabylonStakingWithdrawalAddress" | "BabylonStakingBbnAddress" | "SolanaInstructionCountLow" | "SolanaInstructionCountHigh" | "SolanaNotInInstructionAllowlist" | "SolanaInstructionMismatch" | "WasmPoliciesDisabled" | "WasmPolicyDenied" | "WasmPolicyFailed" | "WebhookPoliciesDisabled" | "DeniedByWebhook" | "ExplicitlyDenied";
8105
+ PolicyErrorOwnCodes: "MfaHttpRequestMismatch" | "MfaExpired" | "Inapplicable" | "SuiTxReceiversDisallowedTransactionKind" | "SuiTxReceiversDisallowedTransferAddress" | "SuiTxReceiversDisallowedCommand" | "BtcTxDisallowedOutputs" | "BtcSignatureExceededValue" | "BtcValueOverflow" | "BtcSighashTypeDisallowed" | "Eip7702AddressMismatch" | "EvmTxReceiverMismatch" | "EvmTxChainIdMismatch" | "EvmTxSenderMismatch" | "EvmTxExceededValue" | "EvmTxExceededGasCost" | "EvmTxGasCostUndefined" | "EvmDataDisallowed" | "Erc20DataInvalid" | "EvmContractAddressUndefined" | "EvmContractChainIdUndefined" | "EvmDataNotDefined" | "EvmDataInvalid" | "EvmContractNotInAllowlist" | "Erc20ExceededTransferLimit" | "Erc20ReceiverMismatch" | "Erc20ExceededApproveLimit" | "Erc20SpenderMismatch" | "EvmFunctionNotInAllowlist" | "EvmFunctionCallInvalid" | "EvmFunctionCallDisallowedArg" | "PolicyDisjunctionError" | "PolicyNegationError" | "Eth2ExceededMaxUnstake" | "Eth2ConcurrentUnstaking" | "NotInIpv4Allowlist" | "NotInOriginAllowlist" | "NotInOperationAllowlist" | "InvalidSourceIp" | "RawSigningNotAllowed" | "DiffieHellmanExchangeNotAllowed" | "Eip712SigningNotAllowed" | "OidcSourceNotAllowed" | "NoOidcAuthSourcesDefined" | "AddKeyToRoleDisallowed" | "KeysAlreadyInRole" | "KeyInMultipleRoles" | "KeyAccessError" | "RequireRoleSessionKeyAccessError" | "BtcMessageSigningNotAllowed" | "Eip191SigningNotAllowed" | "Eip7702SigningNotAllowed" | "TaprootSigningDisallowed" | "SegwitSigningDisallowed" | "PsbtSigningDisallowed" | "BabylonStakingDisallowed" | "TimeLocked" | "CelPolicyDenied" | "BabylonStakingNetwork" | "BabylonStakingParamsVersion" | "BabylonStakingExplicitParams" | "BabylonStakingStakerPk" | "BabylonStakingFinalityProviderPk" | "BabylonStakingLockTime" | "BabylonStakingValue" | "BabylonStakingChangeAddress" | "BabylonStakingFee" | "BabylonStakingWithdrawalAddress" | "BabylonStakingBbnAddress" | "SolanaInstructionCountLow" | "SolanaInstructionCountHigh" | "SolanaNotInInstructionAllowlist" | "SolanaInstructionMismatch" | "WasmPoliciesDisabled" | "WasmPolicyDenied" | "WasmPolicyFailed" | "WebhookPoliciesDisabled" | "DeniedByWebhook" | "MfaApprovalsNotYetValid" | "ExplicitlyDenied";
8101
8106
  /** @description A struct containing all the information about a specific version of a policy. */
8102
8107
  PolicyInfo: {
8103
8108
  /** @description The access-control entries for the policy. */
@@ -8179,7 +8184,7 @@ export interface components {
8179
8184
  PolicyType: "Key" | "Role" | "Wasm";
8180
8185
  PreconditionErrorCode: components["schemas"]["PreconditionErrorOwnCodes"] | components["schemas"]["PolicyErrorCode"];
8181
8186
  /** @enum {string} */
8182
- PreconditionErrorOwnCodes: "FailOnMfaRequired" | "KeyRegionLocked" | "KeyRegionChangedRecently" | "MfaRegionLocked" | "Eth2ProposerSlotTooLow" | "Eth2AttestationSourceEpochTooLow" | "Eth2AttestationTargetEpochTooLow" | "Eth2ConcurrentBlockSigning" | "Eth2ConcurrentAttestationSigning" | "Eth2MultiDepositToNonGeneratedKey" | "Eth2MultiDepositUnknownInitialDeposit" | "Eth2MultiDepositWithdrawalAddressMismatch" | "ConcurrentSigningWhenTimeLimitPolicyIsDefined" | "BabylonEotsConcurrentSigning" | "TendermintStateError" | "TendermintConcurrentSigning" | "MfaApprovalsNotYetValid";
8187
+ PreconditionErrorOwnCodes: "FailOnMfaRequired" | "KeyRegionLocked" | "KeyRegionChangedRecently" | "MfaRegionLocked" | "Eth2ProposerSlotTooLow" | "Eth2AttestationSourceEpochTooLow" | "Eth2AttestationTargetEpochTooLow" | "Eth2ConcurrentBlockSigning" | "Eth2ConcurrentAttestationSigning" | "Eth2MultiDepositToNonGeneratedKey" | "Eth2MultiDepositUnknownInitialDeposit" | "Eth2MultiDepositWithdrawalAddressMismatch" | "ConcurrentSigningWhenTimeLimitPolicyIsDefined" | "BabylonEotsConcurrentSigning" | "TendermintStateError" | "TendermintConcurrentSigning";
8183
8188
  /** @description Contains outputs of previous transactions. */
8184
8189
  PrevOutputs: OneOf<[
8185
8190
  {
@@ -9263,28 +9268,36 @@ export interface components {
9263
9268
  */
9264
9269
  created_validator_key_id: string;
9265
9270
  };
9271
+ /**
9272
+ * @description Approval state for a [`MfaRequest`] in [`MfaRequestSource::Legacy`] mode:
9273
+ * the per-policy [`ApprovalConstraints`] plus an inline `approved_by` map.
9274
+ * Pooled MfaRequests carry only [`ApprovalConstraints`] — their approvals live
9275
+ * on the linked [`PendingOp`] — so the type system enforces "no pooled
9276
+ * MfaRequest has an `approved_by`."
9277
+ */
9266
9278
  Status: {
9267
9279
  /** @description Users who are allowed to approve. Must be non-empty. */
9268
9280
  allowed_approvers: string[];
9269
9281
  /** @description Allowed approval types. When omitted, defaults to any. */
9270
9282
  allowed_mfa_types?: components["schemas"]["MfaType"][] | null;
9271
- /** @description Users who have already approved */
9272
- approved_by: {
9273
- [key: string]: {
9274
- [key: string]: components["schemas"]["ApprovalInfo"];
9275
- };
9276
- };
9277
9283
  /**
9278
9284
  * Format: int32
9279
- * @description How many users must approve
9285
+ * @description How many users must approve (defaults to 1).
9280
9286
  */
9281
9287
  count: number;
9282
9288
  /**
9283
9289
  * Format: int32
9284
- * @description How many auth factors to require per user
9290
+ * @description How many auth factors to require per user (defaults to 1).
9285
9291
  */
9286
9292
  num_auth_factors: number;
9287
9293
  request_comparer?: components["schemas"]["HttpRequestCmp"];
9294
+ } & {
9295
+ /** @description Users who have already approved. */
9296
+ approved_by: {
9297
+ [key: string]: {
9298
+ [key: string]: components["schemas"]["ApprovalInfo"];
9299
+ };
9300
+ };
9288
9301
  };
9289
9302
  /**
9290
9303
  * @description A single asset balance entry returned by [`SubAccountAssetsResponse`].
@@ -14751,6 +14764,8 @@ export interface operations {
14751
14764
  * the exact value previously returned as 'last_evaluated_key' from the same endpoint.
14752
14765
  */
14753
14766
  "page.start"?: string | null;
14767
+ /** @description Membership roles. If defined, only invitations for one of these roles are returned, grouped by role in descending role order (owners first, aliens last). */
14768
+ membership?: components["schemas"]["MemberRole"][] | null;
14754
14769
  };
14755
14770
  path: {
14756
14771
  /**
@@ -15257,6 +15272,8 @@ export interface operations {
15257
15272
  *
15258
15273
  * NOTE that if pagination is used and a page limit is set, the returned result
15259
15274
  * set may contain either FEWER or MORE elements than the requested page limit.
15275
+ * In particular, legacy MFA requests are not paginated: every accessible one
15276
+ * is returned in the first page, on top of the page limit.
15260
15277
  */
15261
15278
  mfaList: {
15262
15279
  parameters: {
@@ -18213,6 +18230,8 @@ export interface operations {
18213
18230
  "page.start"?: string | null;
18214
18231
  /** @description A query string. If defined, all returned users will contain this string in their name or email. */
18215
18232
  q?: string | null;
18233
+ /** @description Membership roles. If defined, only users with one of these roles in the org are returned, grouped by role in descending role order (owners first, aliens last). */
18234
+ membership?: components["schemas"]["MemberRole"][] | null;
18216
18235
  };
18217
18236
  path: {
18218
18237
  /**