diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 4963731..2b4e27f 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -6,7 +6,7 @@
# @global-owner1 and @global-owner2 will be requested for
# review when someone opens a pull request.
#* @global-owner1 @global-owner2
-* @toniya-klaytn @praveen-klaytn @naveed-klaytn
+* @praveen-klaytn @naveed-klaytn
# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
diff --git a/.github/ISSUE_TEMPLATE/--questions-and-others.md b/.github/ISSUE_TEMPLATE/--questions-and-others.md
index 87a40e2..e9484d1 100644
--- a/.github/ISSUE_TEMPLATE/--questions-and-others.md
+++ b/.github/ISSUE_TEMPLATE/--questions-and-others.md
@@ -1,6 +1,6 @@
---
name: "❓ Questions and Others"
-about: Questions regarding Klaytn Service SDK or other issues not related to bug nor feature request
+about: Questions regarding Kaia Service SDK or other issues not related to bug nor feature request
title: ''
labels: ''
assignees: ''
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index d807efe..b0afa77 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -15,7 +15,7 @@ Please put an x in the boxes related to your change.
*Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.*
-- [ ] I have read the [CONTRIBUTING GUIDELINES](https://github.com/klaytn/klaytn-service-sdk/blob/main/CONTRIBUTING.md) doc
+- [ ] I have read the [CONTRIBUTING GUIDELINES](https://github.com/kaiachain/kaia-service-sdk/blob/main/CONTRIBUTING.md) doc
- [ ] I have signed the CLA by posting "I have read the CLA Document and I hereby sign the CLA" in the comment
- [ ] Lint and unit tests pass locally with my changes
- [ ] I have added tests that prove my fix is effective or that my feature works
diff --git a/.github/workflows/CLA.yml b/.github/workflows/CLA.yml
deleted file mode 100644
index 1d73d10..0000000
--- a/.github/workflows/CLA.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-# name: "CLA Assistant"
-# on:
-# issue_comment:
-# types: [created]
-# pull_request_target:
-# types: [opened, closed, synchronize]
-
-# jobs:
-# CLAssistant:
-# runs-on: ubuntu-latest
-# permissions:
-# actions: write
-# pull-requests: write
-# steps:
-# - name: "CLA Assistant"
-# if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
-# uses: cla-assistant/github-action@v2.1.3-beta
-# env:
-# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-# PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_PERSONAL_ACCESS_TOKEN }}
-# with:
-# path-to-signatures: "${{ github.event.repository.name }}/signatures/version1/cla.json"
-# path-to-document: "https://gist.github.com/e78f99e1c527225637e269cff1bc7e49" # Klaytn Gist
-# branch: "master"
-# allowlist: dependabot[bot]
-# remote-repository-name: ${{ secrets.CLA_REPOSITORY }}
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8bd2ed5..0cf15e5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,8 +1,8 @@
# Contributing Guidelines
-Thank you for your interest in contributing to Klaytn. As an open source project, Klaytn is always open to the developer community and we welcome your contribution to help more developer onboarding resources for the Klaytn developer community. Please read the guideline below and follow it in all interactions with the project.
+Thank you for your interest in contributing to Kaia. As an open source project, Kaia is always open to the developer community and we welcome your contribution to help more developer onboarding resources for the Kaia developer community. Please read the guideline below and follow it in all interactions with the project.
-## How to Contribute on Klaytn
+## How to Contribute on Kaia
1. Read this [contributing document](./CONTRIBUTING.md).
2. Sign [Contributor Licensing Agreement (CLA)](#contributor-license-agreement-cla).
@@ -22,24 +22,24 @@ There are various ways to contribute and participate. Please read the guidelines
### Issues and Bugs
-If you find a bug or other issues in Klaytn, please [submit an issue](https://github.com/klaytn/klaytn-service-sdk/issues). Before submitting an issue, please invest some extra time to figure out that:
+If you find a bug or other issues in Kaia, please [submit an issue](https://github.com/kaiachain/kaia-service-sdk/issues). Before submitting an issue, please invest some extra time to figure out that:
- The issue is not a duplicate issue.
-- The issue has not been fixed in the latest release of klaytn-service-sdk.
-Please do not use the issue tracker for personal support requests. Use developer@klaytn.foundation for the personal support requests.
+- The issue has not been fixed in the latest release of kaia-service-sdk.
+Please do not use the issue tracker for personal support requests. Use developer@kaia.io for the personal support requests.
When you report a bug, please make sure that your report has the following information.
- Steps to reproduce the issue.
- A clear and complete description of the issue.
- Code and/or screen captures are highly recommended.
-After confirming your report meets the above criteria, [submit the issue](https://github.com/klaytn/klaytn-service-sdk/issues). Please use [labels](#usage-of-labels) to categorize your issue.
+After confirming your report meets the above criteria, [submit the issue](https://github.com/kaiachain/kaia-service-sdk/issues). Please use [labels](#usage-of-labels) to categorize your issue.
### Feature Requests
-You can also use the [issue tracker](https://github.com/klaytn/klaytn-service-sdk/issues) to request a new feature or enhancement. Note that any code contribution without an issue link will not be accepted.
+You can also use the [issue tracker](https://github.com/kaiachain/kaia-service-sdk/issues) to request a new feature or enhancement. Note that any code contribution without an issue link will not be accepted.
-Please submit an issue explaining your proposal first so that the Klaytn developer community can fully understand and discuss the idea. Please use [labels](#usage-of-labels) for your feature request as well.
+Please submit an issue explaining your proposal first so that the Kaia developer community can fully understand and discuss the idea. Please use [labels](#usage-of-labels) for your feature request as well.
#### Usage of Labels
diff --git a/KaiaLogo.svg b/KaiaLogo.svg
new file mode 100644
index 0000000..a148b5f
--- /dev/null
+++ b/KaiaLogo.svg
@@ -0,0 +1,30 @@
+
\ No newline at end of file
diff --git a/KlaytnLogo.png b/KlaytnLogo.png
deleted file mode 100644
index 4e5340e..0000000
Binary files a/KlaytnLogo.png and /dev/null differ
diff --git a/README.md b/README.md
index ad20e5e..dd492cc 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,5 @@
-[![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/)
-
-# NO LONGER MAINTAINED
-
-Since the launch of Kaia Blockchain this repository has been parked in favour of the new open-source projects in [Kaia's Github](https://github.com/kaiachain). Contributors have now moved there continuing with massive open-source contributions to our blockchain ecosystem. A big thank you to everyone who has contributed to this repository. For more information about Klaytn's chain merge with Finschia blockchain please refer to the launching of Kaia blockchain - [kaia.io](http://kaia.io/).
-
----
-
-![Logo](./KlaytnLogo.png)
-- [Klaytn Service SDK](#klaytn-service-sdk)
+![Logo](./KaiaLogo.svg)
+- [Kaia Service SDK](#kaia-service-sdk)
- [Oracles Module](#oracles-module)
- [Witnet](#witnet)
- [Bridges Module](#bridges-module)
@@ -21,18 +13,18 @@ Since the launch of Kaia Blockchain this repository has been parked in favour of
- [Requirement](#requirement)
- [Steps to setup locally](#steps-to-setup-locally)
- [Usage](#usage)
- - [Want to Contribute to Klaytn Service SDK? ](#want-to-contribute-to-klaytn-service-sdk-)
+ - [Want to Contribute to Kaia Service SDK? ](#want-to-contribute-to-kaia-service-sdk-)
-# Klaytn Service SDK
-Klaytn Service SDK is a monorepo of all the services in the Klaytn ecosystem. Check out [Quick Usage](#quick-usage) to integrate the services in the dapp
+# Kaia Service SDK
+Kaia Service SDK is a monorepo of all the services in the Kaia ecosystem. Check out [Quick Usage](#quick-usage) to integrate the services in the dapp
## Oracles Module
### Witnet
Implementation of the following features using the [Hardhat](https://hardhat.org/) development environment:
-- [Witnet Data Feeds on Klaytn](/packages/oracles-starter-kit/README.md#witnet-price-feeds)
-- [Witnet Randomness on Klaytn](/packages/oracles-starter-kit/README.md#witnet-randomness)
+- [Witnet Data Feeds on Kaia](/packages/oracles-starter-kit/README.md#witnet-price-feeds)
+- [Witnet Randomness on Kaia](/packages/oracles-starter-kit/README.md#witnet-randomness)
## Bridges Module
@@ -62,13 +54,13 @@ Integration of the following 5 DEX contracts:
## Quick Usage
-To use klaytn-service-sdk, you can import the below npm packages in an existing nodejs project. Instructions for importing the package and utilizing its features can be found in the readme provided in the links below.
+To use kaia-service-sdk, you can import the below npm packages in an existing nodejs project. Instructions for importing the package and utilizing its features can be found in the readme provided in the links below.
-- [@klaytn/kss-bridges-wormhole](https://www.npmjs.com/package/@klaytn/kss-bridges-wormhole) - Contains Wormhole integration
-- [@klaytn/kss-bridges-celer](https://www.npmjs.com/package/@klaytn/kss-bridges-celer) - Contains Celer integration
-- [@klaytn/kss-dexs](https://www.npmjs.com/package/@klaytn/kss-dexs) - Contains Dexs integration
-- [@klaytn/kss-oracles](https://www.npmjs.com/package/@klaytn/kss-oracles) - Contains Oracles integration
-- [@klaytn/kss-cli](https://www.npmjs.com/package/@klaytn/kss-cli) - Contains CLI features
+- [@kaiachain/kss-bridges-wormhole](https://www.npmjs.com/package/@kaiachain/kss-bridges-wormhole) - Contains Wormhole integration
+- [@kaiachain/kss-bridges-celer](https://www.npmjs.com/package/@kaiachain/kss-bridges-celer) - Contains Celer integration
+- [@kaiachain/kss-dexs](https://www.npmjs.com/package/@kaiachain/kss-dexs) - Contains Dexs integration
+- [@kaiachain/kss-oracles](https://www.npmjs.com/package/@kaiachain/kss-oracles) - Contains Oracles integration
+- [@kaiachain/kss-cli](https://www.npmjs.com/package/@kaiachain/kss-cli) - Contains CLI features
## Setup Locally
@@ -91,8 +83,8 @@ If you would like to explore current repository, please follow below instruction
After installing all the requirements, run the following to setup locally:
```bash
-git clone https://github.com/klaytn/klaytn-service-sdk
-cd klaytn-service-sdk
+git clone https://github.com/kaiachain/kaia-service-sdk
+cd kaia-service-sdk
```
then
```bash
@@ -109,9 +101,9 @@ npm i
# Usage
You can run the scripts from respective packages by `cd` into the packages.
-## Want to Contribute to Klaytn Service SDK?
+## Want to Contribute to Kaia Service SDK?
-In line with our commitment to decentralization, all Klaytn codebase and its documentations are completely open source. Klaytn always welcomes your contribution. Anyone can view, edit, fix its contents and make suggestions. You can either create a pull request on GitHub or create a enhancement request. Make sure to check our [Contributor License Agreement (CLA)](https://gist.github.com/e78f99e1c527225637e269cff1bc7e49) first and there are also a few guidelines our contributors would check out before contributing:
+In line with our commitment to decentralization, all Kaia codebase and its documentations are completely open source. Kaia always welcomes your contribution. Anyone can view, edit, fix its contents and make suggestions. You can either create a pull request on GitHub or create a enhancement request. Make sure to check our [Contributor License Agreement (CLA)](https://gist.github.com/e78f99e1c527225637e269cff1bc7e49) first and there are also a few guidelines our contributors would check out before contributing:
- [Contribution Guide](./CONTRIBUTING.md)
- [License](./LICENSE)
diff --git a/code-of-conduct.md b/code-of-conduct.md
index 2ee6272..6dd8d3d 100644
--- a/code-of-conduct.md
+++ b/code-of-conduct.md
@@ -59,7 +59,7 @@ representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the project maintainers responsible for enforcement at developer@klaytn.foundation.
+reported to the project maintainers responsible for enforcement at developer@kaia.io.
All complaints will be reviewed and investigated promptly and fairly.
All project maintainers are obligated to respect the privacy and security of the
diff --git a/package.json b/package.json
index 162cb27..8c272de 100644
--- a/package.json
+++ b/package.json
@@ -1,11 +1,11 @@
{
"name": "@kaiachain/kss",
"version": "1.0.0",
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "GPL-3.0",
"repository": {
"type": "git",
- "url": "https://github.com/klaytn/klaytn-service-sdk.git"
+ "url": "https://github.com/kaiachain/kaia-service-sdk.git"
},
"private": true,
"scripts": {
diff --git a/packages/bridges-starter-kit/celer/README.md b/packages/bridges-starter-kit/celer/README.md
index b61ff3b..cb0faba 100644
--- a/packages/bridges-starter-kit/celer/README.md
+++ b/packages/bridges-starter-kit/celer/README.md
@@ -1,5 +1,5 @@
-# Klaytn cBridge starter kit
-- [Klaytn cBridge starter kit](#klaytn-cbridge-starter-kit)
+# Kaia cBridge starter kit
+- [Kaia cBridge starter kit](#kaia-cbridge-starter-kit)
- [About](#about)
- [Folder Structure](#folder-structure)
- [Setup](#setup)
@@ -8,8 +8,7 @@
## About
cBridge provides a simple liquidity provider experience and high liquidity efficiency for users when they manage their funds in different
-chains with lower costs. Learn more about flow and terminology from this doc:
-[cBridge requirements](https://docs.google.com/document/d/15gVJfiAjzfR9dyz_ad7jQOx5PSPI6p_RanLA6XRLCYU/edit?usp=sharing)
+chains with lower costs.
## Folder Structure
@@ -28,9 +27,9 @@ npm install
## Overview
For details information & documentation of each module of this package please refer to the docs linked below.
-- ### [Overview](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/Overview.md)
-- ### [ParamsExplanation](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/ParamsExplanation.md)
-- ### [Prerequisites.md](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/Prerequisites.md)
+- ### [Overview](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/Overview.md)
+- ### [ParamsExplanation](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/ParamsExplanation.md)
+- ### [Prerequisites.md](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/bridges-starter-kit/celer/docs/Prerequisites.md)
## Reference Docs:
diff --git a/packages/bridges-starter-kit/celer/docs/Overview.md b/packages/bridges-starter-kit/celer/docs/Overview.md
index c066f95..9e741b3 100644
--- a/packages/bridges-starter-kit/celer/docs/Overview.md
+++ b/packages/bridges-starter-kit/celer/docs/Overview.md
@@ -19,7 +19,7 @@ method. It's a liquidity based transfer in which your assets are locked at sourc
destination_chain (receiving chain) from a pool of liquidity available on the destination chain.
Thanos snap 🫰 for this is:
```
-import { poolTransfer } from "@klaytn/kss-bridges-celer"
+import { poolTransfer } from "@kaiachain/kss-bridges-celer"
poolTransfer(transferObj)
```
@@ -43,7 +43,7 @@ Promise `transferId` - `string` Transfer ID for tracking the transaction. To tra
#### Example
```typescript
-const BridgeSDK = require('@klaytn/kss-bridges-celer')
+const BridgeSDK = require('@kaiachain/kss-bridges-celer')
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let WALLET_ADDRESS = "0x5Bc0635a264B94A8662e0F2887d76F8E5925F837"
@@ -108,7 +108,7 @@ source_chain by submitting refund request.
🫰 of it:
```
-import{ poolTransferRefund } from "@klaytn/kss-bridges-celer"
+import{ poolTransferRefund } from "@kaiachain/kss-bridges-celer"
poolTransferRefund(transferObj)
```
@@ -132,7 +132,7 @@ Promise `transactionReceipt` - `object` blockchain transaction receipt
#### Example
```typescript
-let BridgeSDK = require("@klaytn/kss-bridges-celer");
+let BridgeSDK = require("@kaiachain/kss-bridges-celer");
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let WALLET_ADDRESS = "0x5Bc0635a264B94A8662e0F2887d76F8E5925F837"
@@ -167,7 +167,7 @@ method. It's a traditional method in which your assets are locked at source_chai
destination_chain (receiving chain).
Thanos snap 🫰 for this is:
```
-import { mintCanonicalToken } from "@klaytn/kss-bridges-celer"
+import { mintCanonicalToken } from "@kaiachain/kss-bridges-celer"
mintCanonicalToken(transferObj)
```
@@ -189,7 +189,7 @@ Promise `depositId` - `string` deposit id
#### Example
```typescript
-let BridgeSDK = require("@klaytn/kss-bridges-celer");
+let BridgeSDK = require("@kaiachain/kss-bridges-celer");
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let WALLET_ADDRESS = "0x5Bc0635a264B94A8662e0F2887d76F8E5925F837"
@@ -252,7 +252,7 @@ source_chain by submitting refund request.
🫰 of it:
```
-import{ mintCanonicalTokenRefund } from "@klaytn/kss-bridges-celer"
+import{ mintCanonicalTokenRefund } from "@kaiachain/kss-bridges-celer"
mintCanonicalTokenRefund(transferObj)
```
@@ -278,7 +278,7 @@ Promise `transactionReceipt` - `object` blockchain transaction receipt
#### Example
```typescript
-let BridgeSDK = require("@klaytn/kss-bridges-celer");
+let BridgeSDK = require("@kaiachain/kss-bridges-celer");
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let WALLET_ADDRESS = "0x5Bc0635a264B94A8662e0F2887d76F8E5925F837"
@@ -316,7 +316,7 @@ destination_chain (the chain on which you want to receive you withdrawn assets).
Thanos snap 🫰 for this is:
```
-import { burnCanonicalToken } from "@klaytn/kss-bridges-celer"
+import { burnCanonicalToken } from "@kaiachain/kss-bridges-celer"
burnCanonicalToken(transferObj)
```
@@ -344,7 +344,7 @@ Promise `burnId` - `string` burn id to track the status or refund transaction if
#### Example
```typescript
-let BridgeSDK = require("@klaytn/kss-bridges-celer");
+let BridgeSDK = require("@kaiachain/kss-bridges-celer");
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let SRC_CHAIN_RPC= "https://godwoken-testnet-v1.ckbapp.dev"
@@ -406,7 +406,7 @@ source_chain by submitting refund request.
🫰 of it:
```
-import{ burnCanonicalTokenRefund } from "@klaytn/kss-bridges-celer"
+import{ burnCanonicalTokenRefund } from "@kaiachain/kss-bridges-celer"
burnCanonicalTokenRefund(transferObj)
```
@@ -431,7 +431,7 @@ Promise `transactionReceipt` - `object` blockchain transaction receipt
#### Example
```typescript
-let BridgeSDK = require("@klaytn/kss-bridges-celer");
+let BridgeSDK = require("@kaiachain/kss-bridges-celer");
let CBRIDGE_GATEWAY_URL = "https://cbridge-v2-test.celer.network"
let WALLET_ADDRESS = "0x5Bc0635a264B94A8662e0F2887d76F8E5925F837"
diff --git a/packages/bridges-starter-kit/celer/package.json b/packages/bridges-starter-kit/celer/package.json
index 538904d..c80cd1f 100644
--- a/packages/bridges-starter-kit/celer/package.json
+++ b/packages/bridges-starter-kit/celer/package.json
@@ -1,5 +1,5 @@
{
- "name": "@klaytn/kss-bridges-celer",
+ "name": "@kaiachain/kss-bridges-celer",
"version": "1.0.0",
"description": "TypeScript client and use-cases for cBridge",
"exports": {
@@ -8,7 +8,7 @@
},
"repository": {
"type": "git",
- "url": "https://github.com/klaytn/klaytn-service-sdk.git"
+ "url": "https://github.com/kaiachain/kaia-service-sdk.git"
},
"scripts": {
"test-transfer": "mocha -r ts-node/register test/poolTransfer-test.ts -t 2400000",
@@ -23,19 +23,20 @@
"lint:fix": "eslint --ext .ts --fix ."
},
"keywords": [
- "klaytn",
+ "kaia",
+ "kaiachain",
"celer",
"bridge",
"pooltransfer",
"mintcanonicaltoken",
"kss-bridges-celer"
],
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "GPL-3.0",
"bugs": {
- "url": "https://github.com/klaytn/klaytn-service-sdk/issues"
+ "url": "https://github.com/kaiachain/kaia-service-sdk/issues"
},
- "homepage": "https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/bridges-starter-kit/celer/README.md",
+ "homepage": "https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/bridges-starter-kit/celer/README.md",
"dependencies": {
"axios": "^0.26.1",
"celer-web-utils": "^1.0.9",
diff --git a/packages/bridges-starter-kit/wormhole/.env.example b/packages/bridges-starter-kit/wormhole/.env.example
index 836879e..237a099 100644
--- a/packages/bridges-starter-kit/wormhole/.env.example
+++ b/packages/bridges-starter-kit/wormhole/.env.example
@@ -6,7 +6,7 @@ SOURCE_PRIVATE_KEY=
# Token to be attested or transferred
SOURCE_TOKEN=0x0FD3f122A9B6471928B60eeE73bF35D895C4Ee01
# Source chain rpc url
-SOURCE_RPC_URL=https://api.baobab.klaytn.net:8651
+SOURCE_RPC_URL=https://public-en.kairos.node.kaia.io
# Source Testnet core bridge contract https://book.wormhole.com/reference/contracts.html#core-bridge-1
SOURCE_CORE_BRIDGE=0x1830CC6eE66c84D2F177B94D544967c774E624cA
# Source Testnet token bridge contract https://book.wormhole.com/reference/contracts.html#token-bridge-1
diff --git a/packages/bridges-starter-kit/wormhole/README.md b/packages/bridges-starter-kit/wormhole/README.md
index df17c7f..cc071ee 100644
--- a/packages/bridges-starter-kit/wormhole/README.md
+++ b/packages/bridges-starter-kit/wormhole/README.md
@@ -1,5 +1,5 @@
-# Klaytn wormhole starter kit
-- [Klaytn wormhole starter kit](#klaytn-wormhole-starter-kit)
+# Kaia wormhole starter kit
+- [Kaia wormhole starter kit](#kaia-wormhole-starter-kit)
- [About](#about)
- [Folder Structure](#folder-structure)
- [Installation](#installation)
@@ -15,7 +15,7 @@
- [Reference Docs:](#reference-docs)
## About
-Wormhole is a communication bridge between Klaytn and other top decentralized finance (DeFi) networks. Existing projects, platforms, and communities are able to move tokenized assets seamlessly across blockchains and benefit from Klaytn's high speed and low cost.
+Wormhole is a communication bridge between Kaia and other top decentralized finance (DeFi) networks. Existing projects, platforms, and communities are able to move tokenized assets seamlessly across blockchains and benefit from Kaia's high speed and low cost.
## Folder Structure
@@ -23,20 +23,20 @@ Wormhole is a communication bridge between Klaytn and other top decentralized fi
- [use-cases](./use-cases): Ready-to-run code of some use-cases to call the Wormhole Rest APIs.
## Installation
-`npm install @klaytn/kss-bridges-wormhole --save`
+`npm install @kaiachain/kss-bridges-wormhole --save`
## Quick Start
BridgeSDK contains the implementation of the bridge use-cases.
CoreBridgeSDK exposes methods of `@certusone/wormhole-sdk` to write custom methods.
```typescript
-import BridgeSDK from '@klaytn/kss-bridges-wormhole';
-import CoreBridgeSDK from '@klaytn/kss-bridges-wormhole/core';
+import BridgeSDK from '@kaiachain/kss-bridges-wormhole';
+import CoreBridgeSDK from '@kaiachain/kss-bridges-wormhole/core';
or
-const BridgeSDK = require('@klaytn/kss-bridges-wormhole');
-const CoreBridgeSDK = require('@klaytn/kss-bridges-wormhole/core');
+const BridgeSDK = require('@kaiachain/kss-bridges-wormhole');
+const CoreBridgeSDK = require('@kaiachain/kss-bridges-wormhole/core');
```
You can run following ready-made use-cases to test
@@ -70,14 +70,14 @@ BridgeSDK.attest(config, source, destination)
### Example
```typescript
-const BridgeSDK = require('@klaytn/kss-bridges-wormhole');
-const CoreBridgeSDK = require('@klaytn/kss-bridges-wormhole/core');
+const BridgeSDK = require('@kaiachain/kss-bridges-wormhole');
+const CoreBridgeSDK = require('@kaiachain/kss-bridges-wormhole/core');
const config = { restAddress: "https://wormhole-v2-testnet-api.certus.one" };
const source = {
token: "0x0FD3f122A9B6471928B60eeE73bF35D895C4Ee01", // Token to be attested
privatekey: "source chain private key",
- rpcUrl: "https://api.baobab.klaytn.net:8651",
+ rpcUrl: "https://public-en.kairos.node.kaia.io",
coreBridge: "0x1830CC6eE66c84D2F177B94D544967c774E624cA",
tokenBridge: "0xC7A13BE098720840dEa132D860fDfa030884b09A",
wormholeChainId: "13"
@@ -129,14 +129,14 @@ BridgeSDK.transferBasic(config, source, destination, AMOUNT, IS_NATIVE)
### Example
```typescript
-const BridgeSDK = require('@klaytn/kss-bridges-wormhole');
-const CoreBridgeSDK = require('@klaytn/kss-bridges-wormhole/core');
+const BridgeSDK = require('@kaiachain/kss-bridges-wormhole');
+const CoreBridgeSDK = require('@kaiachain/kss-bridges-wormhole/core');
const config = { restAddress: "https://wormhole-v2-testnet-api.certus.one" };
const source = {
token: "0x0FD3f122A9B6471928B60eeE73bF35D895C4Ee01", // Token to be attested
privatekey: "source chain private key",
- rpcUrl: "https://api.baobab.klaytn.net:8651",
+ rpcUrl: "https://public-en.kairos.node.kaia.io",
coreBridge: "0x1830CC6eE66c84D2F177B94D544967c774E624cA",
tokenBridge: "0xC7A13BE098720840dEa132D860fDfa030884b09A",
wormholeChainId: "13"
diff --git a/packages/bridges-starter-kit/wormhole/core/abi/bridge.json b/packages/bridges-starter-kit/wormhole/core/abi/bridge.json
index 649e129..e87b309 100644
--- a/packages/bridges-starter-kit/wormhole/core/abi/bridge.json
+++ b/packages/bridges-starter-kit/wormhole/core/abi/bridge.json
@@ -1185,7 +1185,7 @@
"type": "function"
}
],
- "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"name\":\"ContractUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"_parseTransferCommon\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"attestToken\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId_\",\"type\":\"uint16\"}],\"name\":\"bridgeContracts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferAndUnwrapETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferAndUnwrapETHWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"createWrapped\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"symbol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.AssetMeta\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"encodeAssetMeta\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"name\":\"encodeTransfer\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"fromAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"struct BridgeStructs.TransferWithPayload\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"name\":\"encodeTransferWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"evmChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finality\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"governanceActionIsConsumed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceChainId\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceContract\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFork\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"impl\",\"type\":\"address\"}],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"isTransferCompleted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"outstandingBridged\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseAssetMeta\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"symbol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.AssetMeta\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parsePayloadID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedRecoverChainId\",\"type\":\"bytes\"}],\"name\":\"parseRecoverChainId\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"evmChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"newChainId\",\"type\":\"uint16\"}],\"internalType\":\"struct BridgeStructs.RecoverChainId\",\"name\":\"rci\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseRegisterChain\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"emitterChainID\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"emitterAddress\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.RegisterChain\",\"name\":\"chain\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseTransfer\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseTransferWithPayload\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"fromAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"struct BridgeStructs.TransferWithPayload\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseUpgrade\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"newContract\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.UpgradeContract\",\"name\":\"chain\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"registerChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"submitRecoverChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"arbiterFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"transferTokens\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"transferTokensWithPayload\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"updateWrapped\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wormhole\",\"outputs\":[{\"internalType\":\"contract IWormhole\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"arbiterFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"wrapAndTransferETH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"wrapAndTransferETHWithPayload\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"}],\"name\":\"wrappedAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"parseRecoverChainId(bytes)\":{\"details\":\"Parse a recoverChainId (action 3) with minimal validation\"},\"submitRecoverChainId(bytes)\":{\"details\":\"Updates the `chainId` and `evmChainId` on a forked chain via Governance VAA/VM\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/Structs.sol\":{\"keccak256\":\"0xa604a8c8afdbb518c77cc5c01b594ad85126a31e7b2d6d09618ca0f603b9d27b\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://2f6b889a7450229bbbd665ac4772ce953b40d0ec8ff4329116fb34231625c75b\",\"dweb:/ipfs/QmSSJbpY7SciGUYgmyi9cVa9gCqGAor7MWWaWvqnmZJNGH\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol\":{\"keccak256\":\"0x2573b70189a8d62445611b1ba116e458f08dc2a1a6673a7046f28cc2c060dad2\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://30e916f35d58a05fca06ecf46368d03f636b5e7db1fe1a4088497b692eca9983\",\"dweb:/ipfs/QmejDjpptG56KxLLmzGHW8sFXdSHRUK1GWW2Wb1TjTsS3E\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol\":{\"keccak256\":\"0xd73dfa6cc8d82f1ea9c925706cff6166fc8b5e5fddf7d0657081d9d17a9210a2\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://feeb8ba7b882d86c8119c614c8db9442ac55667d33d1c1e60a1ce0bb8ad9fe4c\",\"dweb:/ipfs/QmP3gwW2EB4gpwfTQ13WWeeYTNZ4dNPruU2Vq3J8MbbmA9\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol\":{\"keccak256\":\"0xb1276ff56b3b3ec8c39ebd93f9ef39474392651c516701d058314af056c0c248\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://cd68f3e545661670ccc29337afdf6c68cf034e91bfe6e1687b59ee9cf1b8478f\",\"dweb:/ipfs/QmZ8xh7wW48TNCsRULmESbWDCUr1eMrpabWG3cVvvpipUE\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol\":{\"keccak256\":\"0x1037e777ff2e163fef215ac0614b52170a10772f59a00ea20084235d7b51a54e\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://cc9c7fabc090050115f430005d776ed852857e10820dd58d86adc4fd438f6ef5\",\"dweb:/ipfs/QmSTxgmPh2C26HN82g2zftFYjWxUFkpHmrVCiUArgCEtw6\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeState.sol\":{\"keccak256\":\"0x672e031da2131d4e7397579e6eef488872c3ff01bccac30c9c5e5105d43e3011\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://e04f85516b3bcc5a20c6c1a652464900042fcfc6042dd82039f802890317e725\",\"dweb:/ipfs/QmXiFziACrRcvE61rceeayVgqe6ve4rSDW5QWkHQkpo77e\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol\":{\"keccak256\":\"0x8b566541d46dc01ee3b4fa8613a7b5fb780250a24c1f152e33e0497b3154d1f9\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://24098d5a51fad4c2990658bfc469f3bcbbe8bfa268fd75174908cb972a257af5\",\"dweb:/ipfs/QmXox47JKWJtkWNs8jm6skMYR4g7yKmwpL4P9G7NaVdWwt\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol\":{\"keccak256\":\"0x793eb417861248bffd790b3ee0a93615c85d022387ffc644c5d806fc5e9a1dda\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://563fe4e2811b91fa39b4a6bd611aa1c50bea90559df6a62a1cf8df851a77daeb\",\"dweb:/ipfs/QmUXf8U2HrqoGtyf3caA1ybWwcCEm3btg97fzEgSTYZ5ta\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol\":{\"keccak256\":\"0x05997f9be5043ea467e8ada174b98310716f31ba2bf1222f25742d16cd17b86a\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://bc40d92042d88a44120349c525475d4ad85628c55a2202f434701a0d4f525c59\",\"dweb:/ipfs/QmRJdA3cJLzLTreMR1CRwGyPPKbbBmroSqWfPzh4xnmSaj\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenState.sol\":{\"keccak256\":\"0xf1d6dfe2b8f599f2030c5e1dc5f68ee49419debd736216fffe8f25e20d25336b\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://14c72ceeec3e8719b876343698a2849ee82ad7be6b39878364396b7541146116\",\"dweb:/ipfs/QmdZCKdgS4AAwMmymuar6FN75E1h4Xy27tEyfpugzwkLCs\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/interfaces/IWormhole.sol\":{\"keccak256\":\"0x8dcba3b71a875237d3d21ba4eaef9bde28fccb2e899b3d59bc00b486bbca5957\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://19868036a4c431bd6d87916006ed24543051c12dd1f8affa26c629c17e51dd14\",\"dweb:/ipfs/Qma7TjrXQNwvfoy3EWP1jbGLc6gqgg1AXQga6xpFf2LExc\"]},\"/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol\":{\"keccak256\":\"0xb6d59af8a03133928de622fc6af3d48557fddfc83c931011d1ea1b323269f5ad\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d9f41b924d0e527cf4ee5e3ec35df3f4f11d230ecb10ffe601151cd29203d682\",\"dweb:/ipfs/QmbPxeoHMMAKJWPhFyq7CH322yxdwFxDACSgYcxQdrmQGK\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xcbccf806d646bd9e2594650917208245d45998b887d5fc914de424247f5f9f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4b5f0125f6d8cfa940403990d54dd9921eb339bfdb011c11cb6a17088301ff1\",\"dweb:/ipfs/QmZXzn8XkJjKEyBy3zPqsssQJGqirhgipdGsjQBYMNArZ4\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x8ddea9f930f26e588ea606f44c90d2623560c908e38614a03a4ca78aea8f9202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fdf3a59554497c50ed8f4ffccd4ebcf73e49e1324e81ec05128d54d1b73c293\",\"dweb:/ipfs/QmRZtNA2Lx58eAqTXb5DGWxCmH2vxGGuzG6KgBU5fgbzip\"]},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x617614c3aaada8d7a901da2126a7407ae7e06b0410807f5c1b49cea9076199e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92619e75338160854fe67592bdb4facf63303fa0c817bfddc6fd90df02557831\",\"dweb:/ipfs/QmRibp4sJayHoKeyuymBUy11zjgaoGz2hkt6Ejy9JUjCCR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x5615339d191e77be7e46319b67856f9355786f705b7b3c4a7237ab70c1864ab1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7c6a52e49bd374890523443ac6e20fa0ca09ff8d65d5adbca6f2c8733758eea\",\"dweb:/ipfs/QmXXccov4bGGVqg6BwYc8QU9JwCNHmVYePj1ZYpgkxTbpF\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103065051300cd995fd4599ba91188d4071b92175b52f26110e02db091617c0\",\"dweb:/ipfs/QmSyDz67R2HCypDE8Pacn3voVwxw9x17NM66q47YgBnGqc\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x5d15d280d1f868f59a8264dc73f7ea8c51f10d78aac864b2f2ad29412d187ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c5c1fe2972d97dca1af03884c78315eb261bb486bacfadd04b0f440fdcfd6e\",\"dweb:/ipfs/QmTNTSdUSzUKWEeTH2A37RDXJ2Xf5jfTTpLuy1oudPPE8N\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbc991a1cf357ce19480831a40792c814238a3b5458134703682abd8aa39719fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab2e3313add3a233ad2d1e9b65cb7c0296bdbe159c6d631da2b1d027b4954926\",\"dweb:/ipfs/QmT8bVda92mptimLgonyq28qENq4sRgy6K3v118CvZcKdP\"]}},\"version\":1}",
+ "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newContract\",\"type\":\"address\"}],\"name\":\"ContractUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"_parseTransferCommon\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"attestToken\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"chainId_\",\"type\":\"uint16\"}],\"name\":\"bridgeContracts\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferAndUnwrapETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferAndUnwrapETHWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"completeTransferWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"createWrapped\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"symbol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.AssetMeta\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"encodeAssetMeta\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"name\":\"encodeTransfer\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"fromAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"struct BridgeStructs.TransferWithPayload\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"name\":\"encodeTransferWithPayload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"evmChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finality\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"governanceActionIsConsumed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceChainId\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceContract\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isFork\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"impl\",\"type\":\"address\"}],\"name\":\"isInitialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"isTransferCompleted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"outstandingBridged\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseAssetMeta\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"symbol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.AssetMeta\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parsePayloadID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedRecoverChainId\",\"type\":\"bytes\"}],\"name\":\"parseRecoverChainId\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"evmChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"newChainId\",\"type\":\"uint16\"}],\"internalType\":\"struct BridgeStructs.RecoverChainId\",\"name\":\"rci\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseRegisterChain\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"emitterChainID\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"emitterAddress\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.RegisterChain\",\"name\":\"chain\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseTransfer\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgeStructs.Transfer\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseTransferWithPayload\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"payloadID\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"tokenChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"toChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"fromAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"internalType\":\"struct BridgeStructs.TransferWithPayload\",\"name\":\"transfer\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encoded\",\"type\":\"bytes\"}],\"name\":\"parseUpgrade\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"module\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"chainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"newContract\",\"type\":\"bytes32\"}],\"internalType\":\"struct BridgeStructs.UpgradeContract\",\"name\":\"chain\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"registerChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"submitRecoverChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"arbiterFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"transferTokens\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"transferTokensWithPayload\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVm\",\"type\":\"bytes\"}],\"name\":\"updateWrapped\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedVM\",\"type\":\"bytes\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wormhole\",\"outputs\":[{\"internalType\":\"contract IWormhole\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"arbiterFee\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"wrapAndTransferETH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"recipientChain\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"wrapAndTransferETHWithPayload\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tokenChainId\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"tokenAddress\",\"type\":\"bytes32\"}],\"name\":\"wrappedAsset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"parseRecoverChainId(bytes)\":{\"details\":\"Parse a recoverChainId (action 3) with minimal validation\"},\"submitRecoverChainId(bytes)\":{\"details\":\"Updates the `chainId` and `evmChainId` on a forked chain via Governance VAA/VM\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/Structs.sol\":{\"keccak256\":\"0xa604a8c8afdbb518c77cc5c01b594ad85126a31e7b2d6d09618ca0f603b9d27b\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://2f6b889a7450229bbbd665ac4772ce953b40d0ec8ff4329116fb34231625c75b\",\"dweb:/ipfs/QmSSJbpY7SciGUYgmyi9cVa9gCqGAor7MWWaWvqnmZJNGH\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol\":{\"keccak256\":\"0x2573b70189a8d62445611b1ba116e458f08dc2a1a6673a7046f28cc2c060dad2\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://30e916f35d58a05fca06ecf46368d03f636b5e7db1fe1a4088497b692eca9983\",\"dweb:/ipfs/QmejDjpptG56KxLLmzGHW8sFXdSHRUK1GWW2Wb1TjTsS3E\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol\":{\"keccak256\":\"0xd73dfa6cc8d82f1ea9c925706cff6166fc8b5e5fddf7d0657081d9d17a9210a2\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://feeb8ba7b882d86c8119c614c8db9442ac55667d33d1c1e60a1ce0bb8ad9fe4c\",\"dweb:/ipfs/QmP3gwW2EB4gpwfTQ13WWeeYTNZ4dNPruU2Vq3J8MbbmA9\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol\":{\"keccak256\":\"0xb1276ff56b3b3ec8c39ebd93f9ef39474392651c516701d058314af056c0c248\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://cd68f3e545661670ccc29337afdf6c68cf034e91bfe6e1687b59ee9cf1b8478f\",\"dweb:/ipfs/QmZ8xh7wW48TNCsRULmESbWDCUr1eMrpabWG3cVvvpipUE\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol\":{\"keccak256\":\"0x1037e777ff2e163fef215ac0614b52170a10772f59a00ea20084235d7b51a54e\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://cc9c7fabc090050115f430005d776ed852857e10820dd58d86adc4fd438f6ef5\",\"dweb:/ipfs/QmSTxgmPh2C26HN82g2zftFYjWxUFkpHmrVCiUArgCEtw6\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeState.sol\":{\"keccak256\":\"0x672e031da2131d4e7397579e6eef488872c3ff01bccac30c9c5e5105d43e3011\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://e04f85516b3bcc5a20c6c1a652464900042fcfc6042dd82039f802890317e725\",\"dweb:/ipfs/QmXiFziACrRcvE61rceeayVgqe6ve4rSDW5QWkHQkpo77e\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol\":{\"keccak256\":\"0x8b566541d46dc01ee3b4fa8613a7b5fb780250a24c1f152e33e0497b3154d1f9\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://24098d5a51fad4c2990658bfc469f3bcbbe8bfa268fd75174908cb972a257af5\",\"dweb:/ipfs/QmXox47JKWJtkWNs8jm6skMYR4g7yKmwpL4P9G7NaVdWwt\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol\":{\"keccak256\":\"0x793eb417861248bffd790b3ee0a93615c85d022387ffc644c5d806fc5e9a1dda\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://563fe4e2811b91fa39b4a6bd611aa1c50bea90559df6a62a1cf8df851a77daeb\",\"dweb:/ipfs/QmUXf8U2HrqoGtyf3caA1ybWwcCEm3btg97fzEgSTYZ5ta\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol\":{\"keccak256\":\"0x05997f9be5043ea467e8ada174b98310716f31ba2bf1222f25742d16cd17b86a\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://bc40d92042d88a44120349c525475d4ad85628c55a2202f434701a0d4f525c59\",\"dweb:/ipfs/QmRJdA3cJLzLTreMR1CRwGyPPKbbBmroSqWfPzh4xnmSaj\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenState.sol\":{\"keccak256\":\"0xf1d6dfe2b8f599f2030c5e1dc5f68ee49419debd736216fffe8f25e20d25336b\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://14c72ceeec3e8719b876343698a2849ee82ad7be6b39878364396b7541146116\",\"dweb:/ipfs/QmdZCKdgS4AAwMmymuar6FN75E1h4Xy27tEyfpugzwkLCs\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/interfaces/IWormhole.sol\":{\"keccak256\":\"0x8dcba3b71a875237d3d21ba4eaef9bde28fccb2e899b3d59bc00b486bbca5957\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://19868036a4c431bd6d87916006ed24543051c12dd1f8affa26c629c17e51dd14\",\"dweb:/ipfs/Qma7TjrXQNwvfoy3EWP1jbGLc6gqgg1AXQga6xpFf2LExc\"]},\"/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol\":{\"keccak256\":\"0xb6d59af8a03133928de622fc6af3d48557fddfc83c931011d1ea1b323269f5ad\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://d9f41b924d0e527cf4ee5e3ec35df3f4f11d230ecb10ffe601151cd29203d682\",\"dweb:/ipfs/QmbPxeoHMMAKJWPhFyq7CH322yxdwFxDACSgYcxQdrmQGK\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"keccak256\":\"0xcbccf806d646bd9e2594650917208245d45998b887d5fc914de424247f5f9f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4b5f0125f6d8cfa940403990d54dd9921eb339bfdb011c11cb6a17088301ff1\",\"dweb:/ipfs/QmZXzn8XkJjKEyBy3zPqsssQJGqirhgipdGsjQBYMNArZ4\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x8ddea9f930f26e588ea606f44c90d2623560c908e38614a03a4ca78aea8f9202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fdf3a59554497c50ed8f4ffccd4ebcf73e49e1324e81ec05128d54d1b73c293\",\"dweb:/ipfs/QmRZtNA2Lx58eAqTXb5DGWxCmH2vxGGuzG6KgBU5fgbzip\"]},\"@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol\":{\"keccak256\":\"0x617614c3aaada8d7a901da2126a7407ae7e06b0410807f5c1b49cea9076199e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92619e75338160854fe67592bdb4facf63303fa0c817bfddc6fd90df02557831\",\"dweb:/ipfs/QmRibp4sJayHoKeyuymBUy11zjgaoGz2hkt6Ejy9JUjCCR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x5615339d191e77be7e46319b67856f9355786f705b7b3c4a7237ab70c1864ab1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7c6a52e49bd374890523443ac6e20fa0ca09ff8d65d5adbca6f2c8733758eea\",\"dweb:/ipfs/QmXXccov4bGGVqg6BwYc8QU9JwCNHmVYePj1ZYpgkxTbpF\"]},\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x842ccf9a6cd33e17b7acef8372ca42090755217b358fe0c44c98e951ea549d3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6cc5f36034a77d105263ae6d8cc18b16260b4a0f6cdb1a26f21ba3670fdd06dd\",\"dweb:/ipfs/QmdJrJ2LoG546BkfyZPta96BNmaVBfqZoh8kq7PqHuQyPk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x02348b2e4b9f3200c7e3907c5c2661643a6d8520e9f79939fbb9b4005a54894d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d41d627f4ef9c6006df8c2d01227d3cf4a6c3359b5704c629d88933272eecadd\",\"dweb:/ipfs/QmYDo7MvMsvuDxuJZ9RC9zFganS3Tm8RYzSmBP5qSmJfuY\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x3336baae5cf23e94274d75336e2d412193be508504aee185e61dc7d58cd05c8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39a05eec7083dfa0cc7e0cbfe6cd1bd085a340af1ede93fdff3ad047c5fb3d8e\",\"dweb:/ipfs/QmVApz5fCUq2QC8gKTsNNdCmcedJ3ETHp68zR5N3WUKS4r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0x78450f4e3b722cce467b21e285f72ce5eaf361e9ba9dd2241a413926246773cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103065051300cd995fd4599ba91188d4071b92175b52f26110e02db091617c0\",\"dweb:/ipfs/QmSyDz67R2HCypDE8Pacn3voVwxw9x17NM66q47YgBnGqc\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x5d15d280d1f868f59a8264dc73f7ea8c51f10d78aac864b2f2ad29412d187ff5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7c5c1fe2972d97dca1af03884c78315eb261bb486bacfadd04b0f440fdcfd6e\",\"dweb:/ipfs/QmTNTSdUSzUKWEeTH2A37RDXJ2Xf5jfTTpLuy1oudPPE8N\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbc991a1cf357ce19480831a40792c814238a3b5458134703682abd8aa39719fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab2e3313add3a233ad2d1e9b65cb7c0296bdbe159c6d631da2b1d027b4954926\",\"dweb:/ipfs/QmT8bVda92mptimLgonyq28qENq4sRgy6K3v118CvZcKdP\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506001600d55615b33806100256000396000f3fe6080604052600436106200027b5760003560e01c8063ad5c46481162000153578063cb4cfea811620000c5578063e89bc4011162000084578063e89bc401146200094e578063ea63738d1462000973578063f768441f14620009a7578063fbe3c2cd14620009cc578063fbeeacd914620009ed578063ff200cde1462000a4d57600080fd5b8063cb4cfea8146200084f578063d56e2e2414620008af578063d60b347f14620008d4578063e039f2241462000911578063e8059810146200092957600080fd5b8063bee9cdfc1162000112578063bee9cdfc14620007c0578063c3f511c114620007d7578063c48fa11514620007fc578063c5a5ebda1462000813578063c6878519146200082a57600080fd5b8063ad5c464814620006f5578063ad66a5f11462000715578063b046223b146200074a578063b172b222146200076f578063b96c7e4d146200078657600080fd5b80632c3c02a411620001ed57806384acd1bb11620001ac57806384acd1bb146200063b5780639981509f146200065b5780639a8a05921462000672578063a5799f93146200069c578063aa4efa5b14620006c157600080fd5b80632c3c02a4146200057f5780632f3a3d5d14620005b35780635f85426614620005d357806364d42b1714620005f8578063739fc8d1146200061957600080fd5b80631a2be4da116200023a5780631a2be4da14620004115780631c8475e4146200045f5780631ff1e28614620004935780632539464514620004d15780632b51137514620004f657600080fd5b806301f53255146200028857806307dfd8fb14620003065780630f50900814620003825780630f5287b014620003ba578063178149e714620003ea57600080fd5b366200028357005b600080fd5b3480156200029557600080fd5b50620002ad620002a7366004620045a7565b62000a72565b604051620002fd9190600060a0820190508251825260ff6020840151166020830152604083015161ffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b3480156200031357600080fd5b506200032b62000325366004620045a7565b62000bee565b604051620002fd9190600060c08201905060ff83511682526020830151602083015261ffff604084015116604083015260ff60608401511660608301526080830151608083015260a083015160a083015292915050565b3480156200038f57600080fd5b50620003a7620003a1366004620045a7565b62000d7d565b60405160ff9091168152602001620002fd565b620003d1620003cb36600462004426565b62000d91565b6040516001600160401b039091168152602001620002fd565b348015620003f757600080fd5b506200040f62000409366004620045a7565b62000e35565b005b3480156200041e57600080fd5b506200044e6200043036600462004409565b6001600160a01b031660009081526009602052604090205460ff1690565b6040519015158152602001620002fd565b3480156200046c57600080fd5b50620004846200047e366004620045a7565b62000f51565b604051620002fd919062004c0b565b348015620004a057600080fd5b50620004b8620004b2366004620049d1565b62000f60565b6040516001600160a01b039091168152602001620002fd565b348015620004de57600080fd5b506200040f620004f0366004620045a7565b62000f8c565b3480156200050357600080fd5b506200051b62000515366004620045a7565b6200109c565b604051620002fd9190600060e08201905060ff83511682526020830151602083015260408301516040830152606083015161ffff8082166060850152608085015160808501528060a08601511660a0850152505060c083015160c083015292915050565b3480156200058c57600080fd5b506200044e6200059e36600462004575565b60009081526005602052604090205460ff1690565b348015620005c057600080fd5b506001546001600160a01b0316620004b8565b348015620005e057600080fd5b5062000484620005f23660046200477f565b6200120d565b3480156200060557600080fd5b50600c545b604051908152602001620002fd565b3480156200062657600080fd5b50600254640100000000900460ff16620003a7565b3480156200064857600080fd5b506000546001600160a01b0316620004b8565b620003d16200066c366004620049ff565b620012a2565b3480156200067f57600080fd5b5060025461ffff165b60405161ffff9091168152602001620002fd565b348015620006a957600080fd5b506200040f620006bb366004620045a7565b620012e2565b348015620006ce57600080fd5b506200044e620006e036600462004575565b60009081526006602052604090205460ff1690565b3480156200070257600080fd5b506004546001600160a01b0316620004b8565b3480156200072257600080fd5b506200060a6200073436600462004993565b61ffff166000908152600b602052604090205490565b3480156200075757600080fd5b50620004846200076936600462004613565b6200144e565b3480156200077c57600080fd5b506003546200060a565b3480156200079357600080fd5b506200060a620007a536600462004409565b6001600160a01b03166000908152600a602052604090205490565b620003d1620007d136600462004a4d565b620014c7565b348015620007e457600080fd5b5062000484620007f6366004620045a7565b620014fa565b620003d16200080d3660046200451d565b62001509565b620003d16200082436600462004491565b6200182e565b3480156200083757600080fd5b506200040f62000849366004620045a7565b620018bd565b3480156200085c57600080fd5b50620008746200086e366004620045a7565b620018ce565b604051620002fd91908151815260208083015160ff16908201526040808301519082015260609182015161ffff169181019190915260800190565b348015620008bc57600080fd5b5062000484620008ce366004620046ad565b620019cd565b348015620008e157600080fd5b506200044e620008f336600462004409565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200091e57600080fd5b506200044e62001a10565b3480156200093657600080fd5b50620004b862000948366004620045a7565b62001a24565b3480156200095b57600080fd5b506200051b6200096d366004620045a7565b62001b39565b3480156200098057600080fd5b506200099862000992366004620045a7565b62001c45565b604051620002fd919062004d6f565b348015620009b457600080fd5b50620004b8620009c6366004620045a7565b62001dc2565b348015620009d957600080fd5b5060025462010000900461ffff1662000688565b348015620009fa57600080fd5b5062000a1262000a0c366004620045a7565b62001ed7565b604051620002fd91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b34801562000a5a57600080fd5b506200040f62000a6c366004620045a7565b62001fd6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290529062000aa9838262001fe3565b825262000ab860208262004ef2565b82519091506a546f6b656e4272696467651462000af25760405162461bcd60e51b815260040162000ae99062004d23565b60405180910390fd5b62000afe838262002045565b60ff16602083015262000b1360018262004ef2565b9050816020015160ff1660011462000b3f5760405162461bcd60e51b815260040162000ae99062004d49565b62000b4b8382620020a5565b61ffff16604083015262000b6160028262004ef2565b905062000b6f8382620020a5565b61ffff16606083015262000b8560028262004ef2565b905062000b93838262001fe3565b608083015262000ba560208262004ef2565b90508083511462000be85760405162461bcd60e51b815260206004820152600c60248201526b0eee4dedcce40d8cadccee8d60a31b604482015260640162000ae9565b50919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529062000c2c838262002045565b60ff16825262000c3e60018262004ef2565b9050816000015160ff1660021462000c8d5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b604482015260640162000ae9565b62000c99838262001fe3565b60208084019190915262000cae908262004ef2565b905062000cbc8382620020a5565b61ffff16604083015262000cd260028262004ef2565b905062000ce0838262002045565b60ff16606083015262000cf560018262004ef2565b905062000d03838262001fe3565b608083015262000d1560208262004ef2565b905062000d23838262001fe3565b60a083015262000d3560208262004ef2565b90508083511462000be85760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b604482015260640162000ae9565b600062000d8b828262002045565b92915050565b60006002600d54141562000de85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000ae9565b6002600d55600062000dfc88888662002106565b905062000e248160000151826020015183604001518989866060015187608001518a620025b6565b6001600d5598975050505050505050565b62000e3f62001a10565b62000e7a5760405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b604482015260640162000ae9565b600080600062000e8a84620026ea565b92509250925081819062000eb35760405162461bcd60e51b815260040162000ae9919062004c0b565b5062000ec483610140015162002919565b600062000ed58460e00151620018ce565b90504681604001511462000f205760405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b604482015260640162000ae9565b62000f2f816040015162002934565b60608101516002805461ffff191661ffff9092169190911790555b5050505050565b606062000d8b8260016200297f565b61ffff91909116600090815260086020908152604080832093835292905220546001600160a01b031690565b62000f9662001a10565b1562000fd45760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b604482015260640162000ae9565b600080600062000fe484620026ea565b9250925092508181906200100d5760405162461bcd60e51b815260040162000ae9919062004c0b565b506200101e83610140015162002919565b60006200102f8460e0015162001ed7565b90506200103f60025461ffff1690565b61ffff16816040015161ffff16146200108c5760405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b604482015260640162000ae9565b606081015162000f4a90620030f2565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905290620010e1838262002045565b60ff168252620010f360018262004ef2565b9050816000015160ff166001146200111f5760405162461bcd60e51b815260040162000ae99062004cf9565b6200112b838262003229565b60208084019190915262001140908262004ef2565b90506200114e838262001fe3565b60408301526200116060208262004ef2565b90506200116e8382620020a5565b61ffff1660608301526200118460028262004ef2565b905062001192838262001fe3565b6080830152620011a460208262004ef2565b9050620011b28382620020a5565b61ffff1660a0830152620011c860028262004ef2565b9050620011d6838262003229565b60c0830152620011e860208262004ef2565b90508083511462000be85760405162461bcd60e51b815260040162000ae99062004cf9565b8051602080830151604080850151606080870151608088015160a089015160c08a0151955160f89990991b6001600160f81b031916978901979097526021880195909552604187019290925260f091821b6001600160f01b03199081166061880152606387019490945293901b909116608384015260858301529060a5015b6040516020818303038152906040529050919050565b600080620012b08462003282565b9050620012d88160000151826020015183604001518989866060015187608001518a620025b6565b9695505050505050565b6000806000620012f284620026ea565b9250925092508181906200131b5760405162461bcd60e51b815260040162000ae9919062004c0b565b506200132c83610140015162002919565b60006200133d8460e0015162000a72565b90506200134d60025461ffff1690565b61ffff16816040015161ffff161480156200136f57506200136d62001a10565b155b80620013815750604081015161ffff16155b620013c25760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b604482015260640162000ae9565b606081015161ffff166000908152600b602052604081205414620014295760405162461bcd60e51b815260206004820152601860248201527f636861696e20616c726561647920726567697374657265640000000000000000604482015260640162000ae9565b62000f4a8160600151826080015161ffff9091166000908152600b6020526040902055565b8051602080830151604080850151606080870151608088015160a0890151945160f898891b6001600160f81b031990811698820198909852602181019690965260f09390931b6001600160f01b031916604186015290951b9093166043830152604482019290925260648101919091526084016200128c565b600080620014d6600062003282565b9050620012d8816000015182602001518360400151898986608001518a8a6200355c565b606062000d8b8260006200297f565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b038616916200154e9162004b28565b600060405180830381855afa9150503d80600081146200158b576040519150601f19603f3d011682016040523d82523d6000602084013e62001590565b606091505b5060408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1790529051919350600092506001600160a01b03871691620015d9919062004b28565b600060405180830381855afa9150503d806000811462001616576040519150601f19603f3d011682016040523d82523d6000602084013e6200161b565b606091505b5060408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1790529051919350600092506001600160a01b0388169162001664919062004b28565b600060405180830381855afa9150503d8060008114620016a1576040519150601f19603f3d011682016040523d82523d6000602084013e620016a6565b606091505b50915050600083806020019051810190620016c2919062004adb565b9050600083806020019051810190620016dc9190620045dd565b9050600083806020019051810190620016f69190620045dd565b9050600080602084015191506020830151905060006040518060c00160405280600260ff1681526020018d6001600160a01b031660001b81526020016200174060025461ffff1690565b61ffff1681526020018760ff16815260200184815260200183815250905060006200176b826200144e565b9050620017806000546001600160a01b031690565b6001600160a01b031663b19a437e348e84620017a760025460ff6401000000009091041690565b6040518563ffffffff1660e01b8152600401620017c79392919062004dea565b6020604051808303818588803b158015620017e157600080fd5b505af1158015620017f6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200181d919062004abe565b9d9c50505050505050505050505050565b60006002600d541415620018855760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000ae9565b6002600d5560006200189988888362002106565b905062000e24816000015182602001518360400151898986608001518a8a6200355c565b620018ca8160006200297f565b5050565b604080516080810182526000808252602082018190529181018290526060810182905290620018fe838262001fe3565b82526200190d60208262004ef2565b82519091506a546f6b656e427269646765146200193e5760405162461bcd60e51b815260040162000ae99062004d23565b6200194a838262002045565b60ff1660208301526200195f60018262004ef2565b9050816020015160ff166003146200198b5760405162461bcd60e51b815260040162000ae99062004d49565b62001997838262003229565b6040830152620019a960208262004ef2565b9050620019b78382620020a5565b61ffff16606083015262000ba560028262004ef2565b6060816000015182602001518360400151846060015185608001518660a001518760c001518860e001516040516020016200128c98979695949392919062004b79565b60004662001a1d600c5490565b1415905090565b60008060008062001a3d6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001a6a919062004c0b565b60006040518083038186803b15801562001a8357600080fd5b505afa15801562001a98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac2919081019062004824565b92509250925081819062001aeb5760405162461bcd60e51b815260040162000ae9919062004c0b565b5062001af783620035cf565b62001b165760405162461bcd60e51b815260040162000ae99062004cd0565b600062001b278460e0015162000bee565b9050620012d8818560a001516200363c565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529062001b7d8362000d7d565b90508060ff166001141562001b9f5762001b97836200109c565b915062000be8565b8060ff166003141562001c0757600062001bb98462001c45565b60038452602080820151908501526040808201519085015260608082015161ffff908116918601919091526080808301519086015260a091820151169084015250600060c083015262000be8565b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c185e5b1bd859081a5960721b604482015260640162000ae9565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201529062001c91838262002045565b60ff16825262001ca360018262004ef2565b9050816000015160ff1660031462001ccf5760405162461bcd60e51b815260040162000ae99062004cf9565b62001cdb838262003229565b60208084019190915262001cf0908262004ef2565b905062001cfe838262001fe3565b604083015262001d1060208262004ef2565b905062001d1e8382620020a5565b61ffff16606083015262001d3460028262004ef2565b905062001d42838262001fe3565b608083015262001d5460208262004ef2565b905062001d628382620020a5565b61ffff1660a083015262001d7860028262004ef2565b905062001d86838262001fe3565b60c083015262001d9860208262004ef2565b905062001db78182855162001dae919062005058565b859190620038ed565b60e083015250919050565b60008060008062001ddb6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001e08919062004c0b565b60006040518083038186803b15801562001e2157600080fd5b505afa15801562001e36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e60919081019062004824565b92509250925081819062001e895760405162461bcd60e51b815260040162000ae9919062004c0b565b5062001e9583620035cf565b62001eb45760405162461bcd60e51b815260040162000ae99062004cd0565b600062001ec58460e0015162000bee565b9050620012d8818560a0015162003a08565b60408051608081018252600080825260208201819052918101829052606081018290529062001f07838262001fe3565b825262001f1660208262004ef2565b82519091506a546f6b656e4272696467651462001f475760405162461bcd60e51b815260040162000ae99062004d23565b62001f53838262002045565b60ff16602083015262001f6860018262004ef2565b9050816020015160ff1660021462001f945760405162461bcd60e51b815260040162000ae99062004d49565b62001fa08382620020a5565b61ffff16604083015262001fb660028262004ef2565b905062001fc4838262001fe3565b606083015262000ba560208262004ef2565b620018ca8160016200297f565b600062001ff282602062004ef2565b835110156200203c5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b604482015260640162000ae9565b50016020015190565b60006200205482600162004ef2565b835110156200209c5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b604482015260640162000ae9565b50016001015190565b6000620020b482600262004ef2565b83511015620020fd5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015260640162000ae9565b50016002015190565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160a01b038416600090815260096020526040812054819060ff16156200224957856001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b1580156200218f57600080fd5b505afa158015620021a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021ca9190620049b2565b9150856001600160a01b0316633d6c043b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200220657600080fd5b505afa1580156200221b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200224191906200458e565b90506200225d565b505060025461ffff166001600160a01b0385165b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b03891691620022a1919062004b28565b600060405180830381855afa9150503d8060008114620022de576040519150601f19603f3d011682016040523d82523d6000602084013e620022e3565b606091505b50915050600081806020019051810190620022ff919062004adb565b90506200231862002311888362003b03565b8262003b42565b96506200232860025461ffff1690565b61ffff168461ffff161415620024c857604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17905290516000916001600160a01b038b16916200238d919062004b28565b600060405180830381855afa9150503d8060008114620023ca576040519150601f19603f3d011682016040523d82523d6000602084013e620023cf565b606091505b50915050600081806020019051810190620023eb91906200458e565b9050620023fb8a33308c62003b77565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17905290516000916001600160a01b038d169162002450919062004b28565b600060405180830381855afa9150503d80600081146200248d576040519150601f19603f3d011682016040523d82523d6000602084013e62002492565b606091505b50915050600081806020019051810190620024ae91906200458e565b9050620024bc838262005058565b9a505050505062002539565b620024d68833308a62003b77565b604051632770a7eb60e21b8152306004820152602481018890526001600160a01b03891690639dc29fac90604401600060405180830381600087803b1580156200251f57600080fd5b505af115801562002534573d6000803e3d6000fd5b505050505b600062002547888362003b03565b9050600062002557888462003b03565b90506200256760025461ffff1690565b61ffff168661ffff1614156200258357620025838a8362003bea565b6040805160a08101825261ffff909716875260208701959095529385015250506060820152346080820152949350505050565b600086841115620025ff5760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b604482015260640162000ae9565b6040805160e081018252600181526020810189905290810189905261ffff8a8116606083015260808201879052871660a082015260c081018590526000546001600160a01b031663b19a437e858562002658856200120d565b600254640100000000900460ff166040518563ffffffff1660e01b8152600401620026869392919062004dea565b6020604051808303818588803b158015620026a057600080fd5b505af1158015620026b5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620026dc919062004abe565b9a9950505050505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000606060008060006200275e6000546001600160a01b031690565b6001600160a01b031663c0fd8bde886040518263ffffffff1660e01b81526004016200278b919062004c0b565b60006040518083038186803b158015620027a457600080fd5b505afa158015620027b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027e3919081019062004824565b92509250925081620027fc579194509250905062002912565b60025462010000900461ffff1661ffff16836060015161ffff16146200285a5750506040805180820190915260168152753bb937b7339033b7bb32b93730b731b29031b430b4b760511b602082015290935060009250905062002912565b600354836080015114620028ad57505060408051808201909152601981527f77726f6e6720676f7665726e616e636520636f6e747261637400000000000000602082015290935060009250905062002912565b61014083015160009081526005602052604090205460ff1615620028f75782600060405180606001604052806022815260200162005adc6022913995509550955050505062002912565b50506040805160208101909152600081529093506001925090505b9193909250565b6000908152600560205260409020805460ff19166001179055565b4681146200297a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b604482015260640162000ae9565b600c55565b60606000806000620029996000546001600160a01b031690565b6001600160a01b031663c0fd8bde876040518263ffffffff1660e01b8152600401620029c6919062004c0b565b60006040518083038186803b158015620029df57600080fd5b505afa158015620029f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a1e919081019062004824565b92509250925081819062002a475760405162461bcd60e51b815260040162000ae9919062004c0b565b5062002a5383620035cf565b62002a725760405162461bcd60e51b815260040162000ae99062004cd0565b600062002a838460e0015162001b39565b9050600062002a96826080015162003cb7565b9050816000015160ff166003141562002af457336001600160a01b0382161462002af45760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21039b2b73232b960911b604482015260640162000ae9565b61014085015160009081526006602052604090205460ff161562002b5b5760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c65746564000000000000604482015260640162000ae9565b62002b808561014001516000908152600660205260409020805460ff19166001179055565b60025461ffff1661ffff168260a0015161ffff161462002bda5760405162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103a30b933b2ba1031b430b4b760611b604482015260640162000ae9565b600062002bea60025461ffff1690565b61ffff16836060015161ffff16141562002c255762002c0d836040015162003cb7565b905062002c1f81846020015162003d0d565b62002ca6565b600062002c3b8460600151856040015162000f60565b90506001600160a01b03811662002ca35760405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201526419081e595d60da1b606482015260840162000ae9565b90505b87158062002cc157506004546001600160a01b038281169116145b62002d1b5760405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201526208aa8960eb1b606482015260840162000ae9565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b0384169162002d5f919062004b28565b600060405180830381855afa9150503d806000811462002d9c576040519150601f19603f3d011682016040523d82523d6000602084013e62002da1565b606091505b5091505060008180602001905181019062002dbd919062004adb565b9050600062002dd186602001518362003b42565b9050600062002de58760c001518462003b42565b905060008111801562002e0157506001600160a01b0386163314155b1562002f93578181111562002e645760405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f756044820152611b9d60f21b606482015260840162000ae9565b8b1562002efe5760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002eb057600080fd5b505af115801562002ec5573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801562002ef7573d6000803e3d6000fd5b5062002f97565b60025461ffff1661ffff16876060015161ffff161462002f80576040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b15801562002f6157600080fd5b505af115801562002f76573d6000803e3d6000fd5b5050505062002f97565b62002f8d85338362003d3f565b62002f97565b5060005b600062002fa5828462005058565b90508c156200304a5760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002ff357600080fd5b505af115801562003008573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f1935050505015801562003043573d6000803e3d6000fd5b50620030db565b60025461ffff1661ffff16886060015161ffff1614620030ce576040516340c10f1960e01b81526001600160a01b038881166004830152602482018390528716906340c10f1990604401600060405180830381600087803b158015620030af57600080fd5b505af1158015620030c4573d6000803e3d6000fd5b50505050620030db565b620030db86888362003d3f565b50505060e0909701519a9950505050505050505050565b6000620031267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050620031338262003d71565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b179052905160009182916001600160a01b03861691620031789162004b28565b600060405180830381855af49150503d8060008114620031b5576040519150601f19603f3d011682016040523d82523d6000602084013e620031ba565b606091505b5091509150818190620031e25760405162461bcd60e51b815260040162000ae9919062004c0b565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b60006200323882602062004ef2565b835110156200203c5760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b604482015260640162000ae9565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080546001600160a01b03166001600160a01b0316631a90a2196040518163ffffffff1660e01b815260040160206040518083038186803b158015620032f357600080fd5b505afa15801562003308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332e91906200458e565b90503481106200338c5760405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b606482015260840162000ae9565b60006200339a823462005058565b905080841115620034035760405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b606482015260840162000ae9565b60006200341282601262003b03565b905060006200342386601262003b03565b905060006200343483601262003b42565b62003440908562005058565b905080156200347957604051339082156108fc029083906000818181858888f1935050505015801562003477573d6000803e3d6000fd5b505b6004546001600160a01b031663d0e30db062003496838762005058565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015620034c257600080fd5b505af1158015620034d7573d6000803e3d6000fd5b5050505050620034fa620034f36004546001600160a01b031690565b8462003bea565b6040518060a001604052806200351360025461ffff1690565b61ffff1681526020016200352f6004546001600160a01b031690565b6001600160a01b031660001b81526020018481526020018381526020018681525095505050505050919050565b6040805161010081018252600381526020810188905290810188905261ffff808a16606083015260808201869052861660a08201523360c082015260e08101829052600090620035b46000546001600160a01b031690565b6001600160a01b031663b19a437e86866200265885620019cd565b6000620035db62001a10565b15620036195760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b604482015260640162000ae9565b50608081015160609091015161ffff166000908152600b60205260409020541490565b60006200364c60025461ffff1690565b61ffff16836040015161ffff161415620036ba5760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f726569676044820152676e20636861696e7360c01b606482015260840162000ae9565b60006001600160a01b0316620036d98460400151856020015162000f60565b6001600160a01b031614620037315760405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c72656164792065786973747300000000604482015260640162000ae9565b600063c71f461560e01b6200374a8560a0015162003db3565b62003759866080015162003db3565b8660600151863089604001518a6020015160405160240162003782979695949392919062004c63565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b03199095169490941790935251909250600091620037cc91309185910162004be5565b6040516020818303038152906040529050600060405180602001620037f190620041f7565b601f1982820381018352601f909101166040819052620038179190849060200162004b46565b60405160208183030381529060405290506000866040015187602001516040516020016200385e92919060f09290921b6001600160f01b0319168252600282015260220190565b604051602081830303815290604052805190602001209050808251602084016000f59450843b6200388e57600080fd5b6040808801516020808a015161ffff90921660009081526008825283812092815291815282822080546001600160a01b0319166001600160a01b038a1690811790915582526009905220805460ff191660011790555050505092915050565b606081620038fd81601f62004ef2565b10156200393e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640162000ae9565b6200394a828462004ef2565b84511015620039905760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640162000ae9565b606082158015620039b15760405191506000825260208201604052620039fd565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015620039ec578051835260209283019201620039d2565b5050858452601f01601f1916604052505b5090505b9392505050565b60008062003a1f8460400151856020015162000f60565b90506001600160a01b03811662003a795760405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f7420657869737473000000604482015260640162000ae9565b806001600160a01b031663a18cd7c662003a978660a0015162003db3565b62003aa6876080015162003db3565b866040518463ffffffff1660e01b815260040162003ac79392919062004c20565b600060405180830381600087803b15801562003ae257600080fd5b505af115801562003af7573d6000803e3d6000fd5b50929695505050505050565b600060088260ff16111562003b3b5762003b1f60088362005072565b62003b2c90600a62004f77565b62003b38908462004f0d565b92505b5090919050565b600060088260ff16111562003b3b5762003b5e60088362005072565b62003b6b90600a62004f77565b62003b38908462005036565b6040516001600160a01b038085166024830152831660448201526064810182905262003be49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262003eee565b50505050565b6001600160a01b0382166000908152600a60205260409020546001600160401b0362003c17838362004ef2565b111562003c855760405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527408189c9a5919d959081d1bdad95b88185b5bdd5b9d605a1b606482015260840162000ae9565b62003cb28362003c96848462004ef2565b6001600160a01b039091166000908152600a6020526040902055565b505050565b60006001600160a01b031982161562003d095760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642045564d206164647265737360681b604482015260640162000ae9565b5090565b620018ca828262003d33856001600160a01b03166000908152600a602052604090205490565b62003c96919062005058565b6040516001600160a01b03831660248201526044810182905262003cb290849063a9059cbb60e01b9060640162003bac565b62003d7c8162003fc7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606060005b60208110801562003df6575082816020811062003de557634e487b7160e01b600052603260045260246000fd5b1a60f81b6001600160f81b03191615155b1562003e11578062003e0881620050c7565b91505062003db8565b6000816001600160401b0381111562003e3a57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801562003e65576020820181803683370190505b50905060005b8281101562003ee65784816020811062003e9557634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811062003eba57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053508062003edd81620050c7565b91505062003e6b565b509392505050565b600062003f45826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200406e9092919063ffffffff16565b80519091501562003cb2578080602001905181019062003f66919062004558565b62003cb25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000ae9565b803b6200402d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000ae9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606200407f848460008562004087565b949350505050565b606082471015620040ea5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000ae9565b843b6200413a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000ae9565b600080866001600160a01b0316858760405162004158919062004b28565b60006040518083038185875af1925050503d806000811462004197576040519150601f19603f3d011682016040523d82523d6000602084013e6200419c565b606091505b5091509150620041ae828286620041b9565b979650505050505050565b60608315620041ca57508162003a01565b825115620041db5782518084602001fd5b8160405162461bcd60e51b815260040162000ae9919062004c0b565b610993806200514983390190565b80356001600160a01b03811681146200421d57600080fd5b919050565b600082601f83011262004233578081fd5b815160206001600160401b03821115620042515762004251620050fb565b62004261818360051b0162004e95565b80838252828201915082860187848660071b890101111562004281578586fd5b855b85811015620042f157608080838b0312156200429d578788fd5b620042a762004e1e565b835181528684015187820152604080850151620042c48162005138565b90820152606084810151620042d98162005138565b90820152855293850193919091019060010162004283565b5090979650505050505050565b805180151581146200421d57600080fd5b600082601f83011262004320578081fd5b813562004337620043318262004ec8565b62004e95565b8181528460208386010111156200434c578283fd5b816020850160208301379081016020019190915292915050565b600082601f83011262004377578081fd5b815162004388620043318262004ec8565b8181528460208386010111156200439d578283fd5b6200407f82602083016020870162005098565b80356200421d8162005111565b80516200421d8162005111565b80516200421d8162005125565b80516001600160401b03811681146200421d57600080fd5b80356200421d8162005138565b80516200421d8162005138565b6000602082840312156200441b578081fd5b62003a018262004205565b60008060008060008060c087890312156200443f578182fd5b6200444a8762004205565b9550602087013594506040870135620044638162005111565b9350606087013592506080870135915060a0870135620044838162005125565b809150509295509295509295565b60008060008060008060c08789031215620044aa578384fd5b620044b58762004205565b9550602087013594506040870135620044ce8162005111565b9350606087013592506080870135620044e78162005125565b915060a08701356001600160401b0381111562004502578182fd5b6200451089828a016200430f565b9150509295509295509295565b6000806040838503121562004530578182fd5b6200453b8362004205565b915060208301356200454d8162005125565b809150509250929050565b6000602082840312156200456a578081fd5b62003a0182620042fe565b60006020828403121562004587578081fd5b5035919050565b600060208284031215620045a0578081fd5b5051919050565b600060208284031215620045b9578081fd5b81356001600160401b03811115620045cf578182fd5b6200407f848285016200430f565b600060208284031215620045ef578081fd5b81516001600160401b0381111562004605578182fd5b6200407f8482850162004366565b600060c0828403121562004625578081fd5b60405160c081018181106001600160401b03821117156200464a576200464a620050fb565b60405282356200465a8162005138565b8152602083810135908201526040830135620046768162005111565b604082015260608301356200468b8162005138565b60608201526080838101359082015260a0928301359281019290925250919050565b600060208284031215620046bf578081fd5b81356001600160401b0380821115620046d6578283fd5b908301906101008286031215620046eb578283fd5b620046f562004e49565b6200470083620043ef565b815260208301356020820152604083013560408201526200472460608401620043b0565b6060820152608083013560808201526200474160a08401620043b0565b60a082015260c083013560c082015260e08301358281111562004762578485fd5b62004770878286016200430f565b60e08301525095945050505050565b600060e0828403121562004791578081fd5b60405160e081018181106001600160401b0382111715620047b657620047b6620050fb565b6040528235620047c68162005138565b8082525060208301356020820152604083013560408201526060830135620047ee8162005111565b6060820152608083810135908201526200480b60a08401620043b0565b60a082015260c083013560c08201528091505092915050565b60008060006060848603121562004839578081fd5b83516001600160401b038082111562004850578283fd5b90850190610160828803121562004865578283fd5b6200486f62004e6f565b6200487a83620043fc565b81526200488a60208401620043ca565b60208201526200489d60408401620043ca565b6040820152620048b060608401620043bd565b606082015260808301516080820152620048cd60a08401620043d7565b60a0820152620048e060c08401620043fc565b60c082015260e083015182811115620048f7578485fd5b620049058982860162004366565b60e0830152506101006200491b818501620043ca565b90820152610120838101518381111562004933578586fd5b620049418a82870162004222565b9183019190915250610140838101519082015294506200496460208701620042fe565b935060408601519150808211156200497a578283fd5b50620049898682870162004366565b9150509250925092565b600060208284031215620049a5578081fd5b813562003a018162005111565b600060208284031215620049c4578081fd5b815162003a018162005111565b60008060408385031215620049e4578182fd5b8235620049f18162005111565b946020939093013593505050565b6000806000806080858703121562004a15578182fd5b843562004a228162005111565b93506020850135925060408501359150606085013562004a428162005125565b939692955090935050565b6000806000806080858703121562004a63578182fd5b843562004a708162005111565b935060208501359250604085013562004a898162005125565b915060608501356001600160401b0381111562004aa4578182fd5b62004ab2878288016200430f565b91505092959194509250565b60006020828403121562004ad0578081fd5b62003a0182620043d7565b60006020828403121562004aed578081fd5b815162003a018162005138565b6000815180845262004b1481602086016020860162005098565b601f01601f19169290920160200192915050565b6000825162004b3c81846020870162005098565b9190910192915050565b6000835162004b5a81846020880162005098565b83519083019062004b7081836020880162005098565b01949350505050565b60ff60f81b8960f81b168152876001820152866021820152600061ffff60f01b808860f01b166041840152866043840152808660f01b16606384015250836065830152825162004bd181608585016020870162005098565b919091016085019998505050505050505050565b6001600160a01b03831681526040602082018190526000906200407f9083018462004afa565b60208152600062003a01602083018462004afa565b60608152600062004c35606083018662004afa565b828103602084015262004c49818662004afa565b9150506001600160401b0383166040830152949350505050565b60e08152600062004c7860e083018a62004afa565b828103602084015262004c8c818a62004afa565b60ff98909816604084015250506001600160401b039490941660608501526001600160a01b0392909216608084015261ffff1660a083015260c09091015292915050565b6020808252600f908201526e34b73b30b634b21032b6b4ba3a32b960891b604082015260600190565b60208082526010908201526f34b73b30b634b2102a3930b739b332b960811b604082015260600190565b6020808252600c908201526b77726f6e67206d6f64756c6560a01b604082015260600190565b6020808252600c908201526b3bb937b7339030b1ba34b7b760a11b604082015260600190565b6020815260ff8251166020820152602082015160408201526040820151606082015261ffff6060830151166080820152608082015160a0820152600060a083015162004dc160c084018261ffff169052565b5060c083015160e083015260e08301516101008081850152506200407f61012084018262004afa565b63ffffffff8416815260606020820152600062004e0b606083018562004afa565b905060ff83166040830152949350505050565b604051608081016001600160401b038111828210171562004e435762004e43620050fb565b60405290565b60405161010081016001600160401b038111828210171562004e435762004e43620050fb565b60405161016081016001600160401b038111828210171562004e435762004e43620050fb565b604051601f8201601f191681016001600160401b038111828210171562004ec05762004ec0620050fb565b604052919050565b60006001600160401b0382111562004ee45762004ee4620050fb565b50601f01601f191660200190565b6000821982111562004f085762004f08620050e5565b500190565b60008262004f2957634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111562004f6f57816000190482111562004f535762004f53620050e5565b8085161562004f6157918102915b93841c939080029062004f33565b509250929050565b600062003a0160ff84168360008262004f935750600162000d8b565b8162004fa25750600062000d8b565b816001811462004fbb576002811462004fc65762004fe6565b600191505062000d8b565b60ff84111562004fda5762004fda620050e5565b50506001821b62000d8b565b5060208310610133831016604e8410600b84101617156200500b575081810a62000d8b565b62005017838362004f2e565b80600019048211156200502e576200502e620050e5565b029392505050565b6000816000190483118215151615620050535762005053620050e5565b500290565b6000828210156200506d576200506d620050e5565b500390565b600060ff821660ff8416808210156200508f576200508f620050e5565b90039392505050565b60005b83811015620050b55781810151838201526020016200509b565b8381111562003be45750506000910152565b6000600019821415620050de57620050de620050e5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff811681146200512257600080fd5b50565b63ffffffff811681146200512257600080fd5b60ff811681146200512257600080fdfe608060405234801561001057600080fd5b5060405161099338038061099383398101604081905261002f9161048e565b818161005c60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51610599565b60008051602061094c8339815191521461008657634e487b7160e01b600052600160045260246000fd5b6100928282600061009b565b505050506105fe565b6100a483610175565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100e55750805b156101705761016e836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610474565b8361031560201b6100291760201c565b505b505050565b6101888161034160201b6100551760201c565b6101e75760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b61026a816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022357600080fd5b505afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610474565b61034160201b6100551760201c565b6102cf5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101de565b806102f460008051602061094c83398151915260001b61034760201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061033a838360405180606001604052806027815260200161096c6027913961034a565b9392505050565b3b151590565b90565b6060833b6103a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101de565b600080856001600160a01b0316856040516103c4919061054a565b600060405180830381855af49150503d80600081146103ff576040519150601f19603f3d011682016040523d82523d6000602084013e610404565b606091505b50909250905061041582828661041f565b9695505050505050565b6060831561042e57508161033a565b82511561043e5782518084602001fd5b8160405162461bcd60e51b81526004016101de9190610566565b80516001600160a01b038116811461046f57600080fd5b919050565b600060208284031215610485578081fd5b61033a82610458565b600080604083850312156104a0578081fd5b6104a983610458565b60208401519092506001600160401b03808211156104c5578283fd5b818501915085601f8301126104d8578283fd5b8151818111156104ea576104ea6105e8565b604051601f8201601f19908116603f01168101908382118183101715610512576105126105e8565b8160405282815288602084870101111561052a578586fd5b61053b8360208301602088016105bc565b80955050505050509250929050565b6000825161055c8184602087016105bc565b9190910192915050565b60208152600082518060208401526105858160408501602087016105bc565b601f01601f19169190910160400192915050565b6000828210156105b757634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156105d75781810151838201526020016105bf565b8381111561016e5750506000910152565b634e487b7160e01b600052604160045260246000fd5b61033f8061060d6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e36027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610263565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b8152600401610185919061027f565b60006020828403121561024d578081fd5b81516001600160a01b038116811461004e578182fd5b600082516102758184602087016102b2565b9190910192915050565b602081526000825180602084015261029e8160408501602087016102b2565b601f01601f19169190910160400192915050565b60005b838110156102cd5781810151838201526020016102b5565b838111156102dc576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d56a904d619117febd2e828ccee3a08b373204a8b4c038f74a1f3b566e03a78c64736f6c63430008040033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a264697066735822122071cce3e23781b4474a1036e67549843c677e0ddc89f5062c0bf4749e6949a9c364736f6c63430008040033",
"deployedBytecode": "0x6080604052600436106200027b5760003560e01c8063ad5c46481162000153578063cb4cfea811620000c5578063e89bc4011162000084578063e89bc401146200094e578063ea63738d1462000973578063f768441f14620009a7578063fbe3c2cd14620009cc578063fbeeacd914620009ed578063ff200cde1462000a4d57600080fd5b8063cb4cfea8146200084f578063d56e2e2414620008af578063d60b347f14620008d4578063e039f2241462000911578063e8059810146200092957600080fd5b8063bee9cdfc1162000112578063bee9cdfc14620007c0578063c3f511c114620007d7578063c48fa11514620007fc578063c5a5ebda1462000813578063c6878519146200082a57600080fd5b8063ad5c464814620006f5578063ad66a5f11462000715578063b046223b146200074a578063b172b222146200076f578063b96c7e4d146200078657600080fd5b80632c3c02a411620001ed57806384acd1bb11620001ac57806384acd1bb146200063b5780639981509f146200065b5780639a8a05921462000672578063a5799f93146200069c578063aa4efa5b14620006c157600080fd5b80632c3c02a4146200057f5780632f3a3d5d14620005b35780635f85426614620005d357806364d42b1714620005f8578063739fc8d1146200061957600080fd5b80631a2be4da116200023a5780631a2be4da14620004115780631c8475e4146200045f5780631ff1e28614620004935780632539464514620004d15780632b51137514620004f657600080fd5b806301f53255146200028857806307dfd8fb14620003065780630f50900814620003825780630f5287b014620003ba578063178149e714620003ea57600080fd5b366200028357005b600080fd5b3480156200029557600080fd5b50620002ad620002a7366004620045a7565b62000a72565b604051620002fd9190600060a0820190508251825260ff6020840151166020830152604083015161ffff808216604085015280606086015116606085015250506080830151608083015292915050565b60405180910390f35b3480156200031357600080fd5b506200032b62000325366004620045a7565b62000bee565b604051620002fd9190600060c08201905060ff83511682526020830151602083015261ffff604084015116604083015260ff60608401511660608301526080830151608083015260a083015160a083015292915050565b3480156200038f57600080fd5b50620003a7620003a1366004620045a7565b62000d7d565b60405160ff9091168152602001620002fd565b620003d1620003cb36600462004426565b62000d91565b6040516001600160401b039091168152602001620002fd565b348015620003f757600080fd5b506200040f62000409366004620045a7565b62000e35565b005b3480156200041e57600080fd5b506200044e6200043036600462004409565b6001600160a01b031660009081526009602052604090205460ff1690565b6040519015158152602001620002fd565b3480156200046c57600080fd5b50620004846200047e366004620045a7565b62000f51565b604051620002fd919062004c0b565b348015620004a057600080fd5b50620004b8620004b2366004620049d1565b62000f60565b6040516001600160a01b039091168152602001620002fd565b348015620004de57600080fd5b506200040f620004f0366004620045a7565b62000f8c565b3480156200050357600080fd5b506200051b62000515366004620045a7565b6200109c565b604051620002fd9190600060e08201905060ff83511682526020830151602083015260408301516040830152606083015161ffff8082166060850152608085015160808501528060a08601511660a0850152505060c083015160c083015292915050565b3480156200058c57600080fd5b506200044e6200059e36600462004575565b60009081526005602052604090205460ff1690565b348015620005c057600080fd5b506001546001600160a01b0316620004b8565b348015620005e057600080fd5b5062000484620005f23660046200477f565b6200120d565b3480156200060557600080fd5b50600c545b604051908152602001620002fd565b3480156200062657600080fd5b50600254640100000000900460ff16620003a7565b3480156200064857600080fd5b506000546001600160a01b0316620004b8565b620003d16200066c366004620049ff565b620012a2565b3480156200067f57600080fd5b5060025461ffff165b60405161ffff9091168152602001620002fd565b348015620006a957600080fd5b506200040f620006bb366004620045a7565b620012e2565b348015620006ce57600080fd5b506200044e620006e036600462004575565b60009081526006602052604090205460ff1690565b3480156200070257600080fd5b506004546001600160a01b0316620004b8565b3480156200072257600080fd5b506200060a6200073436600462004993565b61ffff166000908152600b602052604090205490565b3480156200075757600080fd5b50620004846200076936600462004613565b6200144e565b3480156200077c57600080fd5b506003546200060a565b3480156200079357600080fd5b506200060a620007a536600462004409565b6001600160a01b03166000908152600a602052604090205490565b620003d1620007d136600462004a4d565b620014c7565b348015620007e457600080fd5b5062000484620007f6366004620045a7565b620014fa565b620003d16200080d3660046200451d565b62001509565b620003d16200082436600462004491565b6200182e565b3480156200083757600080fd5b506200040f62000849366004620045a7565b620018bd565b3480156200085c57600080fd5b50620008746200086e366004620045a7565b620018ce565b604051620002fd91908151815260208083015160ff16908201526040808301519082015260609182015161ffff169181019190915260800190565b348015620008bc57600080fd5b5062000484620008ce366004620046ad565b620019cd565b348015620008e157600080fd5b506200044e620008f336600462004409565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200091e57600080fd5b506200044e62001a10565b3480156200093657600080fd5b50620004b862000948366004620045a7565b62001a24565b3480156200095b57600080fd5b506200051b6200096d366004620045a7565b62001b39565b3480156200098057600080fd5b506200099862000992366004620045a7565b62001c45565b604051620002fd919062004d6f565b348015620009b457600080fd5b50620004b8620009c6366004620045a7565b62001dc2565b348015620009d957600080fd5b5060025462010000900461ffff1662000688565b348015620009fa57600080fd5b5062000a1262000a0c366004620045a7565b62001ed7565b604051620002fd91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b34801562000a5a57600080fd5b506200040f62000a6c366004620045a7565b62001fd6565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290529062000aa9838262001fe3565b825262000ab860208262004ef2565b82519091506a546f6b656e4272696467651462000af25760405162461bcd60e51b815260040162000ae99062004d23565b60405180910390fd5b62000afe838262002045565b60ff16602083015262000b1360018262004ef2565b9050816020015160ff1660011462000b3f5760405162461bcd60e51b815260040162000ae99062004d49565b62000b4b8382620020a5565b61ffff16604083015262000b6160028262004ef2565b905062000b6f8382620020a5565b61ffff16606083015262000b8560028262004ef2565b905062000b93838262001fe3565b608083015262000ba560208262004ef2565b90508083511462000be85760405162461bcd60e51b815260206004820152600c60248201526b0eee4dedcce40d8cadccee8d60a31b604482015260640162000ae9565b50919050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529062000c2c838262002045565b60ff16825262000c3e60018262004ef2565b9050816000015160ff1660021462000c8d5760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b604482015260640162000ae9565b62000c99838262001fe3565b60208084019190915262000cae908262004ef2565b905062000cbc8382620020a5565b61ffff16604083015262000cd260028262004ef2565b905062000ce0838262002045565b60ff16606083015262000cf560018262004ef2565b905062000d03838262001fe3565b608083015262000d1560208262004ef2565b905062000d23838262001fe3565b60a083015262000d3560208262004ef2565b90508083511462000be85760405162461bcd60e51b8152602060048201526011602482015270696e76616c69642041737365744d65746160781b604482015260640162000ae9565b600062000d8b828262002045565b92915050565b60006002600d54141562000de85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000ae9565b6002600d55600062000dfc88888662002106565b905062000e248160000151826020015183604001518989866060015187608001518a620025b6565b6001600d5598975050505050505050565b62000e3f62001a10565b62000e7a5760405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b604482015260640162000ae9565b600080600062000e8a84620026ea565b92509250925081819062000eb35760405162461bcd60e51b815260040162000ae9919062004c0b565b5062000ec483610140015162002919565b600062000ed58460e00151620018ce565b90504681604001511462000f205760405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b604482015260640162000ae9565b62000f2f816040015162002934565b60608101516002805461ffff191661ffff9092169190911790555b5050505050565b606062000d8b8260016200297f565b61ffff91909116600090815260086020908152604080832093835292905220546001600160a01b031690565b62000f9662001a10565b1562000fd45760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b604482015260640162000ae9565b600080600062000fe484620026ea565b9250925092508181906200100d5760405162461bcd60e51b815260040162000ae9919062004c0b565b506200101e83610140015162002919565b60006200102f8460e0015162001ed7565b90506200103f60025461ffff1690565b61ffff16816040015161ffff16146200108c5760405162461bcd60e51b815260206004820152600e60248201526d1ddc9bdb99c818da185a5b881a5960921b604482015260640162000ae9565b606081015162000f4a90620030f2565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905290620010e1838262002045565b60ff168252620010f360018262004ef2565b9050816000015160ff166001146200111f5760405162461bcd60e51b815260040162000ae99062004cf9565b6200112b838262003229565b60208084019190915262001140908262004ef2565b90506200114e838262001fe3565b60408301526200116060208262004ef2565b90506200116e8382620020a5565b61ffff1660608301526200118460028262004ef2565b905062001192838262001fe3565b6080830152620011a460208262004ef2565b9050620011b28382620020a5565b61ffff1660a0830152620011c860028262004ef2565b9050620011d6838262003229565b60c0830152620011e860208262004ef2565b90508083511462000be85760405162461bcd60e51b815260040162000ae99062004cf9565b8051602080830151604080850151606080870151608088015160a089015160c08a0151955160f89990991b6001600160f81b031916978901979097526021880195909552604187019290925260f091821b6001600160f01b03199081166061880152606387019490945293901b909116608384015260858301529060a5015b6040516020818303038152906040529050919050565b600080620012b08462003282565b9050620012d88160000151826020015183604001518989866060015187608001518a620025b6565b9695505050505050565b6000806000620012f284620026ea565b9250925092508181906200131b5760405162461bcd60e51b815260040162000ae9919062004c0b565b506200132c83610140015162002919565b60006200133d8460e0015162000a72565b90506200134d60025461ffff1690565b61ffff16816040015161ffff161480156200136f57506200136d62001a10565b155b80620013815750604081015161ffff16155b620013c25760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b604482015260640162000ae9565b606081015161ffff166000908152600b602052604081205414620014295760405162461bcd60e51b815260206004820152601860248201527f636861696e20616c726561647920726567697374657265640000000000000000604482015260640162000ae9565b62000f4a8160600151826080015161ffff9091166000908152600b6020526040902055565b8051602080830151604080850151606080870151608088015160a0890151945160f898891b6001600160f81b031990811698820198909852602181019690965260f09390931b6001600160f01b031916604186015290951b9093166043830152604482019290925260648101919091526084016200128c565b600080620014d6600062003282565b9050620012d8816000015182602001518360400151898986608001518a8a6200355c565b606062000d8b8260006200297f565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b038616916200154e9162004b28565b600060405180830381855afa9150503d80600081146200158b576040519150601f19603f3d011682016040523d82523d6000602084013e62001590565b606091505b5060408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b1790529051919350600092506001600160a01b03871691620015d9919062004b28565b600060405180830381855afa9150503d806000811462001616576040519150601f19603f3d011682016040523d82523d6000602084013e6200161b565b606091505b5060408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b1790529051919350600092506001600160a01b0388169162001664919062004b28565b600060405180830381855afa9150503d8060008114620016a1576040519150601f19603f3d011682016040523d82523d6000602084013e620016a6565b606091505b50915050600083806020019051810190620016c2919062004adb565b9050600083806020019051810190620016dc9190620045dd565b9050600083806020019051810190620016f69190620045dd565b9050600080602084015191506020830151905060006040518060c00160405280600260ff1681526020018d6001600160a01b031660001b81526020016200174060025461ffff1690565b61ffff1681526020018760ff16815260200184815260200183815250905060006200176b826200144e565b9050620017806000546001600160a01b031690565b6001600160a01b031663b19a437e348e84620017a760025460ff6401000000009091041690565b6040518563ffffffff1660e01b8152600401620017c79392919062004dea565b6020604051808303818588803b158015620017e157600080fd5b505af1158015620017f6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906200181d919062004abe565b9d9c50505050505050505050505050565b60006002600d541415620018855760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000ae9565b6002600d5560006200189988888362002106565b905062000e24816000015182602001518360400151898986608001518a8a6200355c565b620018ca8160006200297f565b5050565b604080516080810182526000808252602082018190529181018290526060810182905290620018fe838262001fe3565b82526200190d60208262004ef2565b82519091506a546f6b656e427269646765146200193e5760405162461bcd60e51b815260040162000ae99062004d23565b6200194a838262002045565b60ff1660208301526200195f60018262004ef2565b9050816020015160ff166003146200198b5760405162461bcd60e51b815260040162000ae99062004d49565b62001997838262003229565b6040830152620019a960208262004ef2565b9050620019b78382620020a5565b61ffff16606083015262000ba560028262004ef2565b6060816000015182602001518360400151846060015185608001518660a001518760c001518860e001516040516020016200128c98979695949392919062004b79565b60004662001a1d600c5490565b1415905090565b60008060008062001a3d6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001a6a919062004c0b565b60006040518083038186803b15801562001a8357600080fd5b505afa15801562001a98573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ac2919081019062004824565b92509250925081819062001aeb5760405162461bcd60e51b815260040162000ae9919062004c0b565b5062001af783620035cf565b62001b165760405162461bcd60e51b815260040162000ae99062004cd0565b600062001b278460e0015162000bee565b9050620012d8818560a001516200363c565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529062001b7d8362000d7d565b90508060ff166001141562001b9f5762001b97836200109c565b915062000be8565b8060ff166003141562001c0757600062001bb98462001c45565b60038452602080820151908501526040808201519085015260608082015161ffff908116918601919091526080808301519086015260a091820151169084015250600060c083015262000be8565b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c185e5b1bd859081a5960721b604482015260640162000ae9565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201529062001c91838262002045565b60ff16825262001ca360018262004ef2565b9050816000015160ff1660031462001ccf5760405162461bcd60e51b815260040162000ae99062004cf9565b62001cdb838262003229565b60208084019190915262001cf0908262004ef2565b905062001cfe838262001fe3565b604083015262001d1060208262004ef2565b905062001d1e8382620020a5565b61ffff16606083015262001d3460028262004ef2565b905062001d42838262001fe3565b608083015262001d5460208262004ef2565b905062001d628382620020a5565b61ffff1660a083015262001d7860028262004ef2565b905062001d86838262001fe3565b60c083015262001d9860208262004ef2565b905062001db78182855162001dae919062005058565b859190620038ed565b60e083015250919050565b60008060008062001ddb6000546001600160a01b031690565b6001600160a01b031663c0fd8bde866040518263ffffffff1660e01b815260040162001e08919062004c0b565b60006040518083038186803b15801562001e2157600080fd5b505afa15801562001e36573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e60919081019062004824565b92509250925081819062001e895760405162461bcd60e51b815260040162000ae9919062004c0b565b5062001e9583620035cf565b62001eb45760405162461bcd60e51b815260040162000ae99062004cd0565b600062001ec58460e0015162000bee565b9050620012d8818560a0015162003a08565b60408051608081018252600080825260208201819052918101829052606081018290529062001f07838262001fe3565b825262001f1660208262004ef2565b82519091506a546f6b656e4272696467651462001f475760405162461bcd60e51b815260040162000ae99062004d23565b62001f53838262002045565b60ff16602083015262001f6860018262004ef2565b9050816020015160ff1660021462001f945760405162461bcd60e51b815260040162000ae99062004d49565b62001fa08382620020a5565b61ffff16604083015262001fb660028262004ef2565b905062001fc4838262001fe3565b606083015262000ba560208262004ef2565b620018ca8160016200297f565b600062001ff282602062004ef2565b835110156200203c5760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b604482015260640162000ae9565b50016020015190565b60006200205482600162004ef2565b835110156200209c5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b604482015260640162000ae9565b50016001015190565b6000620020b482600262004ef2565b83511015620020fd5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015260640162000ae9565b50016002015190565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526001600160a01b038416600090815260096020526040812054819060ff16156200224957856001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b1580156200218f57600080fd5b505afa158015620021a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620021ca9190620049b2565b9150856001600160a01b0316633d6c043b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200220657600080fd5b505afa1580156200221b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200224191906200458e565b90506200225d565b505060025461ffff166001600160a01b0385165b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b03891691620022a1919062004b28565b600060405180830381855afa9150503d8060008114620022de576040519150601f19603f3d011682016040523d82523d6000602084013e620022e3565b606091505b50915050600081806020019051810190620022ff919062004adb565b90506200231862002311888362003b03565b8262003b42565b96506200232860025461ffff1690565b61ffff168461ffff161415620024c857604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17905290516000916001600160a01b038b16916200238d919062004b28565b600060405180830381855afa9150503d8060008114620023ca576040519150601f19603f3d011682016040523d82523d6000602084013e620023cf565b606091505b50915050600081806020019051810190620023eb91906200458e565b9050620023fb8a33308c62003b77565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17905290516000916001600160a01b038d169162002450919062004b28565b600060405180830381855afa9150503d80600081146200248d576040519150601f19603f3d011682016040523d82523d6000602084013e62002492565b606091505b50915050600081806020019051810190620024ae91906200458e565b9050620024bc838262005058565b9a505050505062002539565b620024d68833308a62003b77565b604051632770a7eb60e21b8152306004820152602481018890526001600160a01b03891690639dc29fac90604401600060405180830381600087803b1580156200251f57600080fd5b505af115801562002534573d6000803e3d6000fd5b505050505b600062002547888362003b03565b9050600062002557888462003b03565b90506200256760025461ffff1690565b61ffff168661ffff1614156200258357620025838a8362003bea565b6040805160a08101825261ffff909716875260208701959095529385015250506060820152346080820152949350505050565b600086841115620025ff5760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b604482015260640162000ae9565b6040805160e081018252600181526020810189905290810189905261ffff8a8116606083015260808201879052871660a082015260c081018590526000546001600160a01b031663b19a437e858562002658856200120d565b600254640100000000900460ff166040518563ffffffff1660e01b8152600401620026869392919062004dea565b6020604051808303818588803b158015620026a057600080fd5b505af1158015620026b5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190620026dc919062004abe565b9a9950505050505050505050565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820181905261010082018390526101208201526101408101919091526000606060008060006200275e6000546001600160a01b031690565b6001600160a01b031663c0fd8bde886040518263ffffffff1660e01b81526004016200278b919062004c0b565b60006040518083038186803b158015620027a457600080fd5b505afa158015620027b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620027e3919081019062004824565b92509250925081620027fc579194509250905062002912565b60025462010000900461ffff1661ffff16836060015161ffff16146200285a5750506040805180820190915260168152753bb937b7339033b7bb32b93730b731b29031b430b4b760511b602082015290935060009250905062002912565b600354836080015114620028ad57505060408051808201909152601981527f77726f6e6720676f7665726e616e636520636f6e747261637400000000000000602082015290935060009250905062002912565b61014083015160009081526005602052604090205460ff1615620028f75782600060405180606001604052806022815260200162005adc6022913995509550955050505062002912565b50506040805160208101909152600081529093506001925090505b9193909250565b6000908152600560205260409020805460ff19166001179055565b4681146200297a5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b604482015260640162000ae9565b600c55565b60606000806000620029996000546001600160a01b031690565b6001600160a01b031663c0fd8bde876040518263ffffffff1660e01b8152600401620029c6919062004c0b565b60006040518083038186803b158015620029df57600080fd5b505afa158015620029f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002a1e919081019062004824565b92509250925081819062002a475760405162461bcd60e51b815260040162000ae9919062004c0b565b5062002a5383620035cf565b62002a725760405162461bcd60e51b815260040162000ae99062004cd0565b600062002a838460e0015162001b39565b9050600062002a96826080015162003cb7565b9050816000015160ff166003141562002af457336001600160a01b0382161462002af45760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b21039b2b73232b960911b604482015260640162000ae9565b61014085015160009081526006602052604090205460ff161562002b5b5760405162461bcd60e51b815260206004820152601a60248201527f7472616e7366657220616c726561647920636f6d706c65746564000000000000604482015260640162000ae9565b62002b808561014001516000908152600660205260409020805460ff19166001179055565b60025461ffff1661ffff168260a0015161ffff161462002bda5760405162461bcd60e51b815260206004820152601460248201527334b73b30b634b2103a30b933b2ba1031b430b4b760611b604482015260640162000ae9565b600062002bea60025461ffff1690565b61ffff16836060015161ffff16141562002c255762002c0d836040015162003cb7565b905062002c1f81846020015162003d0d565b62002ca6565b600062002c3b8460600151856040015162000f60565b90506001600160a01b03811662002ca35760405162461bcd60e51b815260206004820152602560248201527f6e6f207772617070657220666f72207468697320746f6b656e2063726561746560448201526419081e595d60da1b606482015260840162000ae9565b90505b87158062002cc157506004546001600160a01b038281169116145b62002d1b5760405162461bcd60e51b815260206004820152602360248201527f696e76616c696420746f6b656e2c2063616e206f6e6c7920756e77726170205760448201526208aa8960eb1b606482015260840162000ae9565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000916001600160a01b0384169162002d5f919062004b28565b600060405180830381855afa9150503d806000811462002d9c576040519150601f19603f3d011682016040523d82523d6000602084013e62002da1565b606091505b5091505060008180602001905181019062002dbd919062004adb565b9050600062002dd186602001518362003b42565b9050600062002de58760c001518462003b42565b905060008111801562002e0157506001600160a01b0386163314155b1562002f93578181111562002e645760405162461bcd60e51b815260206004820152602260248201527f66656520686967686572207468616e207472616e7366657272656420616d6f756044820152611b9d60f21b606482015260840162000ae9565b8b1562002efe5760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002eb057600080fd5b505af115801562002ec5573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f1935050505015801562002ef7573d6000803e3d6000fd5b5062002f97565b60025461ffff1661ffff16876060015161ffff161462002f80576040516340c10f1960e01b8152336004820152602481018290526001600160a01b038616906340c10f1990604401600060405180830381600087803b15801562002f6157600080fd5b505af115801562002f76573d6000803e3d6000fd5b5050505062002f97565b62002f8d85338362003d3f565b62002f97565b5060005b600062002fa5828462005058565b90508c156200304a5760048054604051632e1a7d4d60e01b81529182018390526001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801562002ff357600080fd5b505af115801562003008573d6000803e3d6000fd5b50506040516001600160a01b038a16925083156108fc02915083906000818181858888f1935050505015801562003043573d6000803e3d6000fd5b50620030db565b60025461ffff1661ffff16886060015161ffff1614620030ce576040516340c10f1960e01b81526001600160a01b038881166004830152602482018390528716906340c10f1990604401600060405180830381600087803b158015620030af57600080fd5b505af1158015620030c4573d6000803e3d6000fd5b50505050620030db565b620030db86888362003d3f565b50505060e0909701519a9950505050505050505050565b6000620031267f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050620031338262003d71565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b179052905160009182916001600160a01b03861691620031789162004b28565b600060405180830381855af49150503d8060008114620031b5576040519150601f19603f3d011682016040523d82523d6000602084013e620031ba565b606091505b5091509150818190620031e25760405162461bcd60e51b815260040162000ae9919062004c0b565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b60006200323882602062004ef2565b835110156200203c5760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b604482015260640162000ae9565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080546001600160a01b03166001600160a01b0316631a90a2196040518163ffffffff1660e01b815260040160206040518083038186803b158015620032f357600080fd5b505afa15801562003308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200332e91906200458e565b90503481106200338c5760405162461bcd60e51b815260206004820152602260248201527f76616c756520697320736d616c6c6572207468616e20776f726d686f6c652066604482015261656560f01b606482015260840162000ae9565b60006200339a823462005058565b905080841115620034035760405162461bcd60e51b815260206004820152602c60248201527f66656520697320626967676572207468616e20616d6f756e74206d696e75732060448201526b776f726d686f6c652066656560a01b606482015260840162000ae9565b60006200341282601262003b03565b905060006200342386601262003b03565b905060006200343483601262003b42565b62003440908562005058565b905080156200347957604051339082156108fc029083906000818181858888f1935050505015801562003477573d6000803e3d6000fd5b505b6004546001600160a01b031663d0e30db062003496838762005058565b6040518263ffffffff1660e01b81526004016000604051808303818588803b158015620034c257600080fd5b505af1158015620034d7573d6000803e3d6000fd5b5050505050620034fa620034f36004546001600160a01b031690565b8462003bea565b6040518060a001604052806200351360025461ffff1690565b61ffff1681526020016200352f6004546001600160a01b031690565b6001600160a01b031660001b81526020018481526020018381526020018681525095505050505050919050565b6040805161010081018252600381526020810188905290810188905261ffff808a16606083015260808201869052861660a08201523360c082015260e08101829052600090620035b46000546001600160a01b031690565b6001600160a01b031663b19a437e86866200265885620019cd565b6000620035db62001a10565b15620036195760405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b604482015260640162000ae9565b50608081015160609091015161ffff166000908152600b60205260409020541490565b60006200364c60025461ffff1690565b61ffff16836040015161ffff161415620036ba5760405162461bcd60e51b815260206004820152602860248201527f63616e206f6e6c79207772617020746f6b656e732066726f6d20666f726569676044820152676e20636861696e7360c01b606482015260840162000ae9565b60006001600160a01b0316620036d98460400151856020015162000f60565b6001600160a01b031614620037315760405162461bcd60e51b815260206004820152601c60248201527f7772617070656420617373657420616c72656164792065786973747300000000604482015260640162000ae9565b600063c71f461560e01b6200374a8560a0015162003db3565b62003759866080015162003db3565b8660600151863089604001518a6020015160405160240162003782979695949392919062004c63565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b03199095169490941790935251909250600091620037cc91309185910162004be5565b6040516020818303038152906040529050600060405180602001620037f190620041f7565b601f1982820381018352601f909101166040819052620038179190849060200162004b46565b60405160208183030381529060405290506000866040015187602001516040516020016200385e92919060f09290921b6001600160f01b0319168252600282015260220190565b604051602081830303815290604052805190602001209050808251602084016000f59450843b6200388e57600080fd5b6040808801516020808a015161ffff90921660009081526008825283812092815291815282822080546001600160a01b0319166001600160a01b038a1690811790915582526009905220805460ff191660011790555050505092915050565b606081620038fd81601f62004ef2565b10156200393e5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640162000ae9565b6200394a828462004ef2565b84511015620039905760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640162000ae9565b606082158015620039b15760405191506000825260208201604052620039fd565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015620039ec578051835260209283019201620039d2565b5050858452601f01601f1916604052505b5090505b9392505050565b60008062003a1f8460400151856020015162000f60565b90506001600160a01b03811662003a795760405162461bcd60e51b815260206004820152601d60248201527f7772617070656420617373657420646f6573206e6f7420657869737473000000604482015260640162000ae9565b806001600160a01b031663a18cd7c662003a978660a0015162003db3565b62003aa6876080015162003db3565b866040518463ffffffff1660e01b815260040162003ac79392919062004c20565b600060405180830381600087803b15801562003ae257600080fd5b505af115801562003af7573d6000803e3d6000fd5b50929695505050505050565b600060088260ff16111562003b3b5762003b1f60088362005072565b62003b2c90600a62004f77565b62003b38908462004f0d565b92505b5090919050565b600060088260ff16111562003b3b5762003b5e60088362005072565b62003b6b90600a62004f77565b62003b38908462005036565b6040516001600160a01b038085166024830152831660448201526064810182905262003be49085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262003eee565b50505050565b6001600160a01b0382166000908152600a60205260409020546001600160401b0362003c17838362004ef2565b111562003c855760405162461bcd60e51b815260206004820152603560248201527f7472616e736665722065786365656473206d6178206f75747374616e64696e6760448201527408189c9a5919d959081d1bdad95b88185b5bdd5b9d605a1b606482015260840162000ae9565b62003cb28362003c96848462004ef2565b6001600160a01b039091166000908152600a6020526040902055565b505050565b60006001600160a01b031982161562003d095760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642045564d206164647265737360681b604482015260640162000ae9565b5090565b620018ca828262003d33856001600160a01b03166000908152600a602052604090205490565b62003c96919062005058565b6040516001600160a01b03831660248201526044810182905262003cb290849063a9059cbb60e01b9060640162003bac565b62003d7c8162003fc7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606060005b60208110801562003df6575082816020811062003de557634e487b7160e01b600052603260045260246000fd5b1a60f81b6001600160f81b03191615155b1562003e11578062003e0881620050c7565b91505062003db8565b6000816001600160401b0381111562003e3a57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801562003e65576020820181803683370190505b50905060005b8281101562003ee65784816020811062003e9557634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811062003eba57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053508062003edd81620050c7565b91505062003e6b565b509392505050565b600062003f45826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200406e9092919063ffffffff16565b80519091501562003cb2578080602001905181019062003f66919062004558565b62003cb25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000ae9565b803b6200402d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000ae9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60606200407f848460008562004087565b949350505050565b606082471015620040ea5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000ae9565b843b6200413a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000ae9565b600080866001600160a01b0316858760405162004158919062004b28565b60006040518083038185875af1925050503d806000811462004197576040519150601f19603f3d011682016040523d82523d6000602084013e6200419c565b606091505b5091509150620041ae828286620041b9565b979650505050505050565b60608315620041ca57508162003a01565b825115620041db5782518084602001fd5b8160405162461bcd60e51b815260040162000ae9919062004c0b565b610993806200514983390190565b80356001600160a01b03811681146200421d57600080fd5b919050565b600082601f83011262004233578081fd5b815160206001600160401b03821115620042515762004251620050fb565b62004261818360051b0162004e95565b80838252828201915082860187848660071b890101111562004281578586fd5b855b85811015620042f157608080838b0312156200429d578788fd5b620042a762004e1e565b835181528684015187820152604080850151620042c48162005138565b90820152606084810151620042d98162005138565b90820152855293850193919091019060010162004283565b5090979650505050505050565b805180151581146200421d57600080fd5b600082601f83011262004320578081fd5b813562004337620043318262004ec8565b62004e95565b8181528460208386010111156200434c578283fd5b816020850160208301379081016020019190915292915050565b600082601f83011262004377578081fd5b815162004388620043318262004ec8565b8181528460208386010111156200439d578283fd5b6200407f82602083016020870162005098565b80356200421d8162005111565b80516200421d8162005111565b80516200421d8162005125565b80516001600160401b03811681146200421d57600080fd5b80356200421d8162005138565b80516200421d8162005138565b6000602082840312156200441b578081fd5b62003a018262004205565b60008060008060008060c087890312156200443f578182fd5b6200444a8762004205565b9550602087013594506040870135620044638162005111565b9350606087013592506080870135915060a0870135620044838162005125565b809150509295509295509295565b60008060008060008060c08789031215620044aa578384fd5b620044b58762004205565b9550602087013594506040870135620044ce8162005111565b9350606087013592506080870135620044e78162005125565b915060a08701356001600160401b0381111562004502578182fd5b6200451089828a016200430f565b9150509295509295509295565b6000806040838503121562004530578182fd5b6200453b8362004205565b915060208301356200454d8162005125565b809150509250929050565b6000602082840312156200456a578081fd5b62003a0182620042fe565b60006020828403121562004587578081fd5b5035919050565b600060208284031215620045a0578081fd5b5051919050565b600060208284031215620045b9578081fd5b81356001600160401b03811115620045cf578182fd5b6200407f848285016200430f565b600060208284031215620045ef578081fd5b81516001600160401b0381111562004605578182fd5b6200407f8482850162004366565b600060c0828403121562004625578081fd5b60405160c081018181106001600160401b03821117156200464a576200464a620050fb565b60405282356200465a8162005138565b8152602083810135908201526040830135620046768162005111565b604082015260608301356200468b8162005138565b60608201526080838101359082015260a0928301359281019290925250919050565b600060208284031215620046bf578081fd5b81356001600160401b0380821115620046d6578283fd5b908301906101008286031215620046eb578283fd5b620046f562004e49565b6200470083620043ef565b815260208301356020820152604083013560408201526200472460608401620043b0565b6060820152608083013560808201526200474160a08401620043b0565b60a082015260c083013560c082015260e08301358281111562004762578485fd5b62004770878286016200430f565b60e08301525095945050505050565b600060e0828403121562004791578081fd5b60405160e081018181106001600160401b0382111715620047b657620047b6620050fb565b6040528235620047c68162005138565b8082525060208301356020820152604083013560408201526060830135620047ee8162005111565b6060820152608083810135908201526200480b60a08401620043b0565b60a082015260c083013560c08201528091505092915050565b60008060006060848603121562004839578081fd5b83516001600160401b038082111562004850578283fd5b90850190610160828803121562004865578283fd5b6200486f62004e6f565b6200487a83620043fc565b81526200488a60208401620043ca565b60208201526200489d60408401620043ca565b6040820152620048b060608401620043bd565b606082015260808301516080820152620048cd60a08401620043d7565b60a0820152620048e060c08401620043fc565b60c082015260e083015182811115620048f7578485fd5b620049058982860162004366565b60e0830152506101006200491b818501620043ca565b90820152610120838101518381111562004933578586fd5b620049418a82870162004222565b9183019190915250610140838101519082015294506200496460208701620042fe565b935060408601519150808211156200497a578283fd5b50620049898682870162004366565b9150509250925092565b600060208284031215620049a5578081fd5b813562003a018162005111565b600060208284031215620049c4578081fd5b815162003a018162005111565b60008060408385031215620049e4578182fd5b8235620049f18162005111565b946020939093013593505050565b6000806000806080858703121562004a15578182fd5b843562004a228162005111565b93506020850135925060408501359150606085013562004a428162005125565b939692955090935050565b6000806000806080858703121562004a63578182fd5b843562004a708162005111565b935060208501359250604085013562004a898162005125565b915060608501356001600160401b0381111562004aa4578182fd5b62004ab2878288016200430f565b91505092959194509250565b60006020828403121562004ad0578081fd5b62003a0182620043d7565b60006020828403121562004aed578081fd5b815162003a018162005138565b6000815180845262004b1481602086016020860162005098565b601f01601f19169290920160200192915050565b6000825162004b3c81846020870162005098565b9190910192915050565b6000835162004b5a81846020880162005098565b83519083019062004b7081836020880162005098565b01949350505050565b60ff60f81b8960f81b168152876001820152866021820152600061ffff60f01b808860f01b166041840152866043840152808660f01b16606384015250836065830152825162004bd181608585016020870162005098565b919091016085019998505050505050505050565b6001600160a01b03831681526040602082018190526000906200407f9083018462004afa565b60208152600062003a01602083018462004afa565b60608152600062004c35606083018662004afa565b828103602084015262004c49818662004afa565b9150506001600160401b0383166040830152949350505050565b60e08152600062004c7860e083018a62004afa565b828103602084015262004c8c818a62004afa565b60ff98909816604084015250506001600160401b039490941660608501526001600160a01b0392909216608084015261ffff1660a083015260c09091015292915050565b6020808252600f908201526e34b73b30b634b21032b6b4ba3a32b960891b604082015260600190565b60208082526010908201526f34b73b30b634b2102a3930b739b332b960811b604082015260600190565b6020808252600c908201526b77726f6e67206d6f64756c6560a01b604082015260600190565b6020808252600c908201526b3bb937b7339030b1ba34b7b760a11b604082015260600190565b6020815260ff8251166020820152602082015160408201526040820151606082015261ffff6060830151166080820152608082015160a0820152600060a083015162004dc160c084018261ffff169052565b5060c083015160e083015260e08301516101008081850152506200407f61012084018262004afa565b63ffffffff8416815260606020820152600062004e0b606083018562004afa565b905060ff83166040830152949350505050565b604051608081016001600160401b038111828210171562004e435762004e43620050fb565b60405290565b60405161010081016001600160401b038111828210171562004e435762004e43620050fb565b60405161016081016001600160401b038111828210171562004e435762004e43620050fb565b604051601f8201601f191681016001600160401b038111828210171562004ec05762004ec0620050fb565b604052919050565b60006001600160401b0382111562004ee45762004ee4620050fb565b50601f01601f191660200190565b6000821982111562004f085762004f08620050e5565b500190565b60008262004f2957634e487b7160e01b81526012600452602481fd5b500490565b600181815b8085111562004f6f57816000190482111562004f535762004f53620050e5565b8085161562004f6157918102915b93841c939080029062004f33565b509250929050565b600062003a0160ff84168360008262004f935750600162000d8b565b8162004fa25750600062000d8b565b816001811462004fbb576002811462004fc65762004fe6565b600191505062000d8b565b60ff84111562004fda5762004fda620050e5565b50506001821b62000d8b565b5060208310610133831016604e8410600b84101617156200500b575081810a62000d8b565b62005017838362004f2e565b80600019048211156200502e576200502e620050e5565b029392505050565b6000816000190483118215151615620050535762005053620050e5565b500290565b6000828210156200506d576200506d620050e5565b500390565b600060ff821660ff8416808210156200508f576200508f620050e5565b90039392505050565b60005b83811015620050b55781810151838201526020016200509b565b8381111562003be45750506000910152565b6000600019821415620050de57620050de620050e5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff811681146200512257600080fd5b50565b63ffffffff811681146200512257600080fd5b60ff811681146200512257600080fdfe608060405234801561001057600080fd5b5060405161099338038061099383398101604081905261002f9161048e565b818161005c60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51610599565b60008051602061094c8339815191521461008657634e487b7160e01b600052600160045260246000fd5b6100928282600061009b565b505050506105fe565b6100a483610175565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100e55750805b156101705761016e836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561012657600080fd5b505afa15801561013a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015e9190610474565b8361031560201b6100291760201c565b505b505050565b6101888161034160201b6100551760201c565b6101e75760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b61026a816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022357600080fd5b505afa158015610237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025b9190610474565b61034160201b6100551760201c565b6102cf5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101de565b806102f460008051602061094c83398151915260001b61034760201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061033a838360405180606001604052806027815260200161096c6027913961034a565b9392505050565b3b151590565b90565b6060833b6103a95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101de565b600080856001600160a01b0316856040516103c4919061054a565b600060405180830381855af49150503d80600081146103ff576040519150601f19603f3d011682016040523d82523d6000602084013e610404565b606091505b50909250905061041582828661041f565b9695505050505050565b6060831561042e57508161033a565b82511561043e5782518084602001fd5b8160405162461bcd60e51b81526004016101de9190610566565b80516001600160a01b038116811461046f57600080fd5b919050565b600060208284031215610485578081fd5b61033a82610458565b600080604083850312156104a0578081fd5b6104a983610458565b60208401519092506001600160401b03808211156104c5578283fd5b818501915085601f8301126104d8578283fd5b8151818111156104ea576104ea6105e8565b604051601f8201601f19908116603f01168101908382118183101715610512576105126105e8565b8160405282815288602084870101111561052a578586fd5b61053b8360208301602088016105bc565b80955050505050509250929050565b6000825161055c8184602087016105bc565b9190910192915050565b60208152600082518060208401526105858160408501602087016105bc565b601f01601f19169190910160400192915050565b6000828210156105b757634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156105d75781810151838201526020016105bf565b8381111561016e5750506000910152565b634e487b7160e01b600052604160045260246000fd5b61033f8061060d6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e36027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610263565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b8152600401610185919061027f565b60006020828403121561024d578081fd5b81516001600160a01b038116811461004e578182fd5b600082516102758184602087016102b2565b9190910192915050565b602081526000825180602084015261029e8160408501602087016102b2565b601f01601f19169190910160400192915050565b60005b838110156102cd5781810151838201526020016102b5565b838111156102dc576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d56a904d619117febd2e828ccee3a08b373204a8b4c038f74a1f3b566e03a78c64736f6c63430008040033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a264697066735822122071cce3e23781b4474a1036e67549843c677e0ddc89f5062c0bf4749e6949a9c364736f6c63430008040033",
"immutableReferences": {},
@@ -32172,9 +32172,9 @@
"sourceMap": "534:27123:9:-:0;;;;;;;;;;;;-1:-1:-1;1637:1:46;1742:7;:22;534:27123:9;;;;;;",
"deployedSourceMap": "534:27123:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:752:11;;;;;;;;;;-1:-1:-1;4163:752:11;;;;;:::i;:::-;;:::i;:::-;;;;;;37156:4:90;37198:3;37187:9;37183:19;37175:27;;37235:6;37229:13;37218:9;37211:32;37311:4;37303;37295:6;37291:17;37285:24;37281:35;37274:4;37263:9;37259:20;37252:65;37364:4;37356:6;37352:17;37346:24;37389:6;37451:2;37437:12;37433:21;37426:4;37415:9;37411:20;37404:51;37523:2;37515:4;37507:6;37503:17;37497:24;37493:33;37486:4;37475:9;37471:20;37464:63;;;37583:4;37575:6;37571:17;37565:24;37558:4;37547:9;37543:20;37536:54;37165:431;;;;;4163:752:11;;;;;;;;23209:708:9;;;;;;;;;;-1:-1:-1;23209:708:9;;;;;:::i;:::-;;:::i;:::-;;;;;;36087:4:90;36129:3;36118:9;36114:19;36106:27;;36179:4;36170:6;36164:13;36160:24;36149:9;36142:43;36241:4;36233:6;36229:17;36223:24;36216:4;36205:9;36201:20;36194:54;36316:6;36308:4;36300:6;36296:17;36290:24;36286:37;36279:4;36268:9;36264:20;36257:67;36392:4;36384;36376:6;36372:17;36366:24;36362:35;36355:4;36344:9;36340:20;36333:65;36454:4;36446:6;36442:17;36436:24;36429:4;36418:9;36414:20;36407:54;36517:4;36509:6;36505:17;36499:24;36492:4;36481:9;36477:20;36470:54;36096:434;;;;;22988:133:9;;;;;;;;;;-1:-1:-1;22988:133:9;;;;;:::i;:::-;;:::i;:::-;;;40815:4:90;40803:17;;;40785:36;;40773:2;40758:18;22988:133:9;40740:87:90;5696:746:9;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;40600:31:90;;;40582:50;;40570:2;40555:18;5696:746:9;40537:101:90;2180:612:11;;;;;;;;;;-1:-1:-1;2180:612:11;;;;;:::i;:::-;;:::i;:::-;;2050:119:10;;;;;;;;;;-1:-1:-1;2050:119:10;;;;;:::i;:::-;-1:-1:-1;;;;;2133:28:10;2110:4;2133:28;;;:21;:28;;;;;;;;;2050:119;;;;19373:14:90;;19366:22;19348:41;;19336:2;19321:18;2050:119:10;19303:92:90;16412:163:9;;;;;;;;;;-1:-1:-1;16412:163:9;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1369:168:10:-;;;;;;;;;;-1:-1:-1;1369:168:10;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;18186:32:90;;;18168:51;;18156:2;18141:18;1369:168:10;18123:102:90;1523:541:11;;;;;;;;;;-1:-1:-1;1523:541:11;;;;;:::i;:::-;;:::i;24139:808:9:-;;;;;;;;;;-1:-1:-1;24139:808:9;;;;;:::i;:::-;;:::i;:::-;;;;;;38637:4:90;38679:3;38668:9;38664:19;38656:27;;38729:4;38720:6;38714:13;38710:24;38699:9;38692:43;38791:4;38783:6;38779:17;38773:24;38766:4;38755:9;38751:20;38744:54;38854:4;38846:6;38842:17;38836:24;38829:4;38818:9;38814:20;38807:54;38908:4;38900:6;38896:17;38890:24;38933:6;38995:2;38981:12;38977:21;38970:4;38959:9;38955:20;38948:51;39055:4;39047:6;39043:17;39037:24;39030:4;39019:9;39015:20;39008:54;39130:2;39122:4;39114:6;39110:17;39104:24;39100:33;39093:4;39082:9;39078:20;39071:63;;;39190:4;39182:6;39178:17;39172:24;39165:4;39154:9;39150:20;39143:54;38646:557;;;;;270:141:10;;;;;;;;;;-1:-1:-1;270:141:10;;;;;:::i;:::-;341:4;365:38;;;:32;:38;;;;;;;;;270:141;1688:112;;;;;;;;;;-1:-1:-1;1766:26:10;;-1:-1:-1;;;;;1766:26:10;1688:112;;22151:380:9;;;;;;;;;;-1:-1:-1;22151:380:9;;;;;:::i;:::-;;:::i;907:95:10:-;;;;;;;;;;-1:-1:-1;977:17:10;;907:95;;;19546:25:90;;;19534:2;19519:18;907:95:10;19501:76:90;2177:98:10;;;;;;;;;;-1:-1:-1;2243:15:10;:24;;;;;;2177:98;;691:104;;;;;;;;;;-1:-1:-1;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;691:104;;2471:640:9;;;;;;:::i;:::-;;:::i;803:96:10:-;;;;;;;;;;-1:-1:-1;868:15:10;:23;;;803:96;;;39851:6:90;39839:19;;;39821:38;;39809:2;39794:18;803:96:10;39776:89:90;847:615:11;;;;;;;;;;-1:-1:-1;847:615:11;;;;;:::i;:::-;;:::i;556:127:10:-;;;;;;;;;;-1:-1:-1;556:127:10;;;;;:::i;:::-;620:4;644:31;;;:25;:31;;;;;;;;;556:127;1808:96;;;;;;;;;;-1:-1:-1;1875:20:10;;-1:-1:-1;;;;;1875:20:10;1808:96;;1545:135;;;;;;;;;;-1:-1:-1;1545:135:10;;;;;:::i;:::-;1634:38;;1608:7;1634:38;;;:28;:38;;;;;;;1545:135;21813:330:9;;;;;;;;;;-1:-1:-1;21813:330:9;;;;;:::i;:::-;;:::i;1242:119:10:-;;;;;;;;;;-1:-1:-1;1319:34:10;;1242:119;;1912:130;;;;;;;;;;-1:-1:-1;1912:130:10;;;;;:::i;:::-;-1:-1:-1;;;;;2002:32:10;1976:7;2002:32;;;:25;:32;;;;;;;1912:130;3722:627:9;;;;;;:::i;:::-;;:::i;15865:152::-;;;;;;;;;;-1:-1:-1;15865:152:9;;;;;:::i;:::-;;:::i;704:1671::-;;;;;;:::i;:::-;;:::i;7040:733::-;;;;;;:::i;:::-;;:::i;16809:111::-;;;;;;;;;;-1:-1:-1;16809:111:9;;;;;:::i;:::-;;:::i;5668:689:11:-;;;;;;;;;;-1:-1:-1;5668:689:11;;;;;:::i;:::-;;:::i;:::-;;;;;;36764:13:90;;36746:32;;36838:4;36826:17;;;36820:24;36846:4;36816:35;36794:20;;;36787:65;36908:4;36896:17;;;36890:24;36868:20;;;36861:54;36975:4;36963:17;;;36957:24;36983:6;36953:37;36931:20;;;36924:67;;;;36733:3;36718:19;;36700:297;22539:441:9;;;;;;;;;;-1:-1:-1;22539:441:9;;;;;:::i;:::-;;:::i;419:129:10:-;;;;;;;;;;-1:-1:-1;419:129:10;;;;;:::i;:::-;-1:-1:-1;;;;;501:39:10;477:4;501:39;;;:33;:39;;;;;;;;;419:129;1010:100;;;;;;;;;;;;;:::i;13648:418:9:-;;;;;;;;;;-1:-1:-1;13648:418:9;;;;;:::i;:::-;;:::i;26427:793::-;;;;;;;;;;-1:-1:-1;26427:793:9;;;;;:::i;:::-;;:::i;25182:849::-;;;;;;;;;;-1:-1:-1;25182:849:9;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12766:418::-;;;;;;;;;;-1:-1:-1;12766:418:9;;;;;:::i;:::-;;:::i;1118:116:10:-;;;;;;;;;;-1:-1:-1;1193:15:10;:33;;;;;;1118:116;;4923:665:11;;;;;;;;;;-1:-1:-1;4923:665:11;;;;;:::i;:::-;;:::i;:::-;;;;;;39439:13:90;;39421:32;;39513:4;39501:17;;;39495:24;39521:4;39491:35;39469:20;;;39462:65;39587:4;39575:17;;;39569:24;39595:6;39565:37;39543:20;;;39536:67;39659:4;39647:17;;;39641:24;39619:20;;;39612:54;;;;39408:3;39393:19;;39375:297;17162:122:9;;;;;;;;;;-1:-1:-1;17162:122:9;;;;;:::i;:::-;;:::i;4163:752:11:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:24:11;:7;-1:-1:-1;4361:17:11;:24::i;:::-;4346:39;;4396:11;4405:2;4396:11;;:::i;:::-;4426:12;;4396:11;;-1:-1:-1;721:66:11;4426:22;4418:47;;;;-1:-1:-1;;;4418:47:11;;;;;;;:::i;:::-;;;;;;;;;4493:22;:7;4509:5;4493:15;:22::i;:::-;4478:37;;:12;;;:37;4526:10;4535:1;4526:10;;:::i;:::-;;;4555:5;:12;;;:17;;4571:1;4555:17;4547:42;;;;-1:-1:-1;;;4547:42:11;;;;;;;:::i;:::-;4618:23;:7;4635:5;4618:16;:23::i;:::-;4602:39;;:13;;;:39;4652:10;4661:1;4652:10;;:::i;:::-;;-1:-1:-1;4720:23:11;:7;4652:10;4720:16;:23::i;:::-;4697:46;;:20;;;:46;4754:10;4763:1;4754:10;;:::i;:::-;;-1:-1:-1;4800:24:11;:7;4754:10;4800:17;:24::i;:::-;4777:20;;;:47;4835:11;4844:2;4835:11;;:::i;:::-;;;4885:5;4867:7;:14;:23;4859:48;;;;-1:-1:-1;;;4859:48:11;;25635:2:90;4859:48:11;;;25617:21:90;25674:2;25654:18;;;25647:30;-1:-1:-1;;;25693:18:90;;;25686:42;25745:18;;4859:48:11;25607:162:90;4859:48:11;4163:752;;;;:::o;23209:708:9:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23368:22:9;:7;-1:-1:-1;23368:15:9;:22::i;:::-;23351:39;;;;23401:10;23410:1;23401:10;;:::i;:::-;;;23432:4;:14;;;:19;;23450:1;23432:19;23424:49;;;;-1:-1:-1;;;23424:49:9;;24931:2:90;23424:49:9;;;24913:21:90;24970:2;24950:18;;;24943:30;-1:-1:-1;;;24989:18:90;;;24982:47;25046:18;;23424:49:9;24903:167:90;23424:49:9;23506:24;:7;23524:5;23506:17;:24::i;:::-;23486:17;;;;:44;;;;23541:11;;;;:::i;:::-;;-1:-1:-1;23583:23:9;:7;23541:11;23583:16;:23::i;:::-;23565:41;;:15;;;:41;23617:10;23626:1;23617:10;;:::i;:::-;;-1:-1:-1;23656:22:9;:7;23617:10;23656:15;:22::i;:::-;23640:38;;:13;;;:38;23689:10;23698:1;23689:10;;:::i;:::-;;-1:-1:-1;23726:24:9;:7;23689:10;23726:17;:24::i;:::-;23712:11;;;:38;23761:11;23770:2;23761:11;;:::i;:::-;;-1:-1:-1;23797:24:9;:7;23761:11;23797:17;:24::i;:::-;23785:9;;;:36;23832:11;23841:2;23832:11;;:::i;:::-;;;23882:5;23864:7;:14;:23;23856:53;;;;-1:-1:-1;;;23856:53:9;;24931:2:90;23856:53:9;;;24913:21:90;24970:2;24950:18;;;24943:30;-1:-1:-1;;;24989:18:90;;;24982:47;25046:18;;23856:53:9;24903:167:90;22988:133:9;23055:15;23095:18;:7;23055:15;23095;:18::i;:::-;23083:30;22988:133;-1:-1:-1;;22988:133:9:o;5696:746::-;5925:15;1680:1:46;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:46;;35783:2:90;2251:63:46;;;35765:21:90;35822:2;35802:18;;;35795:30;35861:33;35841:18;;;35834:61;35912:18;;2251:63:46;35755:181:90;2251:63:46;1680:1;2389:7;:18;5953:50:9::1;6006:92;6036:5:::0;6056:6;6077:10;6006:15:::1;:92::i;:::-;5953:145;;6120:314;6146:14;:25;;;6186:14;:27;;;6228:14;:31;;;6274:14;6303:9;6327:14;:35;;;6377:14;:26;;;6418:5;6120:11;:314::i;:::-;1637:1:46::0;2562:7;:22;6109:325:9;5696:746;-1:-1:-1;;;;;;;;5696:746:9:o;2180:612:11:-;2260:8;:6;:8::i;:::-;2252:31;;;;-1:-1:-1;;;2252:31:11;;29981:2:90;2252:31:11;;;29963:21:90;30020:2;30000:18;;;29993:30;-1:-1:-1;;;30039:18:90;;;30032:40;30089:18;;2252:31:11;29953:160:90;2252:31:11;2297:22;2321:10;2333:20;2357:29;2376:9;2357:18;:29::i;:::-;2296:90;;;;;;2405:5;2412:6;2397:22;;;;;-1:-1:-1;;;2397:22:11;;;;;;;;:::i;:::-;;2432:36;2460:2;:7;;;2432:27;:36::i;:::-;2481:39;2523:31;2543:2;:10;;;2523:19;:31::i;:::-;2481:73;;2638:13;2620:3;:14;;;:31;2612:61;;;;-1:-1:-1;;;2612:61:11;;32179:2:90;2612:61:11;;;32161:21:90;32218:2;32198:18;;;32191:30;-1:-1:-1;;;32237:18:90;;;32230:47;32294:18;;2612:61:11;32151:167:90;2612:61:11;2718:29;2732:3;:14;;;2718:13;:29::i;:::-;2769:14;;;;615:15:13;:33;;-1:-1:-1;;615:33:13;;;;;;;;;;;2758:26:11;2180:612;;;;;:::o;16412:163:9:-;16501:12;16533:34;16551:9;16562:4;16533:17;:34::i;1369:168:10:-;1481:34;;;;;1455:7;1481:34;;;:20;:34;;;;;;;;:48;;;;;;;;-1:-1:-1;;;;;1481:48:10;;1369:168::o;1523:541:11:-;1591:8;:6;:8::i;:::-;1590:9;1582:34;;;;-1:-1:-1;;;1582:34:11;;31838:2:90;1582:34:11;;;31820:21:90;31877:2;31857:18;;;31850:30;-1:-1:-1;;;31896:18:90;;;31889:42;31948:18;;1582:34:11;31810:162:90;1582:34:11;1630:22;1654:10;1666:20;1690:29;1709:9;1690:18;:29::i;:::-;1629:90;;;;;;1738:5;1745:6;1730:22;;;;;-1:-1:-1;;;1730:22:11;;;;;;;;:::i;:::-;;1765:36;1793:2;:7;;;1765:27;:36::i;:::-;1814:51;1868:24;1881:2;:10;;;1868:12;:24::i;:::-;1814:78;;1939:9;868:15:10;:23;;;;803:96;1939:9:11;1913:35;;:14;:22;;;:35;;;1905:62;;;;-1:-1:-1;;;1905:62:11;;21971:2:90;1905:62:11;;;21953:21:90;22010:2;21990:18;;;21983:30;-1:-1:-1;;;22029:18:90;;;22022:44;22083:18;;1905:62:11;21943:164:90;1905:62:11;2026:26;;;;1980:76;;:21;:76::i;24139:808:9:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24304:22:9;:7;-1:-1:-1;24304:15:9;:22::i;:::-;24283:43;;;;24337:10;24346:1;24337:10;;:::i;:::-;;;24368:8;:18;;;:23;;24390:1;24368:23;24360:52;;;;-1:-1:-1;;;24360:52:9;;;;;;;:::i;:::-;24443:24;:7;24461:5;24443:17;:24::i;:::-;24425:15;;;;:42;;;;24478:11;;;;:::i;:::-;;-1:-1:-1;24526:24:9;:7;24478:11;24526:17;:24::i;:::-;24502:21;;;:48;24561:11;24570:2;24561:11;;:::i;:::-;;-1:-1:-1;24607:23:9;:7;24561:11;24607:16;:23::i;:::-;24585:45;;:19;;;:45;24641:10;24650:1;24641:10;;:::i;:::-;;-1:-1:-1;24678:24:9;:7;24641:10;24678:17;:24::i;:::-;24664:11;;;:38;24713:11;24722:2;24713:11;;:::i;:::-;;-1:-1:-1;24756:23:9;:7;24713:11;24756:16;:23::i;:::-;24737:42;;:16;;;:42;24790:10;24799:1;24790:10;;:::i;:::-;;-1:-1:-1;24828:24:9;:7;24790:10;24828:17;:24::i;:::-;24813:12;;;:39;24863:11;24872:2;24863:11;;:::i;:::-;;;24913:5;24895:7;:14;:23;24887:52;;;;-1:-1:-1;;;24887:52:9;;;;;;;:::i;22151:380::-;22310:18;;22343:15;;;;;22373:21;;;;;22236:20;22409:19;;;;22443:11;;;;22469:16;;;;22500:12;;;;22279:244;;17677:3:90;17655:16;;;;-1:-1:-1;;;;;;17651:36:90;22279:244:9;;;17639:49:90;;;;17704:11;;;17697:27;;;;17740:12;;;17733:28;;;;17784:3;17829:16;;;-1:-1:-1;;;;;;17825:25:90;;;17811:12;;;17804:47;17867:12;;;17860:28;;;;17922:16;;;17918:25;;;17904:12;;;17897:47;17960:13;;;17953:29;22236:20:9;17998:13:90;;22279:244:9;;;;;;;;;;;;;22269:254;;22151:380;;;:::o;2471:640::-;2642:15;2670:63;2736:31;2756:10;2736:19;:31::i;:::-;2670:97;;2789:314;2815:14;:25;;;2855:14;:27;;;2897:14;:31;;;2943:14;2972:9;2996:14;:35;;;3046:14;:26;;;3087:5;2789:11;:314::i;:::-;2778:325;2471:640;-1:-1:-1;;;;;;2471:640:9:o;847:615:11:-;913:22;937:10;949:20;973:29;992:9;973:18;:29::i;:::-;912:90;;;;;;1021:5;1028:6;1013:22;;;;;-1:-1:-1;;;1013:22:11;;;;;;;;:::i;:::-;;1048:36;1076:2;:7;;;1048:27;:36::i;:::-;1097:40;1140:30;1159:2;:10;;;1140:18;:30::i;:::-;1097:73;;1209:9;868:15:10;:23;;;;803:96;1209:9:11;1192:26;;:5;:13;;;:26;;;:39;;;;;1223:8;:6;:8::i;:::-;1222:9;1192:39;1191:63;;;-1:-1:-1;1236:13:11;;;;:18;;;1191:63;1183:92;;;;-1:-1:-1;;;1183:92:11;;26664:2:90;1183:92:11;;;26646:21:90;26703:2;26683:18;;;26676:30;-1:-1:-1;;;26722:18:90;;;26715:46;26778:18;;1183:92:11;26636:166:90;1183:92:11;1310:20;;;;1634:38:10;;1343:1:11;1634:38:10;;;:28;:38;;;;;;1294:51:11;1286:88;;;;-1:-1:-1;;;1286:88:11;;35430:2:90;1286:88:11;;;35412:21:90;35469:2;35449:18;;;35442:30;35508:26;35488:18;;;35481:54;35552:18;;1286:88:11;35402:174:90;1286:88:11;1387:67;1411:5;:20;;;1433:5;:20;;;1032:37:13;;;;:6;:37;;;:28;:37;;;;;:54;939:155;21813:330:9;21970:14;;21999:17;;;;;22031:15;;;;;21896:20;22061:13;;;;22089:11;;;;22115:9;;;;21939:196;;16180:3:90;16214:16;;;-1:-1:-1;;;;;;16210:25:90;;;21939:196:9;;;16198:38:90;;;;16252:11;;;16245:27;;;;16328:3;16306:16;;;;-1:-1:-1;;;;;;16302:38:90;16288:12;;;16281:60;16375:16;;;16371:25;;;16357:12;;;16350:47;16413:12;;;16406:28;;;;16450:12;;;16443:28;;;;16487:13;;21939:196:9;16156:350:90;3722:627:9;3906:15;3934:63;4000:22;4020:1;4000:19;:22::i;:::-;3934:88;;4044:297;4081:14;:25;;;4121:14;:27;;;4163:14;:31;;;4209:14;4238:9;4262:14;:26;;;4303:5;4323:7;4044:22;:297::i;15865:152::-;15942:12;15974:35;15992:9;16003:5;15974:17;:35::i;704:1671::-;1012:37;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1012:37:9;-1:-1:-1;;;1012:37:9;;;988:62;;785:15;;;;-1:-1:-1;;;;;988:23:9;;;:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1117:35:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1117:35:9;-1:-1:-1;;;1117:35:9;;;1093:60;;954:96;;-1:-1:-1;1063:26:9;;-1:-1:-1;;;;;;1093:23:9;;;:60;;1117:35;1093:60;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1218:33:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1218:33:9;-1:-1:-1;;;1218:33:9;;;1194:58;;1061:92;;-1:-1:-1;1166:24:9;;-1:-1:-1;;;;;;1194:23:9;;;:58;;1218:33;1194:58;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1164:88;;;1265:14;1293:15;1282:36;;;;;;;;;;;;:::i;:::-;1265:53;;1331:26;1371:13;1360:35;;;;;;;;;;;;:::i;:::-;1331:64;;1406:24;1444:11;1433:33;;;;;;;;;;;;:::i;:::-;1406:60;;1479:14;1504:12;1635:2;1621:12;1617:21;1611:28;1601:38;;1683:2;1671:10;1667:19;1661:26;1653:34;;1710:35;1748:442;;;;;;;;1795:1;1748:442;;;;;;1846:12;-1:-1:-1;;;;;1830:30:9;1822:39;;1748:442;;;;1952:9;868:15:10;:23;;;;803:96;1952:9:9;1748:442;;;;;;2008:8;1748:442;;;;;;2090:6;1748:442;;;;2145:4;1748:442;;;1710:480;;2203:20;2226:21;2242:4;2226:15;:21::i;:::-;2203:44;;2271:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;2271:10:9;-1:-1:-1;;;;;2271:25:9;;2319:9;2340:5;2347:7;2356:10;2243:15:10;:24;;;;;;;;2177:98;2356:10:9;2271:96;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2260:107;704:1671;-1:-1:-1;;;;;;;;;;;;;704:1671:9:o;7040:733::-;7282:15;1680:1:46;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:46;;35783:2:90;2251:63:46;;;35765:21:90;35822:2;35802:18;;;35795:30;35861:33;35841:18;;;35834:61;35912:18;;2251:63:46;35755:181:90;2251:63:46;1680:1;2389:7;:18;7310:50:9::1;7363:83;7393:5:::0;7413:6;7310:50;7363:15:::1;:83::i;:::-;7310:136;;7468:297;7505:14;:25;;;7545:14;:27;;;7587:14;:31;;;7633:14;7662:9;7686:14;:26;;;7727:5;7747:7;7468:22;:297::i;16809:111::-:0;16877:35;16895:9;16906:5;16877:17;:35::i;:::-;;16809:111;:::o;5668:689:11:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5846:38:11;:21;-1:-1:-1;5846:31:11;:38::i;:::-;5833:51;;5895:11;5904:2;5895:11;;:::i;:::-;5925:10;;5895:11;;-1:-1:-1;721:66:11;5925:20;5917:45;;;;-1:-1:-1;;;5917:45:11;;;;;;;:::i;:::-;5988:36;:21;6018:5;5988:29;:36::i;:::-;5975:49;;:10;;;:49;6035:10;6044:1;6035:10;;:::i;:::-;;;6064:3;:10;;;:15;;6078:1;6064:15;6056:40;;;;-1:-1:-1;;;6056:40:11;;;;;;;:::i;:::-;6126:38;:21;6158:5;6126:31;:38::i;:::-;6109:14;;;:55;6175:11;6184:2;6175:11;;:::i;:::-;;-1:-1:-1;6216:37:11;:21;6175:11;6216:30;:37::i;:::-;6199:54;;:14;;;:54;6264:10;6273:1;6264:10;;:::i;22539:441:9:-;22646:20;22720:8;:18;;;22753:8;:15;;;22783:8;:21;;;22819:8;:19;;;22853:8;:11;;;22879:8;:16;;;22910:8;:20;;;22945:8;:16;;;22689:283;;;;;;;;;;;;;;;:::i;1010:100:10:-;1049:4;1089:13;1073:12;977:17;;;907:95;1073:12;:29;;1066:36;;1010:100;:::o;13648:418:9:-;13713:13;13740:22;13764:10;13776:20;13800:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;13800:10:9;-1:-1:-1;;;;;13800:27:9;;13828:9;13800:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13800:38:9;;;;;;;;;;;;:::i;:::-;13739:99;;;;;;13859:5;13866:6;13851:22;;;;;-1:-1:-1;;;13851:22:9;;;;;;;;:::i;:::-;;13892:18;13907:2;13892:14;:18::i;:::-;13884:46;;;;-1:-1:-1;;;13884:46:9;;;;;;;:::i;:::-;13943:35;13981:26;13996:2;:10;;;13981:14;:26::i;:::-;13943:64;;14025:33;14040:4;14046:2;:11;;;14025:14;:33::i;26427:793::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26569:23:9;26584:7;26569:14;:23::i;:::-;26551:41;;26609:9;:14;;26622:1;26609:14;26605:608;;;26651:22;26665:7;26651:13;:22::i;:::-;26640:33;;26605:608;;;26695:9;:14;;26708:1;26695:14;26691:522;;;26726:42;26771:33;26796:7;26771:24;:33::i;:::-;26840:1;26819:22;;26874:8;;;;;26856:15;;;:26;26921:14;;;;;26897:21;;;:38;26972:12;;;;;26950:34;;;;:19;;;:34;;;;27013:4;;;;;26999:11;;;:18;27051:9;;;;;27032:28;:16;;;:28;-1:-1:-1;26819:18:9;27124:12;;;:16;26691:522;;;27173:28;;-1:-1:-1;;;27173:28:9;;30675:2:90;27173:28:9;;;30657:21:90;30714:2;30694:18;;;30687:30;-1:-1:-1;;;30733:18:90;;;30726:48;30791:18;;27173:28:9;30647:168:90;25182:849:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25369:22:9;:7;-1:-1:-1;25369:15:9;:22::i;:::-;25348:43;;;;25402:10;25411:1;25402:10;;:::i;:::-;;;25433:8;:18;;;:23;;25455:1;25433:23;25425:52;;;;-1:-1:-1;;;25425:52:9;;;;;;;:::i;:::-;25508:24;:7;25526:5;25508:17;:24::i;:::-;25490:15;;;;:42;;;;25543:11;;;;:::i;:::-;;-1:-1:-1;25591:24:9;:7;25543:11;25591:17;:24::i;:::-;25567:21;;;:48;25626:11;25635:2;25626:11;;:::i;:::-;;-1:-1:-1;25672:23:9;:7;25626:11;25672:16;:23::i;:::-;25650:45;;:19;;;:45;25706:10;25715:1;25706:10;;:::i;:::-;;-1:-1:-1;25743:24:9;:7;25706:10;25743:17;:24::i;:::-;25729:11;;;:38;25778:11;25787:2;25778:11;;:::i;:::-;;-1:-1:-1;25821:23:9;:7;25778:11;25821:16;:23::i;:::-;25802:42;;:16;;;:42;25855:10;25864:1;25855:10;;:::i;:::-;;-1:-1:-1;25901:24:9;:7;25855:10;25901:17;:24::i;:::-;25878:20;;;:47;25936:11;25945:2;25936:11;;:::i;:::-;;;25979:44;25993:5;26017;26000:7;:14;:22;;;;:::i;:::-;25979:7;;:44;:13;:44::i;:::-;25960:16;;;:63;-1:-1:-1;25960:8:9;25182:849;-1:-1:-1;25182:849:9:o;12766:418::-;12831:13;12858:22;12882:10;12894:20;12918:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;12918:10:9;-1:-1:-1;;;;;12918:27:9;;12946:9;12918:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12918:38:9;;;;;;;;;;;;:::i;:::-;12857:99;;;;;;12977:5;12984:6;12969:22;;;;;-1:-1:-1;;;12969:22:9;;;;;;;;:::i;:::-;;13010:18;13025:2;13010:14;:18::i;:::-;13002:46;;;;-1:-1:-1;;;13002:46:9;;;;;;;:::i;:::-;13061:35;13099:26;13114:2;:10;;;13099:14;:26::i;:::-;13061:64;;13143:33;13158:4;13164:2;:11;;;13143:14;:33::i;4923:665:11:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5117:24:11;:7;-1:-1:-1;5117:17:11;:24::i;:::-;5102:39;;5152:11;5161:2;5152:11;;:::i;:::-;5182:12;;5152:11;;-1:-1:-1;721:66:11;5182:22;5174:47;;;;-1:-1:-1;;;5174:47:11;;;;;;;:::i;:::-;5249:22;:7;5265:5;5249:15;:22::i;:::-;5234:37;;:12;;;:37;5282:10;5291:1;5282:10;;:::i;:::-;;;5311:5;:12;;;:17;;5327:1;5311:17;5303:42;;;;-1:-1:-1;;;5303:42:11;;;;;;;:::i;:::-;5374:23;:7;5391:5;5374:16;:23::i;:::-;5358:39;;:13;;;:39;5408:10;5417:1;5408:10;;:::i;:::-;;-1:-1:-1;5473:24:11;:7;5408:10;5473:17;:24::i;:::-;5453:17;;;:44;5508:11;5517:2;5508:11;;:::i;17162:122:9:-;17242:34;17260:9;17271:4;17242:17;:34::i;15198:329:25:-;15277:7;15322:11;:6;15331:2;15322:11;:::i;:::-;15305:6;:13;:28;;15297:62;;;;-1:-1:-1;;;15297:62:25;;29217:2:90;15297:62:25;;;29199:21:90;29256:2;29236:18;;;29229:30;-1:-1:-1;;;29275:18:90;;;29268:51;29336:18;;15297:62:25;29189:171:90;15297:62:25;-1:-1:-1;15447:30:25;15463:4;15447:30;15441:37;;15198:329::o;12934:311::-;13011:5;13054:10;:6;13063:1;13054:10;:::i;:::-;13037:6;:13;:27;;13029:60;;;;-1:-1:-1;;;13029:60:25;;33229:2:90;13029:60:25;;;33211:21:90;33268:2;33248:18;;;33241:30;-1:-1:-1;;;33287:18:90;;;33280:49;33346:18;;13029:60:25;33201:169:90;13029:60:25;-1:-1:-1;13169:29:25;13185:3;13169:29;13163:36;;12934:311::o;13253:314::-;13331:6;13375:10;:6;13384:1;13375:10;:::i;:::-;13358:6;:13;:27;;13350:60;;;;-1:-1:-1;;;13350:60:25;;23753:2:90;13350:60:25;;;23735:21:90;23792:2;23772:18;;;23765:30;-1:-1:-1;;;23811:18:90;;;23804:50;23871:18;;13350:60:25;23725:170:90;13350:60:25;-1:-1:-1;13491:29:25;13507:3;13491:29;13485:36;;13253:314::o;7835:2580:9:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2133:28:10;;8031:17:9;2133:28:10;;;:21;:28;;;;;;8031:17:9;;2133:28:10;;8090:293:9;;;8165:5;-1:-1:-1;;;;;8145:34:9;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8132:49;;8231:5;-1:-1:-1;;;;;8211:41:9;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8196:58;;8090:293;;;-1:-1:-1;;868:15:10;:23;;;-1:-1:-1;;;;;8347:23:9;;8090:293;8480:37;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8480:37:9;-1:-1:-1;;;8480:37:9;;;8463:55;;8431:28;;-1:-1:-1;;;;;8463:16:9;;;:55;;8480:37;8463:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:89;;;8529:14;8557:15;8546:36;;;;;;;;;;;;:::i;:::-;8529:53;;8684:62;8702:33;8718:6;8726:8;8702:15;:33::i;:::-;8737:8;8684:17;:62::i;:::-;8675:71;;8777:9;868:15:10;:23;;;;803:96;8777:9:9;8763:23;;:10;:23;;;8759:1005;;;8915:64;;;8973:4;8915:64;;;;18168:51:90;;;;8915:64:9;;;;;;;;;;18141:18:90;;;;8915:64:9;;;;;;;-1:-1:-1;;;;;8915:64:9;-1:-1:-1;;;8915:64:9;;;8898:82;;8861:33;;-1:-1:-1;;;;;8898:16:9;;;:82;;8915:64;8898:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8859:121;;;8995:21;9030:20;9019:43;;;;;;;;;;;;:::i;:::-;8995:67;;9111:76;9145:5;9153:10;9173:4;9180:6;9111:26;:76::i;:::-;9314:64;;;9372:4;9314:64;;;;18168:51:90;;;;9314:64:9;;;;;;;;;;18141:18:90;;;;9314:64:9;;;;;;;-1:-1:-1;;;;;9314:64:9;-1:-1:-1;;;9314:64:9;;;9297:82;;9261:32;;-1:-1:-1;;;;;9297:16:9;;;:82;;9314:64;9297:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9259:120;;;9394:20;9428:19;9417:42;;;;;;;;;;;;:::i;:::-;9394:65;-1:-1:-1;9544:28:9;9559:13;9394:65;9544:28;:::i;:::-;9535:37;;8759:1005;;;;;;;9605:76;9639:5;9647:10;9667:4;9674:6;9605:26;:76::i;:::-;9698:54;;-1:-1:-1;;;9698:54:9;;9738:4;9698:54;;;19103:51:90;19170:18;;;19163:34;;;-1:-1:-1;;;;;9698:31:9;;;;;19076:18:90;;9698:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8759:1005;9815:24;9842:33;9858:6;9866:8;9842:15;:33::i;:::-;9815:60;;9886:28;9917:37;9933:10;9945:8;9917:15;:37::i;:::-;9886:68;;10039:9;868:15:10;:23;;;;803:96;10039:9:9;10025:23;;:10;:23;;;10021:90;;;10065:34;10075:5;10082:16;10065:9;:34::i;:::-;10140:267;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10140:267:9;;;;10386:9;10140:267;;;;;7835:2580;-1:-1:-1;;;;7835:2580:9:o;10849:817::-;11112:15;11155:6;11148:3;:13;;11140:44;;;;-1:-1:-1;;;11140:44:9;;28870:2:90;11140:44:9;;;28852:21:90;28909:2;28889:18;;;28882:30;-1:-1:-1;;;28928:18:90;;;28921:48;28986:18;;11140:44:9;28842:168:90;11140:44:9;11238:258;;;;;;;;11287:1;11238:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;771:15:10;-1:-1:-1;;;;;771:15:10;11520:25:9;11553:9;11578:5;11598:24;11238:258;11598:14;:24::i;:::-;2243:15:10;:24;;;;;;11520:138:9;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11509:149;10849:817;-1:-1:-1;;;;;;;;;;10849:817:9:o;2800:772:11:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:12:11;2919:27;2959:22;2983:10;2995:20;3019:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;3019:10:11;-1:-1:-1;;;;;3019:27:11;;3047:9;3019:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3019:38:11;;;;;;;;;;;;:::i;:::-;2958:99;;;;;;3075:5;3070:65;;3105:2;;-1:-1:-1;3109:5:11;-1:-1:-1;3116:6:11;-1:-1:-1;3097:26:11;;3070:65;1193:15:10;:33;;;;;;3151:40:11;;:2;:17;;;:40;;;3147:117;;-1:-1:-1;;3208:44:11;;;;;;;;;;;;-1:-1:-1;;;3208:44:11;;;;3216:2;;-1:-1:-1;3220:5:11;;-1:-1:-1;3208:44:11;-1:-1:-1;3208:44:11;;3147:117;1319:34:10;;3278:2:11;:17;;;:41;3274:121;;-1:-1:-1;;3336:47:11;;;;;;;;;;;;;;;;;3344:2;;-1:-1:-1;3348:5:11;;-1:-1:-1;3336:47:11;-1:-1:-1;3336:47:11;;3274:121;3438:7;;;;341:4:10;365:38;;;:32;:38;;;;;;;;3407:124:11;;;3471:2;3475:5;3463:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;3407:124;-1:-1:-1;;3543:21:11;;;;;;;;;-1:-1:-1;3543:21:11;;3551:2;;-1:-1:-1;3555:4:11;;-1:-1:-1;3543:21:11;-1:-1:-1;2800:772:11;;;;;;:::o;309:124:13:-;380:6;:38;;;:32;:38;;;;;:45;;-1:-1:-1;;380:45:13;421:4;380:45;;;309:124::o;1893:170::-;1978:13;1964:10;:27;1956:58;;;;-1:-1:-1;;;1956:58:13;;34324:2:90;1956:58:13;;;34306:21:90;34363:2;34343:18;;;34336:30;-1:-1:-1;;;34382:18:90;;;34375:48;34440:18;;1956:58:13;34296:168:90;1956:58:13;2025:17;:30;1893:170::o;17743:3350:9:-;17829:12;17855:22;17879:10;17891:20;17915:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;17915:10:9;-1:-1:-1;;;;;17915:27:9;;17943:9;17915:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17915:38:9;;;;;;;;;;;;:::i;:::-;17854:99;;;;;;17974:5;17981:6;17966:22;;;;;-1:-1:-1;;;17966:22:9;;;;;;;;:::i;:::-;;18007:18;18022:2;18007:14;:18::i;:::-;17999:46;;;;-1:-1:-1;;;17999:46:9;;;;;;;:::i;:::-;18058:38;18099:32;18120:2;:10;;;18099:20;:32::i;:::-;18058:73;;18216:25;18244:29;18261:8;:11;;;18244:16;:29::i;:::-;18216:57;;18288:8;:18;;;:23;;18310:1;18288:23;18284:114;;;18336:10;-1:-1:-1;;;;;18336:31:9;;;18328:58;;;;-1:-1:-1;;;18328:58:9;;22314:2:90;18328:58:9;;;22296:21:90;22353:2;22333:18;;;22326:30;-1:-1:-1;;;22372:18:90;;;22365:44;22426:18;;18328:58:9;22286:164:90;18328:58:9;18439:7;;;;620:4:10;644:31;;;:25;:31;;;;;;;;18418:29:9;18410:68;;;;-1:-1:-1;;;18410:68:9;;30320:2:90;18410:68:9;;;30302:21:90;30359:2;30339:18;;;30332:30;30398:28;30378:18;;;30371:56;30444:18;;18410:68:9;30292:176:90;18410:68:9;18489:29;18510:2;:7;;;505:6:13;:31;;;:25;:31;;;;;:38;;-1:-1:-1;;505:38:13;539:4;505:38;;;441:110;18489:29:9;868:15:10;:23;;;18539:29:9;;:8;:16;;;:29;;;18531:62;;;;-1:-1:-1;;;18531:62:9;;22657:2:90;18531:62:9;;;22639:21:90;22696:2;22676:18;;;22669:30;-1:-1:-1;;;22715:18:90;;;22708:50;22775:18;;18531:62:9;22629:170:90;18531:62:9;18606:20;18664:9;868:15:10;:23;;;;803:96;18664:9:9;18641:32;;:8;:19;;;:32;;;18637:484;;;18713:39;18730:8;:21;;;18713:16;:39::i;:::-;18690:63;;18818:50;18836:13;18852:8;:15;;;18818:9;:50::i;:::-;18637:484;;;18901:15;18919:56;18932:8;:19;;;18953:8;:21;;;18919:12;:56::i;:::-;18901:74;-1:-1:-1;;;;;;18998:21:9;;18990:71;;;;-1:-1:-1;;;18990:71:9;;33577:2:90;18990:71:9;;;33559:21:90;33616:2;33596:18;;;33589:30;33655:34;33635:18;;;33628:62;-1:-1:-1;;;33706:18:90;;;33699:35;33751:19;;18990:71:9;33549:227:90;18990:71:9;19101:7;-1:-1:-1;18637:484:9;19141:19;;;:64;;-1:-1:-1;1875:20:10;;-1:-1:-1;;;;;19164:41:9;;;1875:20:10;;19164:41:9;19141:64;19133:112;;;;-1:-1:-1;;;19133:112:9;;27700:2:90;19133:112:9;;;27682:21:90;27739:2;27719:18;;;27712:30;27778:34;27758:18;;;27751:62;-1:-1:-1;;;27829:18:90;;;27822:33;27872:19;;19133:112:9;27672:225:90;19133:112:9;19353:37;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19353:37:9;-1:-1:-1;;;19353:37:9;;;19319:72;;19287:28;;-1:-1:-1;;;;;19319:33:9;;;:72;;19353:37;19319:72;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19285:106;;;19402:14;19430:15;19419:36;;;;;;;;;;;;:::i;:::-;19402:53;;19496:20;19519:44;19537:8;:15;;;19554:8;19519:17;:44::i;:::-;19496:67;;19574:17;19594:41;19612:8;:12;;;19626:8;19594:17;:41::i;:::-;19574:61;;19700:1;19688:9;:13;:48;;;;-1:-1:-1;;;;;;19705:31:9;;19726:10;19705:31;;19688:48;19684:770;;;19774:12;19761:9;:25;;19753:72;;;;-1:-1:-1;;;19753:72:9;;23350:2:90;19753:72:9;;;23332:21:90;23389:2;23369:18;;;23362:30;23428:34;23408:18;;;23401:62;-1:-1:-1;;;23479:18:90;;;23472:32;23521:19;;19753:72:9;23322:224:90;19753:72:9;19846:10;19842:481;;;1875:20:10;;;19877:26:9;;-1:-1:-1;;;19877:26:9;;;;;19546:25:90;;;-1:-1:-1;;;;;1875:20:10;;19877:15:9;;19519:18:90;;19877:26:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19924:39:9;;19932:10;;-1:-1:-1;19924:39:9;;;;;-1:-1:-1;19953:9:9;;19924:39;;;;19953:9;19932:10;19924:39;;;;;;;;;;;;;;;;;;;;;19684:770;;19842:481;868:15:10;:23;;;20008:32:9;;:8;:19;;;:32;;;20004:304;;20108:71;;-1:-1:-1;;;20108:71:9;;20157:10;20108:71;;;19103:51:90;19170:18;;;19163:34;;;-1:-1:-1;;;;;20108:48:9;;;;;19076:18:90;;20108:71:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19684:770;;20004:304;20228:60;20251:13;20266:10;20278:9;20228:22;:60::i;:::-;19684:770;;;-1:-1:-1;20441:1:9;19684:770;20515:19;20537:24;20552:9;20537:12;:24;:::i;:::-;20515:46;;20578:10;20574:482;;;1875:20:10;;;20605:31:9;;-1:-1:-1;;;20605:31:9;;;;;19546:25:90;;;-1:-1:-1;;;;;1875:20:10;;20605:15:9;;19519:18:90;;20605:31:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20653:51:9;;-1:-1:-1;;;;;20653:35:9;;;-1:-1:-1;20653:51:9;;;;;-1:-1:-1;20689:14:9;;20653:51;;;;20689:14;20653:35;:51;;;;;;;;;;;;;;;;;;;;;20574:482;;;868:15:10;:23;;;20741:32:9;;:8;:19;;;:32;;;20737:308;;20833:83;;-1:-1:-1;;;20833:83:9;;-1:-1:-1;;;;;19121:32:90;;;20833:83:9;;;19103:51:90;19170:18;;;19163:34;;;20833:48:9;;;;;19076:18:90;;20833:83:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20737:308;;;20957:72;20980:13;20995:17;21014:14;20957:22;:72::i;:::-;-1:-1:-1;;;21075:10:9;;;;;;17743:3350;-1:-1:-1;;;;;;;;;;17743:3350:9:o;3669:486:11:-;3747:29;3779:20;901:66:42;1251:54;-1:-1:-1;;;;;1251:54:42;;1172:140;3779:20:11;3747:52;;3812:29;3823:17;3812:10;:29::i;:::-;3986:39;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3986:39:11;-1:-1:-1;;;3986:39:11;;;3955:71;;3918:12;;;;-1:-1:-1;;;;;3955:30:11;;;:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3917:109;;;;4047:7;4063:6;4039:32;;;;;-1:-1:-1;;;4039:32:11;;;;;;;;:::i;:::-;;4129:17;-1:-1:-1;;;;;4089:58:11;4106:21;-1:-1:-1;;;;;4089:58:11;;;;;;;;;;;3669:486;;;;:::o;14870:320:25:-;14949:7;14994:11;:6;15003:2;14994:11;:::i;:::-;14977:6;:13;:28;;14969:62;;;;-1:-1:-1;;;14969:62:25;;27350:2:90;14969:62:25;;;27332:21:90;27389:2;27369:18;;;27362:30;-1:-1:-1;;;27408:18:90;;;27401:51;27469:18;;14969:62:25;27322:171:90;4357:1264:9;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4487:16:9;771:15:10;;-1:-1:-1;;;;;771:15:10;-1:-1:-1;;;;;4506:21:9;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4487:42;;4564:9;4550:11;:23;4542:70;;;;-1:-1:-1;;;4542:70:9;;31435:2:90;4542:70:9;;;31417:21:90;31474:2;31454:18;;;31447:30;31513:34;31493:18;;;31486:62;-1:-1:-1;;;31564:18:90;;;31557:32;31606:19;;4542:70:9;31407:224:90;4542:70:9;4625:11;4639:23;4651:11;4639:9;:23;:::i;:::-;4625:37;;4697:6;4683:10;:20;;4675:77;;;;-1:-1:-1;;;4675:77:9;;31022:2:90;4675:77:9;;;31004:21:90;31061:2;31041:18;;;31034:30;31100:34;31080:18;;;31073:62;-1:-1:-1;;;31151:18:90;;;31144:42;31203:19;;4675:77:9;30994:234:90;4675:77:9;4765:21;4789:27;4805:6;4813:2;4789:15;:27::i;:::-;4765:51;;4827:25;4855:31;4871:10;4883:2;4855:15;:31::i;:::-;4827:59;;4923:9;4944:39;4962:16;4980:2;4944:17;:39::i;:::-;4935:48;;:6;:48;:::i;:::-;4923:60;-1:-1:-1;4998:8:9;;4994:75;;5023:34;;5031:10;;5023:34;;;;;5052:4;;5023:34;;;;5052:4;5031:10;5023:34;;;;;;;;;;;;;;;;;;;;;4994:75;1875:20:10;;-1:-1:-1;;;;;1875:20:10;5111:14:9;5148:13;5157:4;5148:6;:13;:::i;:::-;5111:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5241:44;5259:6;1875:20:10;;-1:-1:-1;;;;;1875:20:10;;1808:96;5259:6:9;5268:16;5241:9;:44::i;:::-;5315:298;;;;;;;;5372:9;868:15:10;:23;;;;803:96;5372:9:9;5315:298;;;;;;5443:6;1875:20:10;;-1:-1:-1;;;;;1875:20:10;;1808:96;5443:6:9;-1:-1:-1;;;;;5419:33:9;5411:42;;5315:298;;;;5487:16;5315:298;;;;5541:20;5315:298;;;;5590:11;5315:298;;;5298:315;;4357:1264;;;;;;;;:::o;11821:937::-;12184:393;;;;;;;;12262:1;12184:393;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12513:10;12184:393;;;;;;;;;;12104:15;;12601:10;732:9:10;771:15;-1:-1:-1;;;;;771:15:10;;691:104;12601:10:9;-1:-1:-1;;;;;12601:25:9;;12634:9;12659:5;12679:35;12705:8;12679:25;:35::i;21603:202::-;21674:4;21699:8;:6;:8::i;:::-;21698:9;21690:34;;;;-1:-1:-1;;;21690:34:9;;31838:2:90;21690:34:9;;;31820:21:90;31877:2;31857:18;;;31850:30;-1:-1:-1;;;31896:18:90;;;31889:42;31948:18;;21690:34:9;31810:162:90;21690:34:9;-1:-1:-1;21780:17:9;;;;21758;;;;;1634:38:10;;1608:7;1634:38;;;:28;:38;;;;;;21742:55:9;;21603:202::o;14122:1357::-;14218:13;14271:9;868:15:10;:23;;;;803:96;14271:9:9;14252:28;;:4;:15;;;:28;;;;14244:81;;;;-1:-1:-1;;;14244:81:9;;28461:2:90;14244:81:9;;;28443:21:90;28500:2;28480:18;;;28473:30;28539:34;28519:18;;;28512:62;-1:-1:-1;;;28590:18:90;;;28583:38;28638:19;;14244:81:9;28433:230:90;14244:81:9;14404:1;-1:-1:-1;;;;;14344:62:9;:48;14357:4;:15;;;14374:4;:17;;;14344:12;:48::i;:::-;-1:-1:-1;;;;;14344:62:9;;14336:103;;;;-1:-1:-1;;;14336:103:9;;28104:2:90;14336:103:9;;;28086:21:90;28143:2;28123:18;;;28116:30;28182;28162:18;;;28155:58;28230:18;;14336:103:9;28076:178:90;14336:103:9;14499:31;14570:39;;;14624:26;14640:4;:9;;;14624:15;:26::i;:::-;14665:28;14681:4;:11;;;14665:15;:28::i;:::-;14708:4;:13;;;14736:8;14769:4;14791;:15;;;14821:4;:17;;;14533:316;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;14533:316:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;14533:316:9;-1:-1:-1;;;;;;14533:316:9;;;;;;;;;;14932:45;14533:316;;-1:-1:-1;;;14932:45:9;;14951:4;;14533:316;;14932:45;;:::i;:::-;;;;;;;;;;;;;14901:76;;15018:21;15059:30;;;;;;;;:::i;:::-;-1:-1:-1;;15059:30:9;;;;;;;;;;;;;;;;15042:65;;15059:30;15091:15;;15059:30;15042:65;;:::i;:::-;;;;;;;;;;;;;15018:89;;15120:12;15162:4;:15;;;15179:4;:17;;;15145:52;;;;;;;;15819:3:90;15797:16;;;;-1:-1:-1;;;;;;15793:38:90;15781:51;;15857:1;15848:11;;15841:27;15893:2;15884:12;;15771:131;15145:52:9;;;;;;;;;;;;;15135:63;;;;;;15120:78;;15293:4;15282:8;15276:15;15269:4;15259:8;15255:19;15252:1;15244:54;15235:63;;15336:5;15324:18;15314:2;;15373:1;15370;15363:12;15314:2;15429:15;;;;;15446:17;;;;;1514:34:13;;;;:6;:34;;;:20;:34;;;;;:48;;;;;;;;;:58;;-1:-1:-1;;;;;;1514:58:13;-1:-1:-1;;;;;1514:58:13;;;;;;;;1583:30;;:21;:30;;;:37;;-1:-1:-1;;1583:37:13;-1:-1:-1;1583:37:13;;;14122:1357:9;;;;;;;;:::o;9684:2871:25:-;9837:12;9891:7;9875:12;9891:7;9885:2;9875:12;:::i;:::-;:23;;9867:50;;;;-1:-1:-1;;;9867:50:25;;25976:2:90;9867:50:25;;;25958:21:90;26015:2;25995:18;;;25988:30;-1:-1:-1;;;26034:18:90;;;26027:44;26088:18;;9867:50:25;25948:164:90;9867:50:25;9953:16;9962:7;9953:6;:16;:::i;:::-;9936:6;:13;:33;;9928:63;;;;-1:-1:-1;;;9928:63:25;;32883:2:90;9928:63:25;;;32865:21:90;32922:2;32902:18;;;32895:30;-1:-1:-1;;;32941:18:90;;;32934:47;32998:18;;9928:63:25;32855:167:90;9928:63:25;10004:22;10070:15;;10099:2005;;;;12248:4;12242:11;12229:24;;12437:1;12426:9;12419:20;12487:4;12476:9;12472:20;12466:4;12459:34;10063:2445;;10099:2005;10284:4;10278:11;10265:24;;10953:2;10944:7;10940:16;11341:9;11334:17;11328:4;11324:28;11312:9;11301;11297:25;11293:60;11390:7;11386:2;11382:16;11647:6;11633:9;11626:17;11620:4;11616:28;11604:9;11596:6;11592:22;11588:57;11584:70;11418:434;11681:3;11677:2;11674:11;11418:434;;;11823:9;;11812:21;;11723:4;11715:13;;;;11756;11418:434;;;-1:-1:-1;;11872:26:25;;;12084:2;12067:11;-1:-1:-1;;12063:25:25;12057:4;12050:39;-1:-1:-1;10063:2445:25;-1:-1:-1;12538:9:25;-1:-1:-1;9684:2871:25;;;;;;:::o;13192:448:9:-;13288:13;13314:15;13332:48;13345:4;:15;;;13362:4;:17;;;13332:12;:48::i;:::-;13314:66;-1:-1:-1;;;;;;13399:21:9;;13391:63;;;;-1:-1:-1;;;13391:63:9;;25277:2:90;13391:63:9;;;25259:21:90;25316:2;25296:18;;;25289:30;25355:31;25335:18;;;25328:59;25404:18;;13391:63:9;25249:179:90;13391:63:9;13515:7;-1:-1:-1;;;;;13495:42:9;;13538:26;13554:4;:9;;;13538:15;:26::i;:::-;13566:28;13582:4;:11;;;13566:15;:28::i;:::-;13596:8;13495:110;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13625:7:9;;13192:448;-1:-1:-1;;;;;;13192:448:9:o;10423:204::-;10502:7;10536:1;10525:8;:12;;;10521:75;;;10571:12;10582:1;10571:8;:12;:::i;:::-;10564:20;;:2;:20;:::i;:::-;10554:30;;;;:::i;:::-;;;10521:75;-1:-1:-1;10613:6:9;;10423:204;-1:-1:-1;10423:204:9:o;10635:206::-;10716:7;10750:1;10739:8;:12;;;10735:75;;;10785:12;10796:1;10785:8;:12;:::i;:::-;10778:20;;:2;:20;:::i;:::-;10768:30;;;;:::i;845:241:48:-;1010:68;;-1:-1:-1;;;;;18488:15:90;;;1010:68:48;;;18470:34:90;18540:15;;18520:18;;;18513:43;18572:18;;;18565:34;;;983:96:48;;1003:5;;-1:-1:-1;;;1033:27:48;18405:18:90;;1010:68:48;;;;-1:-1:-1;;1010:68:48;;;;;;;;;;;;;;-1:-1:-1;;;;;1010:68:48;-1:-1:-1;;;;;;1010:68:48;;;;;;;;;;983:19;:96::i;:::-;845:241;;;;:::o;21101:327:9:-;-1:-1:-1;;;;;2002:32:10;;21178:16:9;2002:32:10;;;:25;:32;;;;;;-1:-1:-1;;;;;21241:30:9;21255:16;2002:32:10;21241:30:9;:::i;:::-;:50;;21233:116;;;;-1:-1:-1;;;21233:116:9;;24102:2:90;21233:116:9;;;24084:21:90;24141:2;24121:18;;;24114:30;24180:34;24160:18;;;24153:62;-1:-1:-1;;;24231:18:90;;;24224:51;24292:19;;21233:116:9;24074:243:90;21233:116:9;21360:60;21382:5;21389:30;21403:16;21389:11;:30;:::i;:::-;-1:-1:-1;;;;;1723:32:13;;;:6;:32;;;:25;:32;;;;;:46;1636:141;21360:60:9;21101:327;;;:::o;17519:181::-;17579:7;-1:-1:-1;;;;;;17607:15:9;;;17599:47;;;;-1:-1:-1;;;17599:47:9;;34671:2:90;17599:47:9;;;34653:21:90;34710:2;34690:18;;;34683:30;-1:-1:-1;;;34729:18:90;;;34722:49;34788:18;;17599:47:9;34643:169:90;17599:47:9;-1:-1:-1;17688:1:9;17519:181::o;21436:159::-;21513:74;21535:5;21570:16;21542:25;21561:5;-1:-1:-1;;;;;2002:32:10;1976:7;2002:32;;;:25;:32;;;;;;;1912:130;21542:25:9;:44;;;;:::i;634:205:48:-;773:58;;-1:-1:-1;;;;;19121:32:90;;773:58:48;;;19103:51:90;19170:18;;;19163:34;;;746:86:48;;766:5;;-1:-1:-1;;;796:23:48;19076:18:90;;773:58:48;19058:145:90;1768:152:42;1834:37;1853:17;1834:18;:37::i;:::-;1886:27;;-1:-1:-1;;;;;1886:27:42;;;;;;;;1768:152;:::o;27228:338:9:-;27291:13;27317:9;27337:62;27348:2;27344:1;:6;:23;;;;;27354:5;27360:1;27354:8;;;;;-1:-1:-1;;;27354:8:9;;;;;;;;;;;;-1:-1:-1;;;;;;27354:13:9;;;27344:23;27337:62;;;27384:3;;;;:::i;:::-;;;;27337:62;;;27409:18;27440:1;-1:-1:-1;;;;;27430:12:9;;;;;-1:-1:-1;;;27430:12:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27430:12:9;;27409:33;;27458:6;27453:75;27474:1;27470;:5;27453:75;;;27508:5;27514:1;27508:8;;;;;-1:-1:-1;;;27508:8:9;;;;;;;;;;;;27497:5;27503:1;27497:8;;;;;;-1:-1:-1;;;27497:8:9;;;;;;;;;;;;:19;-1:-1:-1;;;;;27497:19:9;;;;;;;;-1:-1:-1;27477:3:9;;;;:::i;:::-;;;;27453:75;;;-1:-1:-1;27552:5:9;27228:338;-1:-1:-1;;;27228:338:9:o;3140:706:48:-;3559:23;3585:69;3613:4;3585:69;;;;;;;;;;;;;;;;;3593:5;-1:-1:-1;;;;;3585:27:48;;;:69;;;;;:::i;:::-;3668:17;;3559:95;;-1:-1:-1;3668:21:48;3664:176;;3763:10;3752:30;;;;;;;;;;;;:::i;:::-;3744:85;;;;-1:-1:-1;;;3744:85:48;;35019:2:90;3744:85:48;;;35001:21:90;35058:2;35038:18;;;35031:30;35097:34;35077:18;;;35070:62;-1:-1:-1;;;35148:18:90;;;35141:40;35198:19;;3744:85:48;34991:232:90;1403:259:42;1034:20:52;;1476:95:42;;;;-1:-1:-1;;;1476:95:42;;29567:2:90;1476:95:42;;;29549:21:90;29606:2;29586:18;;;29579:30;29645:34;29625:18;;;29618:62;-1:-1:-1;;;29696:18:90;;;29689:43;29749:19;;1476:95:42;29539:235:90;1476:95:42;901:66;1581:74;;-1:-1:-1;;;;;;1581:74:42;-1:-1:-1;;;;;1581:74:42;;;;;;;;;;1403:259::o;3461:223:52:-;3594:12;3625:52;3647:6;3655:4;3661:1;3664:12;3625:21;:52::i;:::-;3618:59;3461:223;-1:-1:-1;;;;3461:223:52:o;4548:499::-;4713:12;4770:5;4745:21;:30;;4737:81;;;;-1:-1:-1;;;4737:81:52;;24524:2:90;4737:81:52;;;24506:21:90;24563:2;24543:18;;;24536:30;24602:34;24582:18;;;24575:62;-1:-1:-1;;;24653:18:90;;;24646:36;24699:19;;4737:81:52;24496:228:90;4737:81:52;1034:20;;4828:60;;;;-1:-1:-1;;;4828:60:52;;32525:2:90;4828:60:52;;;32507:21:90;32564:2;32544:18;;;32537:30;32603:31;32583:18;;;32576:59;32652:18;;4828:60:52;32497:179:90;4828:60:52;4900:12;4914:23;4941:6;-1:-1:-1;;;;;4941:11:52;4960:5;4967:4;4941:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:73;;;;4989:51;5006:7;5015:10;5027:12;4989:16;:51::i;:::-;4982:58;4548:499;-1:-1:-1;;;;;;;4548:499:52:o;7161:692::-;7307:12;7335:7;7331:516;;;-1:-1:-1;7365:10:52;7358:17;;7331:516;7476:17;;:21;7472:365;;7670:10;7664:17;7730:15;7717:10;7713:2;7709:19;7702:44;7619:145;7809:12;7802:20;;-1:-1:-1;;;7802:20:52;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;:::o;14:173:90:-;82:20;;-1:-1:-1;;;;;131:31:90;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:1283::-;266:5;319:3;312:4;304:6;300:17;296:27;286:2;;341:5;334;327:20;286:2;374:6;368:13;400:4;-1:-1:-1;;;;;419:2:90;416:26;413:2;;;445:18;;:::i;:::-;485:36;517:2;512;509:1;505:10;501:19;485:36;:::i;:::-;543:3;567:2;562:3;555:15;595:2;590:3;586:12;579:19;;630:2;622:6;618:15;682:3;677:2;671;668:1;664:10;656:6;652:23;648:32;645:41;642:2;;;703:5;696;689:20;642:2;729:5;743:703;757:2;754:1;751:9;743:703;;;812:4;851:2;845:3;840;836:13;832:22;829:2;;;871:5;864;857:20;829:2;905:22;;:::i;:::-;960:3;954:10;947:5;940:25;1016:2;1011:3;1007:12;1001:19;996:2;989:5;985:14;978:43;1044:2;1089;1084:3;1080:12;1074:19;1106:31;1129:7;1106:31;:::i;:::-;1157:14;;;1150:31;1204:2;1240:12;;;1234:19;1266:31;1234:19;1266:31;:::i;:::-;1317:14;;;1310:31;1354:18;;1392:12;;;;1424;;;;;775:1;768:9;743:703;;;-1:-1:-1;1464:5:90;;276:1199;-1:-1:-1;;;;;;;276:1199:90:o;1480:164::-;1556:13;;1605;;1598:21;1588:32;;1578:2;;1634:1;1631;1624:12;1649:482;1691:5;1744:3;1737:4;1729:6;1725:17;1721:27;1711:2;;1766:5;1759;1752:20;1711:2;1806:6;1793:20;1837:48;1853:31;1881:2;1853:31;:::i;:::-;1837:48;:::i;:::-;1910:2;1901:7;1894:19;1956:3;1949:4;1944:2;1936:6;1932:15;1928:26;1925:35;1922:2;;;1977:5;1970;1963:20;1922:2;2046;2039:4;2031:6;2027:17;2020:4;2011:7;2007:18;1994:55;2069:16;;;2087:4;2065:27;2058:42;;;;2073:7;1701:430;-1:-1:-1;;1701:430:90:o;2136:444::-;2189:5;2242:3;2235:4;2227:6;2223:17;2219:27;2209:2;;2264:5;2257;2250:20;2209:2;2297:6;2291:13;2328:48;2344:31;2372:2;2344:31;:::i;2328:48::-;2401:2;2392:7;2385:19;2447:3;2440:4;2435:2;2427:6;2423:15;2419:26;2416:35;2413:2;;;2468:5;2461;2454:20;2413:2;2485:64;2546:2;2539:4;2530:7;2526:18;2519:4;2511:6;2507:17;2485:64;:::i;2585:132::-;2652:20;;2681:30;2652:20;2681:30;:::i;2722:136::-;2800:13;;2822:30;2800:13;2822:30;:::i;2863:136::-;2941:13;;2963:30;2941:13;2963:30;:::i;3004:175::-;3082:13;;-1:-1:-1;;;;;3124:30:90;;3114:41;;3104:2;;3169:1;3166;3159:12;3184:130;3250:20;;3279:29;3250:20;3279:29;:::i;3319:134::-;3396:13;;3418:29;3396:13;3418:29;:::i;3458:196::-;3517:6;3570:2;3558:9;3549:7;3545:23;3541:32;3538:2;;;3591:6;3583;3576:22;3538:2;3619:29;3638:9;3619:29;:::i;3659:675::-;3761:6;3769;3777;3785;3793;3801;3854:3;3842:9;3833:7;3829:23;3825:33;3822:2;;;3876:6;3868;3861:22;3822:2;3904:29;3923:9;3904:29;:::i;:::-;3894:39;;3980:2;3969:9;3965:18;3952:32;3942:42;;4034:2;4023:9;4019:18;4006:32;4047:30;4071:5;4047:30;:::i;:::-;4096:5;-1:-1:-1;4148:2:90;4133:18;;4120:32;;-1:-1:-1;4199:3:90;4184:19;;4171:33;;-1:-1:-1;4256:3:90;4241:19;;4228:33;4270:32;4228:33;4270:32;:::i;:::-;4321:7;4311:17;;;3812:522;;;;;;;;:::o;4339:825::-;4450:6;4458;4466;4474;4482;4490;4543:3;4531:9;4522:7;4518:23;4514:33;4511:2;;;4565:6;4557;4550:22;4511:2;4593:29;4612:9;4593:29;:::i;:::-;4583:39;;4669:2;4658:9;4654:18;4641:32;4631:42;;4723:2;4712:9;4708:18;4695:32;4736:30;4760:5;4736:30;:::i;:::-;4785:5;-1:-1:-1;4837:2:90;4822:18;;4809:32;;-1:-1:-1;4893:3:90;4878:19;;4865:33;4907:32;4865:33;4907:32;:::i;:::-;4958:7;-1:-1:-1;5016:3:90;5001:19;;4988:33;-1:-1:-1;;;;;5033:30:90;;5030:2;;;5081:6;5073;5066:22;5030:2;5109:49;5150:7;5141:6;5130:9;5126:22;5109:49;:::i;:::-;5099:59;;;4501:663;;;;;;;;:::o;5169:329::-;5236:6;5244;5297:2;5285:9;5276:7;5272:23;5268:32;5265:2;;;5318:6;5310;5303:22;5265:2;5346:29;5365:9;5346:29;:::i;:::-;5336:39;;5425:2;5414:9;5410:18;5397:32;5438:30;5462:5;5438:30;:::i;:::-;5487:5;5477:15;;;5255:243;;;;;:::o;5503:212::-;5570:6;5623:2;5611:9;5602:7;5598:23;5594:32;5591:2;;;5644:6;5636;5629:22;5591:2;5672:37;5699:9;5672:37;:::i;5720:190::-;5779:6;5832:2;5820:9;5811:7;5807:23;5803:32;5800:2;;;5853:6;5845;5838:22;5800:2;-1:-1:-1;5881:23:90;;5790:120;-1:-1:-1;5790:120:90:o;5915:194::-;5985:6;6038:2;6026:9;6017:7;6013:23;6009:32;6006:2;;;6059:6;6051;6044:22;6006:2;-1:-1:-1;6087:16:90;;5996:113;-1:-1:-1;5996:113:90:o;6114:340::-;6182:6;6235:2;6223:9;6214:7;6210:23;6206:32;6203:2;;;6256:6;6248;6241:22;6203:2;6301:9;6288:23;-1:-1:-1;;;;;6326:6:90;6323:30;6320:2;;;6371:6;6363;6356:22;6320:2;6399:49;6440:7;6431:6;6420:9;6416:22;6399:49;:::i;6459:356::-;6539:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:2;;;6613:6;6605;6598:22;6560:2;6651:9;6645:16;-1:-1:-1;;;;;6676:6:90;6673:30;6670:2;;;6721:6;6713;6706:22;6670:2;6749:60;6801:7;6792:6;6781:9;6777:22;6749:60;:::i;6820:994::-;6906:6;6959:3;6947:9;6938:7;6934:23;6930:33;6927:2;;;6981:6;6973;6966:22;6927:2;7019;7013:9;7061:3;7053:6;7049:16;7131:6;7119:10;7116:22;-1:-1:-1;;;;;7083:10:90;7080:34;7077:62;7074:2;;;7142:18;;:::i;:::-;7178:2;7171:22;7215:23;;7247:29;7215:23;7247:29;:::i;:::-;7285:21;;7367:2;7352:18;;;7339:32;7322:15;;;7315:57;7424:2;7409:18;;7396:32;7437;7396;7437;:::i;:::-;7497:2;7485:15;;7478:32;7562:2;7547:18;;7534:32;7575:31;7534:32;7575:31;:::i;:::-;7634:2;7622:15;;7615:32;7709:3;7694:19;;;7681:33;7663:16;;;7656:59;7777:3;7762:19;;;7749:33;7731:16;;;7724:59;;;;-1:-1:-1;7626:6:90;6917:897;-1:-1:-1;6917:897:90:o;7819:1090::-;7915:6;7968:2;7956:9;7947:7;7943:23;7939:32;7936:2;;;7989:6;7981;7974:22;7936:2;8034:9;8021:23;-1:-1:-1;;;;;8104:2:90;8096:6;8093:14;8090:2;;;8125:6;8117;8110:22;8090:2;8153:22;;;;8209:6;8191:16;;;8187:29;8184:2;;;8234:6;8226;8219:22;8184:2;8265:22;;:::i;:::-;8310:20;8327:2;8310:20;:::i;:::-;8303:5;8296:35;8384:2;8380;8376:11;8363:25;8358:2;8351:5;8347:14;8340:49;8442:2;8438;8434:11;8421:25;8416:2;8409:5;8405:14;8398:49;8479:30;8505:2;8501;8497:11;8479:30;:::i;:::-;8474:2;8467:5;8463:14;8456:54;8564:3;8560:2;8556:12;8543:26;8537:3;8530:5;8526:15;8519:51;8603:31;8629:3;8625:2;8621:12;8603:31;:::i;:::-;8597:3;8590:5;8586:15;8579:56;8689:3;8685:2;8681:12;8668:26;8662:3;8655:5;8651:15;8644:51;8741:3;8737:2;8733:12;8720:26;8771:2;8761:8;8758:16;8755:2;;;8792:6;8784;8777:22;8755:2;8834:44;8870:7;8859:8;8855:2;8851:17;8834:44;:::i;:::-;8828:3;8817:15;;8810:69;-1:-1:-1;8821:5:90;7926:983;-1:-1:-1;;;;;7926:983:90:o;8914:995::-;8999:6;9052:3;9040:9;9031:7;9027:23;9023:33;9020:2;;;9074:6;9066;9059:22;9020:2;9112;9106:9;9154:3;9146:6;9142:16;9224:6;9212:10;9209:22;-1:-1:-1;;;;;9176:10:90;9173:34;9170:62;9167:2;;;9235:18;;:::i;:::-;9271:2;9264:22;9308:23;;9340:29;9308:23;9340:29;:::i;:::-;9393:5;9385:6;9378:21;;9460:2;9449:9;9445:18;9432:32;9427:2;9419:6;9415:15;9408:57;9526:2;9515:9;9511:18;9498:32;9493:2;9485:6;9481:15;9474:57;9583:2;9572:9;9568:18;9555:32;9596;9620:7;9596:32;:::i;:::-;9656:2;9644:15;;9637:32;9731:3;9716:19;;;9703:33;9685:16;;;9678:59;9771:38;9804:3;9789:19;;9771:38;:::i;:::-;9765:3;9757:6;9753:16;9746:64;9872:3;9861:9;9857:19;9844:33;9838:3;9830:6;9826:16;9819:59;9897:6;9887:16;;;9010:899;;;;:::o;9914:1844::-;10029:6;10037;10045;10098:2;10086:9;10077:7;10073:23;10069:32;10066:2;;;10119:6;10111;10104:22;10066:2;10157:9;10151:16;-1:-1:-1;;;;;10227:2:90;10219:6;10216:14;10213:2;;;10248:6;10240;10233:22;10213:2;10276:22;;;;10332:6;10314:16;;;10310:29;10307:2;;;10357:6;10349;10342:22;10307:2;10388:22;;:::i;:::-;10433:31;10461:2;10433:31;:::i;:::-;10426:5;10419:46;10497:41;10534:2;10530;10526:11;10497:41;:::i;:::-;10492:2;10485:5;10481:14;10474:65;10571:41;10608:2;10604;10600:11;10571:41;:::i;:::-;10566:2;10559:5;10555:14;10548:65;10645:41;10682:2;10678;10674:11;10645:41;:::i;:::-;10640:2;10633:5;10629:14;10622:65;10734:3;10730:2;10726:12;10720:19;10714:3;10707:5;10703:15;10696:44;10773:42;10810:3;10806:2;10802:12;10773:42;:::i;:::-;10767:3;10760:5;10756:15;10749:67;10849:41;10885:3;10881:2;10877:12;10849:41;:::i;:::-;10843:3;10836:5;10832:15;10825:66;10930:3;10926:2;10922:12;10916:19;10960:2;10950:8;10947:16;10944:2;;;10981:6;10973;10966:22;10944:2;11023:55;11070:7;11059:8;11055:2;11051:17;11023:55;:::i;:::-;11017:3;11010:5;11006:15;10999:80;;11098:3;11133:41;11170:2;11166;11162:11;11133:41;:::i;:::-;11117:14;;;11110:65;11194:3;11228:11;;;11222:18;11252:16;;;11249:2;;;11286:6;11278;11271:22;11249:2;11327:76;11395:7;11384:8;11380:2;11376:17;11327:76;:::i;:::-;11311:14;;;11304:100;;;;-1:-1:-1;11423:3:90;11464:11;;;11458:18;11442:14;;;11435:42;11315:5;-1:-1:-1;11520:46:90;11562:2;11547:18;;11520:46;:::i;:::-;11510:56;;11612:2;11601:9;11597:18;11591:25;11575:41;;11641:2;11631:8;11628:16;11625:2;;;11662:6;11654;11647:22;11625:2;;11690:62;11744:7;11733:8;11722:9;11718:24;11690:62;:::i;:::-;11680:72;;;10056:1702;;;;;:::o;11763:255::-;11821:6;11874:2;11862:9;11853:7;11849:23;11845:32;11842:2;;;11895:6;11887;11880:22;11842:2;11939:9;11926:23;11958:30;11982:5;11958:30;:::i;12023:259::-;12092:6;12145:2;12133:9;12124:7;12120:23;12116:32;12113:2;;;12166:6;12158;12151:22;12113:2;12203:9;12197:16;12222:30;12246:5;12222:30;:::i;12287:323::-;12354:6;12362;12415:2;12403:9;12394:7;12390:23;12386:32;12383:2;;;12436:6;12428;12421:22;12383:2;12480:9;12467:23;12499:30;12523:5;12499:30;:::i;:::-;12548:5;12600:2;12585:18;;;;12572:32;;-1:-1:-1;;;12373:237:90:o;12615:531::-;12699:6;12707;12715;12723;12776:3;12764:9;12755:7;12751:23;12747:33;12744:2;;;12798:6;12790;12783:22;12744:2;12842:9;12829:23;12861:30;12885:5;12861:30;:::i;:::-;12910:5;-1:-1:-1;12962:2:90;12947:18;;12934:32;;-1:-1:-1;13013:2:90;12998:18;;12985:32;;-1:-1:-1;13069:2:90;13054:18;;13041:32;13082;13041;13082;:::i;:::-;12734:412;;;;-1:-1:-1;12734:412:90;;-1:-1:-1;;12734:412:90:o;13151:681::-;13244:6;13252;13260;13268;13321:3;13309:9;13300:7;13296:23;13292:33;13289:2;;;13343:6;13335;13328:22;13289:2;13387:9;13374:23;13406:30;13430:5;13406:30;:::i;:::-;13455:5;-1:-1:-1;13507:2:90;13492:18;;13479:32;;-1:-1:-1;13563:2:90;13548:18;;13535:32;13576;13535;13576;:::i;:::-;13627:7;-1:-1:-1;13685:2:90;13670:18;;13657:32;-1:-1:-1;;;;;13701:30:90;;13698:2;;;13749:6;13741;13734:22;13698:2;13777:49;13818:7;13809:6;13798:9;13794:22;13777:49;:::i;:::-;13767:59;;;13279:553;;;;;;;:::o;14036:216::-;14105:6;14158:2;14146:9;14137:7;14133:23;14129:32;14126:2;;;14179:6;14171;14164:22;14126:2;14207:39;14236:9;14207:39;:::i;14257:257::-;14325:6;14378:2;14366:9;14357:7;14353:23;14349:32;14346:2;;;14399:6;14391;14384:22;14346:2;14436:9;14430:16;14455:29;14478:5;14455:29;:::i;14519:257::-;14560:3;14598:5;14592:12;14625:6;14620:3;14613:19;14641:63;14697:6;14690:4;14685:3;14681:14;14674:4;14667:5;14663:16;14641:63;:::i;:::-;14758:2;14737:15;-1:-1:-1;;14733:29:90;14724:39;;;;14765:4;14720:50;;14568:208;-1:-1:-1;;14568:208:90:o;14876:274::-;15005:3;15043:6;15037:13;15059:53;15105:6;15100:3;15093:4;15085:6;15081:17;15059:53;:::i;:::-;15128:16;;;;;15013:137;-1:-1:-1;;15013:137:90:o;15155:466::-;15330:3;15368:6;15362:13;15384:53;15430:6;15425:3;15418:4;15410:6;15406:17;15384:53;:::i;:::-;15500:13;;15459:16;;;;15522:57;15500:13;15459:16;15556:4;15544:17;;15522:57;:::i;:::-;15595:20;;15338:283;-1:-1:-1;;;;15338:283:90:o;16511:834::-;16889:3;16884;16880:13;16871:6;16866:3;16862:16;16858:36;16853:3;16846:49;16924:6;16920:1;16915:3;16911:11;16904:27;16961:6;16956:2;16951:3;16947:12;16940:28;16828:3;16996:5;16991:3;16987:15;17054:2;17045:6;17040:3;17036:16;17032:25;17027:2;17022:3;17018:12;17011:47;17088:6;17083:2;17078:3;17074:12;17067:28;17147:2;17138:6;17133:3;17129:16;17125:25;17120:2;17115:3;17111:12;17104:47;;17182:6;17176:3;17171;17167:13;17160:29;17218:6;17212:13;17234:63;17290:6;17284:3;17279;17275:13;17268:4;17260:6;17256:17;17234:63;:::i;:::-;17317:16;;;;17335:3;17313:26;;16836:509;-1:-1:-1;;;;;;;;;16836:509:90:o;18610:314::-;-1:-1:-1;;;;;18785:32:90;;18767:51;;18854:2;18849;18834:18;;18827:30;;;-1:-1:-1;;18874:44:90;;18899:18;;18891:6;18874:44;:::i;19582:217::-;19729:2;19718:9;19711:21;19692:4;19749:44;19789:2;19778:9;19774:18;19766:6;19749:44;:::i;20476:475::-;20699:2;20688:9;20681:21;20662:4;20725:44;20765:2;20754:9;20750:18;20742:6;20725:44;:::i;:::-;20817:9;20809:6;20805:22;20800:2;20789:9;20785:18;20778:50;20845:32;20870:6;20862;20845:32;:::i;:::-;20837:40;;;-1:-1:-1;;;;;20917:6:90;20913:31;20908:2;20897:9;20893:18;20886:59;20671:280;;;;;;:::o;20956:808::-;21285:3;21274:9;21267:22;21248:4;21312:45;21352:3;21341:9;21337:19;21329:6;21312:45;:::i;:::-;21405:9;21397:6;21393:22;21388:2;21377:9;21373:18;21366:50;21433:32;21458:6;21450;21433:32;:::i;:::-;21513:4;21501:17;;;;21496:2;21481:18;;21474:45;-1:-1:-1;;;;;;;21555:31:90;;;;21550:2;21535:18;;21528:59;-1:-1:-1;;;;;21624:32:90;;;;21618:3;21603:19;;21596:61;21706:6;21694:19;21644:3;21673:19;;21666:48;21745:3;21730:19;;;21723:35;21425:40;21257:507;-1:-1:-1;;21257:507:90:o;22804:339::-;23006:2;22988:21;;;23045:2;23025:18;;;23018:30;-1:-1:-1;;;23079:2:90;23064:18;;23057:45;23134:2;23119:18;;22978:165::o;26117:340::-;26319:2;26301:21;;;26358:2;26338:18;;;26331:30;-1:-1:-1;;;26392:2:90;26377:18;;26370:46;26448:2;26433:18;;26291:166::o;26807:336::-;27009:2;26991:21;;;27048:2;27028:18;;;27021:30;-1:-1:-1;;;27082:2:90;27067:18;;27060:42;27134:2;27119:18;;26981:162::o;33781:336::-;33983:2;33965:21;;;34022:2;34002:18;;;33995:30;-1:-1:-1;;;34056:2:90;34041:18;;34034:42;34108:2;34093:18;;33955:162::o;37601:887::-;37804:2;37793:9;37786:21;37862:4;37853:6;37847:13;37843:24;37838:2;37827:9;37823:18;37816:52;37922:2;37914:6;37910:15;37904:22;37899:2;37888:9;37884:18;37877:50;37981:2;37973:6;37969:15;37963:22;37958:2;37947:9;37943:18;37936:50;38051:6;38045:2;38037:6;38033:15;38027:22;38023:35;38017:3;38006:9;38002:19;37995:64;38114:3;38106:6;38102:16;38096:23;38090:3;38079:9;38075:19;38068:52;37767:4;38167:3;38159:6;38155:16;38149:23;38181:52;38228:3;38217:9;38213:19;38199:12;14857:6;14846:18;14834:31;;14824:47;38181:52;;38288:3;38280:6;38276:16;38270:23;38264:3;38253:9;38249:19;38242:52;38343:3;38335:6;38331:16;38325:23;38367:6;38409:2;38404;38393:9;38389:18;38382:30;;38429:53;38477:3;38466:9;38462:19;38446:14;38429:53;:::i;40052:381::-;40261:10;40253:6;40249:23;40238:9;40231:42;40309:2;40304;40293:9;40289:18;40282:30;40212:4;40329:44;40369:2;40358:9;40354:18;40346:6;40329:44;:::i;:::-;40321:52;;40421:4;40413:6;40409:17;40404:2;40393:9;40389:18;40382:45;40221:212;;;;;;:::o;40832:253::-;40904:2;40898:9;40946:4;40934:17;;-1:-1:-1;;;;;40966:34:90;;41002:22;;;40963:62;40960:2;;;41028:18;;:::i;:::-;41064:2;41057:22;40878:207;:::o;41090:255::-;41162:2;41156:9;41204:6;41192:19;;-1:-1:-1;;;;;41226:34:90;;41262:22;;;41223:62;41220:2;;;41288:18;;:::i;41350:255::-;41422:2;41416:9;41464:6;41452:19;;-1:-1:-1;;;;;41486:34:90;;41522:22;;;41483:62;41480:2;;;41548:18;;:::i;41610:275::-;41681:2;41675:9;41746:2;41727:13;;-1:-1:-1;;41723:27:90;41711:40;;-1:-1:-1;;;;;41766:34:90;;41802:22;;;41763:62;41760:2;;;41828:18;;:::i;:::-;41864:2;41857:22;41655:230;;-1:-1:-1;41655:230:90:o;41890:186::-;41938:4;-1:-1:-1;;;;;41963:6:90;41960:30;41957:2;;;41993:18;;:::i;:::-;-1:-1:-1;42059:2:90;42038:15;-1:-1:-1;;42034:29:90;42065:4;42030:40;;41947:129::o;42081:128::-;42121:3;42152:1;42148:6;42145:1;42142:13;42139:2;;;42158:18;;:::i;:::-;-1:-1:-1;42194:9:90;;42129:80::o;42214:217::-;42254:1;42280;42270:2;;-1:-1:-1;;;42305:31:90;;42359:4;42356:1;42349:15;42387:4;42312:1;42377:15;42270:2;-1:-1:-1;42416:9:90;;42260:171::o;42436:422::-;42525:1;42568:5;42525:1;42582:270;42603:7;42593:8;42590:21;42582:270;;;42662:4;42658:1;42654:6;42650:17;42644:4;42641:27;42638:2;;;42671:18;;:::i;:::-;42721:7;42711:8;42707:22;42704:2;;;42741:16;;;;42704:2;42820:22;;;;42780:15;;;;42582:270;;;42586:3;42500:358;;;;;:::o;42863:140::-;42921:5;42950:47;42991:4;42981:8;42977:19;42971:4;43057:5;43087:8;43077:2;;-1:-1:-1;43128:1:90;43142:5;;43077:2;43176:4;43166:2;;-1:-1:-1;43213:1:90;43227:5;;43166:2;43258:4;43276:1;43271:59;;;;43344:1;43339:130;;;;43251:218;;43271:59;43301:1;43292:10;;43315:5;;;43339:130;43376:3;43366:8;43363:17;43360:2;;;43383:18;;:::i;:::-;-1:-1:-1;;43439:1:90;43425:16;;43454:5;;43251:218;;43553:2;43543:8;43540:16;43534:3;43528:4;43525:13;43521:36;43515:2;43505:8;43502:16;43497:2;43491:4;43488:12;43484:35;43481:77;43478:2;;;-1:-1:-1;43590:19:90;;;43622:5;;43478:2;43669:34;43694:8;43688:4;43669:34;:::i;:::-;43739:6;43735:1;43731:6;43727:19;43718:7;43715:32;43712:2;;;43750:18;;:::i;:::-;43788:20;;43067:747;-1:-1:-1;;;43067:747:90:o;43819:168::-;43859:7;43925:1;43921;43917:6;43913:14;43910:1;43907:21;43902:1;43895:9;43888:17;43884:45;43881:2;;;43932:18;;:::i;:::-;-1:-1:-1;43972:9:90;;43871:116::o;43992:125::-;44032:4;44060:1;44057;44054:8;44051:2;;;44065:18;;:::i;:::-;-1:-1:-1;44102:9:90;;44041:76::o;44122:195::-;44160:4;44197;44194:1;44190:12;44229:4;44226:1;44222:12;44254:3;44249;44246:12;44243:2;;;44261:18;;:::i;:::-;44298:13;;;44169:148;-1:-1:-1;;;44169:148:90:o;44322:258::-;44394:1;44404:113;44418:6;44415:1;44412:13;44404:113;;;44494:11;;;44488:18;44475:11;;;44468:39;44440:2;44433:10;44404:113;;;44535:6;44532:1;44529:13;44526:2;;;-1:-1:-1;;44570:1:90;44552:16;;44545:27;44375:205::o;44585:135::-;44624:3;-1:-1:-1;;44645:17:90;;44642:2;;;44665:18;;:::i;:::-;-1:-1:-1;44712:1:90;44701:13;;44632:88::o;44725:127::-;44786:10;44781:3;44777:20;44774:1;44767:31;44817:4;44814:1;44807:15;44841:4;44838:1;44831:15;44857:127;44918:10;44913:3;44909:20;44906:1;44899:31;44949:4;44946:1;44939:15;44973:4;44970:1;44963:15;44989:117;45074:6;45067:5;45063:18;45056:5;45053:29;45043:2;;45096:1;45093;45086:12;45043:2;45033:73;:::o;45111:121::-;45196:10;45189:5;45185:22;45178:5;45175:33;45165:2;;45222:1;45219;45212:12;45237:114;45321:4;45314:5;45310:16;45303:5;45300:27;45290:2;;45341:1;45338;45331:12",
"source": "// contracts/Bridge.sol\r\n// SPDX-License-Identifier: Apache 2\r\n\r\npragma solidity ^0.8.0;\r\n\r\nimport \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\r\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\r\n\r\nimport \"../libraries/external/BytesLib.sol\";\r\n\r\nimport \"./BridgeGetters.sol\";\r\nimport \"./BridgeSetters.sol\";\r\nimport \"./BridgeStructs.sol\";\r\nimport \"./BridgeGovernance.sol\";\r\n\r\nimport \"./token/Token.sol\";\r\nimport \"./token/TokenImplementation.sol\";\r\n\r\ncontract Bridge is BridgeGovernance, ReentrancyGuard {\r\n using BytesLib for bytes;\r\n\r\n /*\r\n * @dev Produce a AssetMeta message for a given token\r\n */\r\n function attestToken(address tokenAddress, uint32 nonce) public payable returns (uint64 sequence) {\r\n // decimals, symbol & token are not part of the core ERC20 token standard, so we need to support contracts that dont implement them\r\n (,bytes memory queriedDecimals) = tokenAddress.staticcall(abi.encodeWithSignature(\"decimals()\"));\r\n (,bytes memory queriedSymbol) = tokenAddress.staticcall(abi.encodeWithSignature(\"symbol()\"));\r\n (,bytes memory queriedName) = tokenAddress.staticcall(abi.encodeWithSignature(\"name()\"));\r\n\r\n uint8 decimals = abi.decode(queriedDecimals, (uint8));\r\n\r\n string memory symbolString = abi.decode(queriedSymbol, (string));\r\n string memory nameString = abi.decode(queriedName, (string));\r\n\r\n bytes32 symbol;\r\n bytes32 name;\r\n assembly {\r\n // first 32 bytes hold string length\r\n symbol := mload(add(symbolString, 32))\r\n name := mload(add(nameString, 32))\r\n }\r\n\r\n BridgeStructs.AssetMeta memory meta = BridgeStructs.AssetMeta({\r\n payloadID : 2,\r\n tokenAddress : bytes32(uint256(uint160(tokenAddress))), // Address of the token. Left-zero-padded if shorter than 32 bytes\r\n tokenChain : chainId(), // Chain ID of the token\r\n decimals : decimals, // Number of decimals of the token (big-endian uint8)\r\n symbol : symbol, // Symbol of the token (UTF-8)\r\n name : name // Name of the token (UTF-8)\r\n });\r\n\r\n bytes memory encoded = encodeAssetMeta(meta);\r\n\r\n sequence = wormhole().publishMessage{\r\n value : msg.value\r\n }(nonce, encoded, finality());\r\n }\r\n\r\n /*\r\n * @notice Send eth through portal by first wrapping it to WETH.\r\n */\r\n function wrapAndTransferETH(\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint256 arbiterFee,\r\n uint32 nonce\r\n ) public payable returns (uint64 sequence) {\r\n BridgeStructs.TransferResult\r\n memory transferResult = _wrapAndTransferETH(arbiterFee);\r\n sequence = logTransfer(\r\n transferResult.tokenChain,\r\n transferResult.tokenAddress,\r\n transferResult.normalizedAmount,\r\n recipientChain,\r\n recipient,\r\n transferResult.normalizedArbiterFee,\r\n transferResult.wormholeFee,\r\n nonce\r\n );\r\n }\r\n\r\n /*\r\n * @notice Send eth through portal by first wrapping it.\r\n *\r\n * @dev This type of transfer is called a \"contract-controlled transfer\".\r\n * There are three differences from a regular token transfer:\r\n * 1) Additional arbitrary payload can be attached to the message\r\n * 2) Only the recipient (typically a contract) can redeem the transaction\r\n * 3) The sender's address (msg.sender) is also included in the transaction payload\r\n *\r\n * With these three additional components, xDapps can implement cross-chain\r\n * composable interactions.\r\n */\r\n function wrapAndTransferETHWithPayload(\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint32 nonce,\r\n bytes memory payload\r\n ) public payable returns (uint64 sequence) {\r\n BridgeStructs.TransferResult\r\n memory transferResult = _wrapAndTransferETH(0);\r\n sequence = logTransferWithPayload(\r\n transferResult.tokenChain,\r\n transferResult.tokenAddress,\r\n transferResult.normalizedAmount,\r\n recipientChain,\r\n recipient,\r\n transferResult.wormholeFee,\r\n nonce,\r\n payload\r\n );\r\n }\r\n\r\n function _wrapAndTransferETH(uint256 arbiterFee) internal returns (BridgeStructs.TransferResult memory transferResult) {\r\n uint wormholeFee = wormhole().messageFee();\r\n\r\n require(wormholeFee < msg.value, \"value is smaller than wormhole fee\");\r\n\r\n uint amount = msg.value - wormholeFee;\r\n\r\n require(arbiterFee <= amount, \"fee is bigger than amount minus wormhole fee\");\r\n\r\n uint normalizedAmount = normalizeAmount(amount, 18);\r\n uint normalizedArbiterFee = normalizeAmount(arbiterFee, 18);\r\n\r\n // refund dust\r\n uint dust = amount - deNormalizeAmount(normalizedAmount, 18);\r\n if (dust > 0) {\r\n payable(msg.sender).transfer(dust);\r\n }\r\n\r\n // deposit into WETH\r\n WETH().deposit{\r\n value : amount - dust\r\n }();\r\n\r\n // track and check outstanding token amounts\r\n bridgeOut(address(WETH()), normalizedAmount);\r\n\r\n transferResult = BridgeStructs.TransferResult({\r\n tokenChain : chainId(),\r\n tokenAddress : bytes32(uint256(uint160(address(WETH())))),\r\n normalizedAmount : normalizedAmount,\r\n normalizedArbiterFee : normalizedArbiterFee,\r\n wormholeFee : wormholeFee\r\n });\r\n }\r\n\r\n /*\r\n * @notice Send ERC20 token through portal.\r\n */\r\n function transferTokens(\r\n address token,\r\n uint256 amount,\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint256 arbiterFee,\r\n uint32 nonce\r\n ) public payable nonReentrant returns (uint64 sequence) {\r\n BridgeStructs.TransferResult memory transferResult = _transferTokens(\r\n token,\r\n amount,\r\n arbiterFee\r\n );\r\n sequence = logTransfer(\r\n transferResult.tokenChain,\r\n transferResult.tokenAddress,\r\n transferResult.normalizedAmount,\r\n recipientChain,\r\n recipient,\r\n transferResult.normalizedArbiterFee,\r\n transferResult.wormholeFee,\r\n nonce\r\n );\r\n }\r\n\r\n /*\r\n * @notice Send ERC20 token through portal.\r\n *\r\n * @dev This type of transfer is called a \"contract-controlled transfer\".\r\n * There are three differences from a regular token transfer:\r\n * 1) Additional arbitrary payload can be attached to the message\r\n * 2) Only the recipient (typically a contract) can redeem the transaction\r\n * 3) The sender's address (msg.sender) is also included in the transaction payload\r\n *\r\n * With these three additional components, xDapps can implement cross-chain\r\n * composable interactions.\r\n */\r\n function transferTokensWithPayload(\r\n address token,\r\n uint256 amount,\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint32 nonce,\r\n bytes memory payload\r\n ) public payable nonReentrant returns (uint64 sequence) {\r\n BridgeStructs.TransferResult memory transferResult = _transferTokens(\r\n token,\r\n amount,\r\n 0\r\n );\r\n sequence = logTransferWithPayload(\r\n transferResult.tokenChain,\r\n transferResult.tokenAddress,\r\n transferResult.normalizedAmount,\r\n recipientChain,\r\n recipient,\r\n transferResult.wormholeFee,\r\n nonce,\r\n payload\r\n );\r\n }\r\n\r\n /*\r\n * @notice Initiate a transfer\r\n */\r\n function _transferTokens(address token, uint256 amount, uint256 arbiterFee) internal returns (BridgeStructs.TransferResult memory transferResult) {\r\n // determine token parameters\r\n uint16 tokenChain;\r\n bytes32 tokenAddress;\r\n if (isWrappedAsset(token)) {\r\n tokenChain = TokenImplementation(token).chainId();\r\n tokenAddress = TokenImplementation(token).nativeContract();\r\n } else {\r\n tokenChain = chainId();\r\n tokenAddress = bytes32(uint256(uint160(token)));\r\n }\r\n\r\n // query tokens decimals\r\n (,bytes memory queriedDecimals) = token.staticcall(abi.encodeWithSignature(\"decimals()\"));\r\n uint8 decimals = abi.decode(queriedDecimals, (uint8));\r\n\r\n // don't deposit dust that can not be bridged due to the decimal shift\r\n amount = deNormalizeAmount(normalizeAmount(amount, decimals), decimals);\r\n\r\n if (tokenChain == chainId()) {\r\n // query own token balance before transfer\r\n (,bytes memory queriedBalanceBefore) = token.staticcall(abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)));\r\n uint256 balanceBefore = abi.decode(queriedBalanceBefore, (uint256));\r\n\r\n // transfer tokens\r\n SafeERC20.safeTransferFrom(IERC20(token), msg.sender, address(this), amount);\r\n\r\n // query own token balance after transfer\r\n (,bytes memory queriedBalanceAfter) = token.staticcall(abi.encodeWithSelector(IERC20.balanceOf.selector, address(this)));\r\n uint256 balanceAfter = abi.decode(queriedBalanceAfter, (uint256));\r\n\r\n // correct amount for potential transfer fees\r\n amount = balanceAfter - balanceBefore;\r\n } else {\r\n SafeERC20.safeTransferFrom(IERC20(token), msg.sender, address(this), amount);\r\n\r\n TokenImplementation(token).burn(address(this), amount);\r\n }\r\n\r\n // normalize amounts decimals\r\n uint256 normalizedAmount = normalizeAmount(amount, decimals);\r\n uint256 normalizedArbiterFee = normalizeAmount(arbiterFee, decimals);\r\n\r\n // track and check outstanding token amounts\r\n if (tokenChain == chainId()) {\r\n bridgeOut(token, normalizedAmount);\r\n }\r\n\r\n transferResult = BridgeStructs.TransferResult({\r\n tokenChain : tokenChain,\r\n tokenAddress : tokenAddress,\r\n normalizedAmount : normalizedAmount,\r\n normalizedArbiterFee : normalizedArbiterFee,\r\n wormholeFee : msg.value\r\n });\r\n }\r\n\r\n function normalizeAmount(uint256 amount, uint8 decimals) internal pure returns(uint256){\r\n if (decimals > 8) {\r\n amount /= 10 ** (decimals - 8);\r\n }\r\n return amount;\r\n }\r\n\r\n function deNormalizeAmount(uint256 amount, uint8 decimals) internal pure returns(uint256){\r\n if (decimals > 8) {\r\n amount *= 10 ** (decimals - 8);\r\n }\r\n return amount;\r\n }\r\n\r\n function logTransfer(\r\n uint16 tokenChain,\r\n bytes32 tokenAddress,\r\n uint256 amount,\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint256 fee,\r\n uint256 callValue,\r\n uint32 nonce\r\n ) internal returns (uint64 sequence) {\r\n require(fee <= amount, \"fee exceeds amount\");\r\n\r\n BridgeStructs.Transfer memory transfer = BridgeStructs.Transfer({\r\n payloadID: 1,\r\n amount: amount,\r\n tokenAddress: tokenAddress,\r\n tokenChain: tokenChain,\r\n to: recipient,\r\n toChain: recipientChain,\r\n fee: fee\r\n });\r\n\r\n sequence = wormhole().publishMessage{value: callValue}(\r\n nonce,\r\n encodeTransfer(transfer),\r\n finality()\r\n );\r\n }\r\n\r\n /*\r\n * @dev Publish a token transfer message with payload.\r\n *\r\n * @return The sequence number of the published message.\r\n */\r\n function logTransferWithPayload(\r\n uint16 tokenChain,\r\n bytes32 tokenAddress,\r\n uint256 amount,\r\n uint16 recipientChain,\r\n bytes32 recipient,\r\n uint256 callValue,\r\n uint32 nonce,\r\n bytes memory payload\r\n ) internal returns (uint64 sequence) {\r\n BridgeStructs.TransferWithPayload memory transfer = BridgeStructs\r\n .TransferWithPayload({\r\n payloadID: 3,\r\n amount: amount,\r\n tokenAddress: tokenAddress,\r\n tokenChain: tokenChain,\r\n to: recipient,\r\n toChain: recipientChain,\r\n fromAddress : bytes32(uint256(uint160(msg.sender))),\r\n payload: payload\r\n });\r\n\r\n sequence = wormhole().publishMessage{value: callValue}(\r\n nonce,\r\n encodeTransferWithPayload(transfer),\r\n finality()\r\n );\r\n }\r\n\r\n function updateWrapped(bytes memory encodedVm) external returns (address token) {\r\n (IWormhole.VM memory vm, bool valid, string memory reason) = wormhole().parseAndVerifyVM(encodedVm);\r\n\r\n require(valid, reason);\r\n require(verifyBridgeVM(vm), \"invalid emitter\");\r\n\r\n BridgeStructs.AssetMeta memory meta = parseAssetMeta(vm.payload);\r\n return _updateWrapped(meta, vm.sequence);\r\n }\r\n\r\n function _updateWrapped(BridgeStructs.AssetMeta memory meta, uint64 sequence) internal returns (address token) {\r\n address wrapped = wrappedAsset(meta.tokenChain, meta.tokenAddress);\r\n require(wrapped != address(0), \"wrapped asset does not exists\");\r\n\r\n // Update metadata\r\n TokenImplementation(wrapped).updateDetails(bytes32ToString(meta.name), bytes32ToString(meta.symbol), sequence);\r\n\r\n return wrapped;\r\n }\r\n\r\n function createWrapped(bytes memory encodedVm) external returns (address token) {\r\n (IWormhole.VM memory vm, bool valid, string memory reason) = wormhole().parseAndVerifyVM(encodedVm);\r\n\r\n require(valid, reason);\r\n require(verifyBridgeVM(vm), \"invalid emitter\");\r\n\r\n BridgeStructs.AssetMeta memory meta = parseAssetMeta(vm.payload);\r\n return _createWrapped(meta, vm.sequence);\r\n }\r\n\r\n // Creates a wrapped asset using AssetMeta\r\n function _createWrapped(BridgeStructs.AssetMeta memory meta, uint64 sequence) internal returns (address token) {\r\n require(meta.tokenChain != chainId(), \"can only wrap tokens from foreign chains\");\r\n require(wrappedAsset(meta.tokenChain, meta.tokenAddress) == address(0), \"wrapped asset already exists\");\r\n\r\n // initialize the TokenImplementation\r\n bytes memory initialisationArgs = abi.encodeWithSelector(\r\n TokenImplementation.initialize.selector,\r\n bytes32ToString(meta.name),\r\n bytes32ToString(meta.symbol),\r\n meta.decimals,\r\n sequence,\r\n\r\n address(this),\r\n\r\n meta.tokenChain,\r\n meta.tokenAddress\r\n );\r\n\r\n // initialize the BeaconProxy\r\n bytes memory constructorArgs = abi.encode(address(this), initialisationArgs);\r\n\r\n // deployment code\r\n bytes memory bytecode = abi.encodePacked(type(BridgeToken).creationCode, constructorArgs);\r\n\r\n bytes32 salt = keccak256(abi.encodePacked(meta.tokenChain, meta.tokenAddress));\r\n\r\n assembly {\r\n token := create2(0, add(bytecode, 0x20), mload(bytecode), salt)\r\n\r\n if iszero(extcodesize(token)) {\r\n revert(0, 0)\r\n }\r\n }\r\n\r\n setWrappedAsset(meta.tokenChain, meta.tokenAddress, token);\r\n }\r\n\r\n /*\r\n * @notice Complete a contract-controlled transfer of an ERC20 token.\r\n *\r\n * @dev The transaction can only be redeemed by the recipient, typically a\r\n * contract.\r\n *\r\n * @param encodedVm A byte array containing a VAA signed by the guardians.\r\n *\r\n * @return The byte array representing a BridgeStructs.TransferWithPayload.\r\n */\r\n function completeTransferWithPayload(bytes memory encodedVm) public returns (bytes memory) {\r\n return _completeTransfer(encodedVm, false);\r\n }\r\n\r\n /*\r\n * @notice Complete a contract-controlled transfer of WETH, and unwrap to ETH.\r\n *\r\n * @dev The transaction can only be redeemed by the recipient, typically a\r\n * contract.\r\n *\r\n * @param encodedVm A byte array containing a VAA signed by the guardians.\r\n *\r\n * @return The byte array representing a BridgeStructs.TransferWithPayload.\r\n */\r\n function completeTransferAndUnwrapETHWithPayload(bytes memory encodedVm) public returns (bytes memory) {\r\n return _completeTransfer(encodedVm, true);\r\n }\r\n\r\n /*\r\n * @notice Complete a transfer of an ERC20 token.\r\n *\r\n * @dev The msg.sender gets paid the associated fee.\r\n *\r\n * @param encodedVm A byte array containing a VAA signed by the guardians.\r\n */\r\n function completeTransfer(bytes memory encodedVm) public {\r\n _completeTransfer(encodedVm, false);\r\n }\r\n\r\n /*\r\n * @notice Complete a transfer of WETH and unwrap to eth.\r\n *\r\n * @dev The msg.sender gets paid the associated fee.\r\n *\r\n * @param encodedVm A byte array containing a VAA signed by the guardians.\r\n */\r\n function completeTransferAndUnwrapETH(bytes memory encodedVm) public {\r\n _completeTransfer(encodedVm, true);\r\n }\r\n\r\n /*\r\n * @dev Truncate a 32 byte array to a 20 byte address.\r\n * Reverts if the array contains non-0 bytes in the first 12 bytes.\r\n *\r\n * @param bytes32 bytes The 32 byte array to be converted.\r\n */\r\n function _truncateAddress(bytes32 b) internal pure returns (address) {\r\n require(bytes12(b) == 0, \"invalid EVM address\");\r\n return address(uint160(uint256(b)));\r\n }\r\n\r\n // Execute a Transfer message\r\n function _completeTransfer(bytes memory encodedVm, bool unwrapWETH) internal returns (bytes memory) {\r\n (IWormhole.VM memory vm, bool valid, string memory reason) = wormhole().parseAndVerifyVM(encodedVm);\r\n\r\n require(valid, reason);\r\n require(verifyBridgeVM(vm), \"invalid emitter\");\r\n\r\n BridgeStructs.Transfer memory transfer = _parseTransferCommon(vm.payload);\r\n\r\n // payload 3 must be redeemed by the designated proxy contract\r\n address transferRecipient = _truncateAddress(transfer.to);\r\n if (transfer.payloadID == 3) {\r\n require(msg.sender == transferRecipient, \"invalid sender\");\r\n }\r\n\r\n require(!isTransferCompleted(vm.hash), \"transfer already completed\");\r\n setTransferCompleted(vm.hash);\r\n\r\n require(transfer.toChain == chainId(), \"invalid target chain\");\r\n\r\n IERC20 transferToken;\r\n if (transfer.tokenChain == chainId()) {\r\n transferToken = IERC20(_truncateAddress(transfer.tokenAddress));\r\n\r\n // track outstanding token amounts\r\n bridgedIn(address(transferToken), transfer.amount);\r\n } else {\r\n address wrapped = wrappedAsset(transfer.tokenChain, transfer.tokenAddress);\r\n require(wrapped != address(0), \"no wrapper for this token created yet\");\r\n\r\n transferToken = IERC20(wrapped);\r\n }\r\n\r\n require(unwrapWETH == false || address(transferToken) == address(WETH()), \"invalid token, can only unwrap WETH\");\r\n\r\n // query decimals\r\n (,bytes memory queriedDecimals) = address(transferToken).staticcall(abi.encodeWithSignature(\"decimals()\"));\r\n uint8 decimals = abi.decode(queriedDecimals, (uint8));\r\n\r\n // adjust decimals\r\n uint256 nativeAmount = deNormalizeAmount(transfer.amount, decimals);\r\n uint256 nativeFee = deNormalizeAmount(transfer.fee, decimals);\r\n\r\n // transfer fee to arbiter\r\n if (nativeFee > 0 && transferRecipient != msg.sender) {\r\n require(nativeFee <= nativeAmount, \"fee higher than transferred amount\");\r\n\r\n if (unwrapWETH) {\r\n WETH().withdraw(nativeFee);\r\n\r\n payable(msg.sender).transfer(nativeFee);\r\n } else {\r\n if (transfer.tokenChain != chainId()) {\r\n // mint wrapped asset\r\n TokenImplementation(address(transferToken)).mint(msg.sender, nativeFee);\r\n } else {\r\n SafeERC20.safeTransfer(transferToken, msg.sender, nativeFee);\r\n }\r\n }\r\n } else {\r\n // set fee to zero in case transferRecipient == feeRecipient\r\n nativeFee = 0;\r\n }\r\n\r\n // transfer bridged amount to recipient\r\n uint transferAmount = nativeAmount - nativeFee;\r\n\r\n if (unwrapWETH) {\r\n WETH().withdraw(transferAmount);\r\n\r\n payable(transferRecipient).transfer(transferAmount);\r\n } else {\r\n if (transfer.tokenChain != chainId()) {\r\n // mint wrapped asset\r\n TokenImplementation(address(transferToken)).mint(transferRecipient, transferAmount);\r\n } else {\r\n SafeERC20.safeTransfer(transferToken, transferRecipient, transferAmount);\r\n }\r\n }\r\n\r\n return vm.payload;\r\n }\r\n\r\n function bridgeOut(address token, uint normalizedAmount) internal {\r\n uint outstanding = outstandingBridged(token);\r\n require(outstanding + normalizedAmount <= type(uint64).max, \"transfer exceeds max outstanding bridged token amount\");\r\n setOutstandingBridged(token, outstanding + normalizedAmount);\r\n }\r\n\r\n function bridgedIn(address token, uint normalizedAmount) internal {\r\n setOutstandingBridged(token, outstandingBridged(token) - normalizedAmount);\r\n }\r\n\r\n function verifyBridgeVM(IWormhole.VM memory vm) internal view returns (bool){\r\n require(!isFork(), \"invalid fork\");\r\n return bridgeContracts(vm.emitterChainId) == vm.emitterAddress;\r\n }\r\n\r\n function encodeAssetMeta(BridgeStructs.AssetMeta memory meta) public pure returns (bytes memory encoded) {\r\n encoded = abi.encodePacked(\r\n meta.payloadID,\r\n meta.tokenAddress,\r\n meta.tokenChain,\r\n meta.decimals,\r\n meta.symbol,\r\n meta.name\r\n );\r\n }\r\n\r\n function encodeTransfer(BridgeStructs.Transfer memory transfer) public pure returns (bytes memory encoded) {\r\n encoded = abi.encodePacked(\r\n transfer.payloadID,\r\n transfer.amount,\r\n transfer.tokenAddress,\r\n transfer.tokenChain,\r\n transfer.to,\r\n transfer.toChain,\r\n transfer.fee\r\n );\r\n }\r\n\r\n function encodeTransferWithPayload(BridgeStructs.TransferWithPayload memory transfer) public pure returns (bytes memory encoded) {\r\n encoded = abi.encodePacked(\r\n transfer.payloadID,\r\n transfer.amount,\r\n transfer.tokenAddress,\r\n transfer.tokenChain,\r\n transfer.to,\r\n transfer.toChain,\r\n transfer.fromAddress,\r\n transfer.payload\r\n );\r\n }\r\n\r\n function parsePayloadID(bytes memory encoded) public pure returns (uint8 payloadID) {\r\n payloadID = encoded.toUint8(0);\r\n }\r\n\r\n /*\r\n * @dev Parse a token metadata attestation (payload id 2)\r\n */\r\n function parseAssetMeta(bytes memory encoded) public pure returns (BridgeStructs.AssetMeta memory meta) {\r\n uint index = 0;\r\n\r\n meta.payloadID = encoded.toUint8(index);\r\n index += 1;\r\n\r\n require(meta.payloadID == 2, \"invalid AssetMeta\");\r\n\r\n meta.tokenAddress = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n meta.tokenChain = encoded.toUint16(index);\r\n index += 2;\r\n\r\n meta.decimals = encoded.toUint8(index);\r\n index += 1;\r\n\r\n meta.symbol = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n meta.name = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n require(encoded.length == index, \"invalid AssetMeta\");\r\n }\r\n\r\n /*\r\n * @dev Parse a token transfer (payload id 1).\r\n *\r\n * @params encoded The byte array corresponding to the token transfer (not\r\n * the whole VAA, only the payload)\r\n */\r\n function parseTransfer(bytes memory encoded) public pure returns (BridgeStructs.Transfer memory transfer) {\r\n uint index = 0;\r\n\r\n transfer.payloadID = encoded.toUint8(index);\r\n index += 1;\r\n\r\n require(transfer.payloadID == 1, \"invalid Transfer\");\r\n\r\n transfer.amount = encoded.toUint256(index);\r\n index += 32;\r\n\r\n transfer.tokenAddress = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n transfer.tokenChain = encoded.toUint16(index);\r\n index += 2;\r\n\r\n transfer.to = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n transfer.toChain = encoded.toUint16(index);\r\n index += 2;\r\n\r\n transfer.fee = encoded.toUint256(index);\r\n index += 32;\r\n\r\n require(encoded.length == index, \"invalid Transfer\");\r\n }\r\n\r\n /*\r\n * @dev Parse a token transfer with payload (payload id 3).\r\n *\r\n * @params encoded The byte array corresponding to the token transfer (not\r\n * the whole VAA, only the payload)\r\n */\r\n function parseTransferWithPayload(bytes memory encoded) public pure returns (BridgeStructs.TransferWithPayload memory transfer) {\r\n uint index = 0;\r\n\r\n transfer.payloadID = encoded.toUint8(index);\r\n index += 1;\r\n\r\n require(transfer.payloadID == 3, \"invalid Transfer\");\r\n\r\n transfer.amount = encoded.toUint256(index);\r\n index += 32;\r\n\r\n transfer.tokenAddress = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n transfer.tokenChain = encoded.toUint16(index);\r\n index += 2;\r\n\r\n transfer.to = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n transfer.toChain = encoded.toUint16(index);\r\n index += 2;\r\n\r\n transfer.fromAddress = encoded.toBytes32(index);\r\n index += 32;\r\n\r\n transfer.payload = encoded.slice(index, encoded.length - index);\r\n }\r\n\r\n /*\r\n * @dev Parses either a type 1 transfer or a type 3 transfer (\"transfer with\r\n * payload\") as a Transfer struct. The fee is set to 0 for type 3\r\n * transfers, since they have no fees associated with them.\r\n *\r\n * The sole purpose of this function is to get around the local\r\n * variable count limitation in _completeTransfer.\r\n */\r\n function _parseTransferCommon(bytes memory encoded) public pure returns (BridgeStructs.Transfer memory transfer) {\r\n uint8 payloadID = parsePayloadID(encoded);\r\n\r\n if (payloadID == 1) {\r\n transfer = parseTransfer(encoded);\r\n } else if (payloadID == 3) {\r\n BridgeStructs.TransferWithPayload memory t = parseTransferWithPayload(encoded);\r\n transfer.payloadID = 3;\r\n transfer.amount = t.amount;\r\n transfer.tokenAddress = t.tokenAddress;\r\n transfer.tokenChain = t.tokenChain;\r\n transfer.to = t.to;\r\n transfer.toChain = t.toChain;\r\n // Type 3 payloads don't have fees.\r\n transfer.fee = 0;\r\n } else {\r\n revert(\"Invalid payload id\");\r\n }\r\n }\r\n\r\n function bytes32ToString(bytes32 input) internal pure returns (string memory) {\r\n uint256 i;\r\n while (i < 32 && input[i] != 0) {\r\n i++;\r\n }\r\n bytes memory array = new bytes(i);\r\n for (uint c = 0; c < i; c++) {\r\n array[c] = input[c];\r\n }\r\n return string(array);\r\n }\r\n\r\n // we need to accept ETH sends to unwrap WETH\r\n receive() external payable {}\r\n}\r\n",
- "sourcePath": "G:/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
+ "sourcePath": "G:/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
"ast": {
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
"exportedSymbols": {
"Address": [
13468
@@ -32313,7 +32313,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol",
"file": "../libraries/external/BytesLib.sol",
"id": 2442,
"nameLocation": "-1:-1:-1",
@@ -32325,7 +32325,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol",
"file": "./BridgeGetters.sol",
"id": 2443,
"nameLocation": "-1:-1:-1",
@@ -32337,7 +32337,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol",
"file": "./BridgeSetters.sol",
"id": 2444,
"nameLocation": "-1:-1:-1",
@@ -32349,7 +32349,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol",
"file": "./BridgeStructs.sol",
"id": 2445,
"nameLocation": "-1:-1:-1",
@@ -32361,7 +32361,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol",
"file": "./BridgeGovernance.sol",
"id": 2446,
"nameLocation": "-1:-1:-1",
@@ -32373,7 +32373,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol",
"file": "./token/Token.sol",
"id": 2447,
"nameLocation": "-1:-1:-1",
@@ -32385,7 +32385,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol",
"file": "./token/TokenImplementation.sol",
"id": 2448,
"nameLocation": "-1:-1:-1",
@@ -61521,7 +61521,7 @@
"src": "65:27594:9"
},
"legacyAST": {
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/Bridge.sol",
"exportedSymbols": {
"Address": [
13468
@@ -61660,7 +61660,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/libraries/external/BytesLib.sol",
"file": "../libraries/external/BytesLib.sol",
"id": 2442,
"nameLocation": "-1:-1:-1",
@@ -61672,7 +61672,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGetters.sol",
"file": "./BridgeGetters.sol",
"id": 2443,
"nameLocation": "-1:-1:-1",
@@ -61684,7 +61684,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeSetters.sol",
"file": "./BridgeSetters.sol",
"id": 2444,
"nameLocation": "-1:-1:-1",
@@ -61696,7 +61696,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeStructs.sol",
"file": "./BridgeStructs.sol",
"id": 2445,
"nameLocation": "-1:-1:-1",
@@ -61708,7 +61708,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/BridgeGovernance.sol",
"file": "./BridgeGovernance.sol",
"id": 2446,
"nameLocation": "-1:-1:-1",
@@ -61720,7 +61720,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/Token.sol",
"file": "./token/Token.sol",
"id": 2447,
"nameLocation": "-1:-1:-1",
@@ -61732,7 +61732,7 @@
"unitAlias": ""
},
{
- "absolutePath": "/G/WorkProfile/klaytn/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol",
+ "absolutePath": "/G/WorkProfile/kaiachain/workspace/DEV/wormhole/ethereum/contracts/bridge/token/TokenImplementation.sol",
"file": "./token/TokenImplementation.sol",
"id": 2448,
"nameLocation": "-1:-1:-1",
diff --git a/packages/bridges-starter-kit/wormhole/package.json b/packages/bridges-starter-kit/wormhole/package.json
index 5c672e1..0c82ade 100644
--- a/packages/bridges-starter-kit/wormhole/package.json
+++ b/packages/bridges-starter-kit/wormhole/package.json
@@ -1,5 +1,5 @@
{
- "name": "@klaytn/kss-bridges-wormhole",
+ "name": "@kaiachain/kss-bridges-wormhole",
"version": "1.0.0",
"description": "Typescript and Javascript client and use-cases for wormhole",
"exports": {
@@ -8,7 +8,7 @@
},
"repository": {
"type": "git",
- "url": "https://github.com/klaytn/klaytn-service-sdk.git"
+ "url": "https://github.com/kaiachain/kaia-service-sdk.git"
},
"scripts": {
"test-attest": "ts-node use-cases/attest.ts",
@@ -19,14 +19,15 @@
"lint:fix": "eslint --ext .ts --fix ."
},
"keywords": [
- "klaytn",
+ "kaia",
+ "kaiachain",
"wormhole",
"bridge",
"attest",
"transfer",
"kss-bridges-wormhole"
],
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "GPL-3.0",
"dependencies": {
"@certusone/wormhole-sdk": "^0.9.0",
diff --git a/packages/bridges-starter-kit/wormhole/test/attest.test.ts b/packages/bridges-starter-kit/wormhole/test/attest.test.ts
index d080c63..b73882b 100644
--- a/packages/bridges-starter-kit/wormhole/test/attest.test.ts
+++ b/packages/bridges-starter-kit/wormhole/test/attest.test.ts
@@ -7,7 +7,7 @@ describe("attest", () => {
const source = {
token: "0x0FD3f122A9B6471928B60eeE73bF35D895C4Ee01", // Token to be attested
privatekey: "",
- rpcUrl: "https://api.baobab.klaytn.net:8651",
+ rpcUrl: "https://public-en.kairos.node.kaia.io",
coreBridge: "0x1830CC6eE66c84D2F177B94D544967c774E624cA",
tokenBridge: "0xC7A13BE098720840dEa132D860fDfa030884b09A",
wormholeChainId: "13"
diff --git a/packages/bridges-starter-kit/wormhole/test/transferBasic.test.ts b/packages/bridges-starter-kit/wormhole/test/transferBasic.test.ts
index cbe454d..3a69378 100644
--- a/packages/bridges-starter-kit/wormhole/test/transferBasic.test.ts
+++ b/packages/bridges-starter-kit/wormhole/test/transferBasic.test.ts
@@ -7,7 +7,7 @@ describe("transfer", () => {
const source = {
token: "0x0FD3f122A9B6471928B60eeE73bF35D895C4Ee01",
privatekey: "",
- rpcUrl: "https://api.baobab.klaytn.net:8651",
+ rpcUrl: "https://public-en.kairos.node.kaia.io",
coreBridge: "0x1830CC6eE66c84D2F177B94D544967c774E624cA",
tokenBridge: "0xC7A13BE098720840dEa132D860fDfa030884b09A",
wormholeChainId: "13"
diff --git a/packages/dexs-starter-kit/LICENSE b/packages/dexs-starter-kit/LICENSE
index 7b917df..707f37e 100644
--- a/packages/dexs-starter-kit/LICENSE
+++ b/packages/dexs-starter-kit/LICENSE
@@ -1,6 +1,7 @@
MIT License
-Copyright (c) 2023 Klaytn Foundation
+Copyright (c) 2024 Kaia DLT Foundation
+Copyright (c) 2023-2024 Klaytn Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/packages/dexs-starter-kit/README.md b/packages/dexs-starter-kit/README.md
index fd4a5ea..db2a726 100644
--- a/packages/dexs-starter-kit/README.md
+++ b/packages/dexs-starter-kit/README.md
@@ -1,11 +1,11 @@
# DEX Starter Kit
-This module includes the integration of [@klaytn/dex-contracts](https://github.com/klaytn/klaytn-dex-contracts).
+This module includes the integration of [@kaiachain/dex-contracts](https://github.com/kaiachain/open-dex-contracts).
# How to setup locally
`npm install`
# Overview
For details information & documentation of each module of this package please refer to the docs linked below.
-- #### [Folder Structure of the package](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/dexs-starter-kit/docs/FolderStructure.md)
-- #### [Prerequisites](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/dexs-starter-kit/docs/Prerequisites.md)
-- #### [How To use](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/dexs-starter-kit/docs/HowToUse.md)
+- #### [Folder Structure of the package](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/dexs-starter-kit/docs/FolderStructure.md)
+- #### [Prerequisites](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/dexs-starter-kit/docs/Prerequisites.md)
+- #### [How To use](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/dexs-starter-kit/docs/HowToUse.md)
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/access/KAccessControl__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/access/KAccessControl__factory.ts
index 0ff7f9d..e36fea6 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/access/KAccessControl__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/access/KAccessControl__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
KAccessControl,
KAccessControlInterface,
-} from "../../../../../@klaytn/contracts/KIP/access/KAccessControl";
+} from "../../../../../@kaiachain/contracts/KIP/access/KAccessControl";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver__factory.ts
index f9b39d4..67c2577 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IKIP7Receiver,
IKIP7ReceiverInterface,
-} from "../../../../../../@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver";
+} from "../../../../../../@kaiachain/contracts/KIP/token/KIP7/IKIP7Receiver";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7__factory.ts
index 3f15636..3102718 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/IKIP7__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IKIP7,
IKIP7Interface,
-} from "../../../../../../@klaytn/contracts/KIP/token/KIP7/IKIP7";
+} from "../../../../../../@kaiachain/contracts/KIP/token/KIP7/IKIP7";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/KIP7__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/KIP7__factory.ts
index 915d998..b772495 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/KIP7__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/KIP7__factory.ts
@@ -7,7 +7,7 @@ import type { PromiseOrValue } from "../../../../../../common";
import type {
KIP7,
KIP7Interface,
-} from "../../../../../../@klaytn/contracts/KIP/token/KIP7/KIP7";
+} from "../../../../../../@kaiachain/contracts/KIP/token/KIP7/KIP7";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata__factory.ts
index 6bfbc91..b10a19f 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IKIP7Metadata,
IKIP7MetadataInterface,
-} from "../../../../../../../@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata";
+} from "../../../../../../../@kaiachain/contracts/KIP/token/KIP7/extensions/IKIP7Metadata";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes__factory.ts
index affb77f..76539b1 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
KIP7Votes,
KIP7VotesInterface,
-} from "../../../../../../../@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes";
+} from "../../../../../../../@kaiachain/contracts/KIP/token/KIP7/extensions/KIP7Votes";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit__factory.ts
index ae9e8b3..e5610dd 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IKIP7Permit,
IKIP7PermitInterface,
-} from "../../../../../../../../@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit";
+} from "../../../../../../../../@kaiachain/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit__factory.ts
index bf5e36c..84f6c54 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
KIP7Permit,
KIP7PermitInterface,
-} from "../../../../../../../../@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit";
+} from "../../../../../../../../@kaiachain/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/IKIP13__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/IKIP13__factory.ts
index 9ba1bc6..6c1d607 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/IKIP13__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/IKIP13__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IKIP13,
IKIP13Interface,
-} from "../../../../../../@klaytn/contracts/KIP/utils/introspection/IKIP13";
+} from "../../../../../../@kaiachain/contracts/KIP/utils/introspection/IKIP13";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/KIP13__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/KIP13__factory.ts
index 9a92e82..c98a3e8 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/KIP13__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/KIP/utils/introspection/KIP13__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
KIP13,
KIP13Interface,
-} from "../../../../../../@klaytn/contracts/KIP/utils/introspection/KIP13";
+} from "../../../../../../@kaiachain/contracts/KIP/utils/introspection/KIP13";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/AccessControl__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/AccessControl__factory.ts
index 28c51a0..ae4cb87 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/AccessControl__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/AccessControl__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
AccessControl,
AccessControlInterface,
-} from "../../../../@klaytn/contracts/access/AccessControl";
+} from "../../../../@kaiachain/contracts/access/AccessControl";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/IAccessControl__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/IAccessControl__factory.ts
index 102b686..ff7c2aa 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/IAccessControl__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/IAccessControl__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IAccessControl,
IAccessControlInterface,
-} from "../../../../@klaytn/contracts/access/IAccessControl";
+} from "../../../../@kaiachain/contracts/access/IAccessControl";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/Ownable__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/Ownable__factory.ts
index 74bc675..3a63283 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/Ownable__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/access/Ownable__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
Ownable,
OwnableInterface,
-} from "../../../../@klaytn/contracts/access/Ownable";
+} from "../../../../@kaiachain/contracts/access/Ownable";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/governance/utils/IVotes__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/governance/utils/IVotes__factory.ts
index 4eaf507..288a02d 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/governance/utils/IVotes__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/governance/utils/IVotes__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IVotes,
IVotesInterface,
-} from "../../../../../@klaytn/contracts/governance/utils/IVotes";
+} from "../../../../../@kaiachain/contracts/governance/utils/IVotes";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/ERC165__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/ERC165__factory.ts
index 862551e..8b02d5a 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/ERC165__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/ERC165__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
ERC165,
ERC165Interface,
-} from "../../../../../@klaytn/contracts/utils/introspection/ERC165";
+} from "../../../../../@kaiachain/contracts/utils/introspection/ERC165";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/IERC165__factory.ts b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/IERC165__factory.ts
index 3e88e05..a4b6dd4 100644
--- a/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/IERC165__factory.ts
+++ b/packages/dexs-starter-kit/contracts/factories/@klaytn/contracts/utils/introspection/IERC165__factory.ts
@@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers";
import type {
IERC165,
IERC165Interface,
-} from "../../../../../@klaytn/contracts/utils/introspection/IERC165";
+} from "../../../../../@kaiachain/contracts/utils/introspection/IERC165";
const _abi = [
{
diff --git a/packages/dexs-starter-kit/contracts/factories/index.ts b/packages/dexs-starter-kit/contracts/factories/index.ts
index c5fd4df..6397da0 100644
--- a/packages/dexs-starter-kit/contracts/factories/index.ts
+++ b/packages/dexs-starter-kit/contracts/factories/index.ts
@@ -1,5 +1,4 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
-// export * as klaytn from "./@klaytn";
export * as contracts from "./contracts";
diff --git a/packages/dexs-starter-kit/contracts/index.ts b/packages/dexs-starter-kit/contracts/index.ts
index 4e3ded8..74502d0 100644
--- a/packages/dexs-starter-kit/contracts/index.ts
+++ b/packages/dexs-starter-kit/contracts/index.ts
@@ -1,43 +1,13 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
-import type * as klaytn from "./@klaytn";
-export type { klaytn };
+import type * as kaiachain from "./@kaiachain";
+export type { kaiachain };
import type * as contracts from "./contracts";
export type { contracts };
export * as factories from "./factories";
-// export type { AccessControl } from "./@klaytn/contracts/access/AccessControl";
-// export { AccessControl__factory } from "./factories/@klaytn/contracts/access/AccessControl__factory";
-// export type { IAccessControl } from "./@klaytn/contracts/access/IAccessControl";
-// export { IAccessControl__factory } from "./factories/@klaytn/contracts/access/IAccessControl__factory";
-// export type { Ownable } from "./@klaytn/contracts/access/Ownable";
-// export { Ownable__factory } from "./factories/@klaytn/contracts/access/Ownable__factory";
-// export type { IVotes } from "./@klaytn/contracts/governance/utils/IVotes";
-// export { IVotes__factory } from "./factories/@klaytn/contracts/governance/utils/IVotes__factory";
-// export type { KAccessControl } from "./@klaytn/contracts/KIP/access/KAccessControl";
-// export { KAccessControl__factory } from "./factories/@klaytn/contracts/KIP/access/KAccessControl__factory";
-// export type { IKIP7Permit } from "./@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit";
-// export { IKIP7Permit__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-IKIP7Permit.sol/IKIP7Permit__factory";
-// export type { KIP7Permit } from "./@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit";
-// export { KIP7Permit__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/extensions/draft-KIP7Permit.sol/KIP7Permit__factory";
-// export type { IKIP7Metadata } from "./@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata";
-// export { IKIP7Metadata__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/extensions/IKIP7Metadata__factory";
-// export type { KIP7Votes } from "./@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes";
-// export { KIP7Votes__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/extensions/KIP7Votes__factory";
-// export type { IKIP7 } from "./@klaytn/contracts/KIP/token/KIP7/IKIP7";
-// export { IKIP7__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/IKIP7__factory";
-// export type { IKIP7Receiver } from "./@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver";
-// export { IKIP7Receiver__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/IKIP7Receiver__factory";
-export type { KIP7 } from "./@klaytn/contracts/KIP/token/KIP7/KIP7";
-export { KIP7__factory } from "./factories/@klaytn/contracts/KIP/token/KIP7/KIP7__factory";
-// export type { IKIP13 } from "./@klaytn/contracts/KIP/utils/introspection/IKIP13";
-// export { IKIP13__factory } from "./factories/@klaytn/contracts/KIP/utils/introspection/IKIP13__factory";
-// export type { KIP13 } from "./@klaytn/contracts/KIP/utils/introspection/KIP13";
-// export { KIP13__factory } from "./factories/@klaytn/contracts/KIP/utils/introspection/KIP13__factory";
-// export type { ERC165 } from "./@klaytn/contracts/utils/introspection/ERC165";
-// export { ERC165__factory } from "./factories/@klaytn/contracts/utils/introspection/ERC165__factory";
-// export type { IERC165 } from "./@klaytn/contracts/utils/introspection/IERC165";
-// export { IERC165__factory } from "./factories/@klaytn/contracts/utils/introspection/IERC165__factory";
+export type { KIP7 } from "./@kaiachain/contracts/KIP/token/KIP7/KIP7";
+export { KIP7__factory } from "./factories/@kaiachain/contracts/KIP/token/KIP7/KIP7__factory";
export type { Farming } from "./contracts/farming/Farming";
export { Farming__factory } from "./factories/contracts/farming/Farming__factory";
export type { StakingFactory } from "./contracts/farming/StakingFactory";
diff --git a/packages/dexs-starter-kit/docs/FolderStructure.md b/packages/dexs-starter-kit/docs/FolderStructure.md
index 8d34e70..a8d818b 100644
--- a/packages/dexs-starter-kit/docs/FolderStructure.md
+++ b/packages/dexs-starter-kit/docs/FolderStructure.md
@@ -1,5 +1,5 @@
# Folder Structure
-- **[/contracts](../contracts)** - includes typechains of all the DEX's contracts i.e: [@klaytn/dex-contracts](https://www.npmjs.com/package/@klaytn/dex-contracts)
+- **[/contracts](../contracts)** - includes typechains of all the DEX's contracts i.e: [@kaiachain/dex-contracts](https://www.npmjs.com/package/@kaiachain/dex-contracts)
- **[/core](../core)** - includes all the integration scripts of DEX-contracts core functionalities
- **[/Swap.ts](../core/Swap.ts)** - includes all the integration scripts of DEX's Swap contract
- **[/Liquidity.ts](../core/Liquidity.ts)** - includes all the integration scripts of DEX's Liquidity contract
diff --git a/packages/dexs-starter-kit/docs/HowToUse.md b/packages/dexs-starter-kit/docs/HowToUse.md
index 0e5944b..79087b8 100644
--- a/packages/dexs-starter-kit/docs/HowToUse.md
+++ b/packages/dexs-starter-kit/docs/HowToUse.md
@@ -6,30 +6,30 @@ Make sure you've read the [Prerequisites](./Prerequisites.md) section to ensure
## Liquidity
```js
-import { Liquidity } from '@klaytn/kss-dexs'
+import { Liquidity } from '@kaiachain/kss-dexs'
```
## Swap
```js
-import { Swap } from '@klaytn/kss-dexs'
+import { Swap } from '@kaiachain/kss-dexs'
```
## Farming
```js
-import { Farming } from '@klaytn/kss-dexs'
+import { Farming } from '@kaiachain/kss-dexs'
```
## Staking
```js
-import { Staking } from '@klaytn/kss-dexs'
+import { Staking } from '@kaiachain/kss-dexs'
```
## Multisig
```js
-import { Multisig } from '@klaytn/kss-dexs'
+import { Multisig } from '@kaiachain/kss-dexs'
```
## Config
```js
-import { Config } from '@klaytn/kss-dexs'
+import { Config } from '@kaiachain/kss-dexs'
```
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/Prerequisites.md b/packages/dexs-starter-kit/docs/Prerequisites.md
index a0ca061..80b5305 100644
--- a/packages/dexs-starter-kit/docs/Prerequisites.md
+++ b/packages/dexs-starter-kit/docs/Prerequisites.md
@@ -2,7 +2,7 @@
In order to execute the given use-cases or the core modules of this package, make sure you
fulfill the following prerequisites
1. You must have enough supply of KLAY & other utility tokens being explained below
-2. Following DEX contracts should be already deployed on Klaytn Mainnet OR Testnet
+2. Following DEX contracts should be already deployed on Kaia Mainnet OR Kaia Kairos Testnet
- DexFactory
- DexRouter
- MultiSigWallet
@@ -10,6 +10,6 @@ fulfill the following prerequisites
- Farming
- StakingFactory
- Some `KIP7` utility tokens e.g. atleast 3,4 Token contracts
-3. if you don't have already deployed the contracts, please deploy them using [this](https://github.com/klaytn/klaytn-dex-contracts/blob/dev/README.md) documentation
-4. if you need more details about flow of each above-mentioned DEX contracts please refer to `@klaytn/dex-contracts` repository [here](https://github.com/klaytn/klaytn-dex-contracts/blob/dev/docs/dex-specification.md)
-5. if you just want to get already deployed DEX & util contracts, please check it out [here](https://github.com/klaytn/klaytn-dex-frontend/blob/dev/dex-config.example.json).
+3. if you don't have already deployed the contracts, please deploy them using [this](https://github.com/kaiachain/open-dex-contracts/blob/dev/README.md) documentation
+4. if you need more details about flow of each above-mentioned DEX contracts please refer to `@kaiachain/dex-contracts` repository [here](https://github.com/kaiachain/open-dex-contracts/blob/dev/docs/dex-specification.md)
+5. if you just want to get already deployed DEX & util contracts, please check it out [here](https://github.com/kaiachain/open-dex-frontend/blob/dev/dex-config.example.json).
diff --git a/packages/dexs-starter-kit/docs/typedoc/README.md b/packages/dexs-starter-kit/docs/typedoc/README.md
index 2998bcb..4072aac 100644
--- a/packages/dexs-starter-kit/docs/typedoc/README.md
+++ b/packages/dexs-starter-kit/docs/typedoc/README.md
@@ -1,7 +1,7 @@
-@klaytn/kss-dexs / [Modules](modules.md)
+@kaiachain/kss-dexs / [Modules](modules.md)
# DEX Starter Kit
-This module of Klaytn-SDK includes the integration of [@klaytn/dex-contracts](https://github.com/klaytn/klaytn-dex-contracts).
+This module of Kaia-SDK includes the integration of [@kaiachain/dex-contracts](https://github.com/kaiachain/open-dex-contracts).
# How to setup locally
`npm install`
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/Config.md b/packages/dexs-starter-kit/docs/typedoc/classes/Config.md
index 455b2d6..ed59aa0 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/Config.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/Config.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / Config
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / Config
# Class: Config
@@ -40,7 +40,7 @@
#### Defined in
-[Config.ts:12](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L12)
+[Config.ts:12](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L12)
___
@@ -50,7 +50,7 @@ ___
#### Defined in
-[Config.ts:13](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L13)
+[Config.ts:13](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L13)
___
@@ -60,7 +60,7 @@ ___
#### Defined in
-[Config.ts:15](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L15)
+[Config.ts:15](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L15)
___
@@ -70,7 +70,7 @@ ___
#### Defined in
-[Config.ts:11](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L11)
+[Config.ts:11](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L11)
___
@@ -80,7 +80,7 @@ ___
#### Defined in
-[Config.ts:14](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L14)
+[Config.ts:14](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L14)
## Methods
@@ -104,7 +104,7 @@ A getter function to get WKLAY contract's address
#### Defined in
-[Config.ts:59](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L59)
+[Config.ts:59](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L59)
___
@@ -129,7 +129,7 @@ A function to initialize instance of DexPair contract.
#### Defined in
-[Config.ts:50](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L50)
+[Config.ts:50](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L50)
___
@@ -157,7 +157,7 @@ A getter function to fetch instance of DexPair contract.
#### Defined in
-[Config.ts:39](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L39)
+[Config.ts:39](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L39)
___
@@ -184,7 +184,7 @@ A function to initialize the DEX contracts
#### Defined in
-[Config.ts:24](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L24)
+[Config.ts:24](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L24)
___
@@ -210,7 +210,7 @@ A function to initialize instance of Farming contract.
#### Defined in
-[Config.ts:70](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L70)
+[Config.ts:70](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L70)
___
@@ -236,7 +236,7 @@ A function to initialize instance of MultiSigWallet contract.
#### Defined in
-[Config.ts:92](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L92)
+[Config.ts:92](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L92)
___
@@ -262,4 +262,4 @@ A function to initialize instance of Farming contract.
#### Defined in
-[Config.ts:81](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L81)
\ No newline at end of file
+[Config.ts:81](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Config.ts#L81)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/Farming.md b/packages/dexs-starter-kit/docs/typedoc/classes/Farming.md
index 832e807..4395718 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/Farming.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/Farming.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / Farming
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / Farming
# Class: Farming
@@ -41,7 +41,7 @@
#### Defined in
-[Farming.ts:7](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L7)
+[Farming.ts:7](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L7)
## Properties
@@ -51,7 +51,7 @@
#### Defined in
-[Farming.ts:5](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L5)
+[Farming.ts:5](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L5)
## Methods
@@ -82,7 +82,7 @@ A function that encodes all the details required to create a new LP farming pool
#### Defined in
-[Farming.ts:88](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L88)
+[Farming.ts:88](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L88)
___
@@ -107,7 +107,7 @@ A function to deposit given amount of LP token in given LP Farming pool.
#### Defined in
-[Farming.ts:17](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L17)
+[Farming.ts:17](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L17)
___
@@ -131,7 +131,7 @@ A function to emergency withdraw funds from given LP farming pool.
#### Defined in
-[Farming.ts:47](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L47)
+[Farming.ts:47](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L47)
___
@@ -149,7 +149,7 @@ A getter function for Farming contract's insstance
#### Defined in
-[Farming.ts:122](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L122)
+[Farming.ts:122](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L122)
___
@@ -175,7 +175,7 @@ A getter function to fetch instance of DexPair contract.
#### Defined in
-[Farming.ts:133](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L133)
+[Farming.ts:133](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L133)
___
@@ -203,7 +203,7 @@ A function that encodes all the details required to grant minter role to Farming
#### Defined in
-[Farming.ts:110](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L110)
+[Farming.ts:110](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L110)
___
@@ -232,7 +232,7 @@ A function that encodes all the details required to update / set LP farming pool
#### Defined in
-[Farming.ts:99](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L99)
+[Farming.ts:99](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L99)
___
@@ -261,7 +261,7 @@ A function that encodes all the details required to update bonusMultiplier of gi
#### Defined in
-[Farming.ts:65](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L65)
+[Farming.ts:65](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L65)
___
@@ -289,7 +289,7 @@ A function that encodes all the details required to update rewardPerBlock of Far
#### Defined in
-[Farming.ts:75](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L75)
+[Farming.ts:75](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L75)
___
@@ -314,4 +314,4 @@ A function to withdraw LP tokens from given LP farming pool
#### Defined in
-[Farming.ts:33](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L33)
\ No newline at end of file
+[Farming.ts:33](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Farming.ts#L33)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/Liquidity.md b/packages/dexs-starter-kit/docs/typedoc/classes/Liquidity.md
index 60e50bb..c2fffd2 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/Liquidity.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/Liquidity.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / Liquidity
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / Liquidity
# Class: Liquidity
@@ -40,7 +40,7 @@
#### Defined in
-[Liquidity.ts:8](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L8)
+[Liquidity.ts:8](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L8)
## Properties
@@ -50,7 +50,7 @@
#### Defined in
-[Liquidity.ts:6](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L6)
+[Liquidity.ts:6](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L6)
___
@@ -60,7 +60,7 @@ ___
#### Defined in
-[Liquidity.ts:5](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L5)
+[Liquidity.ts:5](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L5)
## Methods
@@ -90,7 +90,7 @@ A function to add liquidity to a given pair of tokens (token0 & token1).
#### Defined in
-[Liquidity.ts:30](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L30)
+[Liquidity.ts:30](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L30)
___
@@ -119,7 +119,7 @@ A function to add liquidity with Klay to a given pair of tokens (token & Klay).
#### Defined in
-[Liquidity.ts:54](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L54)
+[Liquidity.ts:54](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L54)
___
@@ -137,7 +137,7 @@ A getter function to get WKLAY contract's address
#### Defined in
-[Liquidity.ts:134](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L134)
+[Liquidity.ts:134](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L134)
___
@@ -164,7 +164,7 @@ A getter function to fetch instance of DexPair contract.
#### Defined in
-[Liquidity.ts:125](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L125)
+[Liquidity.ts:125](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L125)
___
@@ -182,7 +182,7 @@ A getter function for DEX's Router contract's instance
#### Defined in
-[Liquidity.ts:17](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L17)
+[Liquidity.ts:17](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L17)
___
@@ -210,7 +210,7 @@ A function to remove liquidity from a given pair of tokens (token0 & token1).
#### Defined in
-[Liquidity.ts:76](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L76)
+[Liquidity.ts:76](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L76)
___
@@ -238,4 +238,4 @@ A function to remove liquidity from a given pair of tokens (token & klay).
#### Defined in
-[Liquidity.ts:101](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L101)
\ No newline at end of file
+[Liquidity.ts:101](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Liquidity.ts#L101)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/MultiSig.md b/packages/dexs-starter-kit/docs/typedoc/classes/MultiSig.md
index 3fe3e5c..382dca6 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/MultiSig.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/MultiSig.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / MultiSig
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / MultiSig
# Class: MultiSig
@@ -37,7 +37,7 @@
#### Defined in
-[MultiSig.ts:7](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L7)
+[MultiSig.ts:7](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L7)
## Properties
@@ -47,7 +47,7 @@
#### Defined in
-[MultiSig.ts:5](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L5)
+[MultiSig.ts:5](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L5)
## Methods
@@ -75,7 +75,7 @@ only registered owner on MULTISIG contract can execute this function
#### Defined in
-[MultiSig.ts:34](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L34)
+[MultiSig.ts:34](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L34)
___
@@ -103,7 +103,7 @@ only registered owner on MULTISIG contract can execute this function
#### Defined in
-[MultiSig.ts:58](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L58)
+[MultiSig.ts:58](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L58)
___
@@ -121,7 +121,7 @@ A getter function to return Multisig contract's instance
#### Defined in
-[MultiSig.ts:79](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L79)
+[MultiSig.ts:79](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L79)
___
@@ -145,7 +145,7 @@ A function to check if given transactionId has got enought votes or not
#### Defined in
-[MultiSig.ts:68](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L68)
+[MultiSig.ts:68](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L68)
___
@@ -173,7 +173,7 @@ only registered owner on MULTISIG contract & who has already voted the given tra
#### Defined in
-[MultiSig.ts:46](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L46)
+[MultiSig.ts:46](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L46)
___
@@ -203,4 +203,4 @@ only registered owner on MULTISIG contract & who has already voted the given tra
#### Defined in
-[MultiSig.ts:19](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L19)
\ No newline at end of file
+[MultiSig.ts:19](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/MultiSig.ts#L19)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/Staking.md b/packages/dexs-starter-kit/docs/typedoc/classes/Staking.md
index d7c505b..e22cbd3 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/Staking.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/Staking.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / Staking
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / Staking
# Class: Staking
@@ -43,7 +43,7 @@
#### Defined in
-[Staking.ts:7](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L7)
+[Staking.ts:7](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L7)
## Properties
@@ -53,7 +53,7 @@
#### Defined in
-[Staking.ts:5](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L5)
+[Staking.ts:5](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L5)
## Methods
@@ -77,7 +77,7 @@ A function to deposit given amount of Staked Token in given Staking Pool contrac
#### Defined in
-[Staking.ts:26](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L26)
+[Staking.ts:26](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L26)
___
@@ -106,7 +106,7 @@ A function that encodes all the details required to emergency withdraw funds fro
#### Defined in
-[Staking.ts:113](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L113)
+[Staking.ts:113](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L113)
___
@@ -124,7 +124,7 @@ A function to emergency withdraw funds from given Staking Pool contract.
#### Defined in
-[Staking.ts:56](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L56)
+[Staking.ts:56](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L56)
___
@@ -142,7 +142,7 @@ A getter function to return Staking contract's instance
#### Defined in
-[Staking.ts:174](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L174)
+[Staking.ts:174](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L174)
___
@@ -171,7 +171,7 @@ A function that encodes all the details required to recover token (unintentional
#### Defined in
-[Staking.ts:124](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L124)
+[Staking.ts:124](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L124)
___
@@ -193,7 +193,7 @@ A function that encodes all the details required to stop reward distribution in
#### Defined in
-[Staking.ts:133](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L133)
+[Staking.ts:133](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L133)
___
@@ -222,7 +222,7 @@ A function that encodes all the details required to update pool limit in given s
#### Defined in
-[Staking.ts:144](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L144)
+[Staking.ts:144](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L144)
___
@@ -250,7 +250,7 @@ A function that encodes all the details required to update reward per block in g
#### Defined in
-[Staking.ts:154](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L154)
+[Staking.ts:154](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L154)
___
@@ -279,7 +279,7 @@ A function that encodes all the details required to update start and end blocks
#### Defined in
-[Staking.ts:165](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L165)
+[Staking.ts:165](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L165)
___
@@ -303,7 +303,7 @@ A function to withdraw Staked tokens from given Staking pool contract
#### Defined in
-[Staking.ts:42](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L42)
+[Staking.ts:42](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L42)
___
@@ -329,7 +329,7 @@ A function to initiate Staking Factory contract instance
#### Defined in
-[Staking.ts:17](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L17)
+[Staking.ts:17](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L17)
___
@@ -365,4 +365,4 @@ A function that encodes all the details required to deploy a new Staking Pool.
#### Defined in
-[Staking.ts:82](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L82)
\ No newline at end of file
+[Staking.ts:82](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Staking.ts#L82)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/classes/Swap.md b/packages/dexs-starter-kit/docs/typedoc/classes/Swap.md
index 381504c..9b374cc 100644
--- a/packages/dexs-starter-kit/docs/typedoc/classes/Swap.md
+++ b/packages/dexs-starter-kit/docs/typedoc/classes/Swap.md
@@ -1,4 +1,4 @@
-[@klaytn/kss-dexs](../README.md) / [Modules](../modules.md) / Swap
+[@kaiachain/kss-dexs](../README.md) / [Modules](../modules.md) / Swap
# Class: Swap
@@ -42,7 +42,7 @@
#### Defined in
-[Swap.ts:8](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L8)
+[Swap.ts:8](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L8)
## Properties
@@ -52,7 +52,7 @@
#### Defined in
-[Swap.ts:6](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L6)
+[Swap.ts:6](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L6)
___
@@ -62,7 +62,7 @@ ___
#### Defined in
-[Swap.ts:5](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L5)
+[Swap.ts:5](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L5)
## Methods
@@ -89,7 +89,7 @@ A function to swap exact amount of KLAY for a given amount of Tokens.
#### Defined in
-[Swap.ts:59](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L59)
+[Swap.ts:59](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L59)
___
@@ -116,7 +116,7 @@ A function to swap exact amount of Tokens for a given amount of KLAY.
#### Defined in
-[Swap.ts:98](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L98)
+[Swap.ts:98](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L98)
___
@@ -143,7 +143,7 @@ A function to swap exact amount of Tokens for a given amount of Tokens.
#### Defined in
-[Swap.ts:21](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L21)
+[Swap.ts:21](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L21)
___
@@ -161,7 +161,7 @@ A getter function to get WKLAY contract's address
#### Defined in
-[Swap.ts:152](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L152)
+[Swap.ts:152](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L152)
___
@@ -188,7 +188,7 @@ A getter function to fetch instance of DexPair contract.
#### Defined in
-[Swap.ts:143](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L143)
+[Swap.ts:143](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L143)
___
@@ -206,7 +206,7 @@ A getter function to return DexRouter contract's instance
#### Defined in
-[Swap.ts:133](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L133)
+[Swap.ts:133](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L133)
___
@@ -233,7 +233,7 @@ A function to swap KLAYs for a given exact amount of Tokens.
#### Defined in
-[Swap.ts:117](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L117)
+[Swap.ts:117](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L117)
___
@@ -260,7 +260,7 @@ A function to swap given amount of Tokens for exact amount of KLAYs.
#### Defined in
-[Swap.ts:78](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L78)
+[Swap.ts:78](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L78)
___
@@ -287,4 +287,4 @@ A function to swap given amount of Tokens for exact amount of KLAYs.
#### Defined in
-[Swap.ts:40](https://github.com/klaytn/klaytn-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L40)
\ No newline at end of file
+[Swap.ts:40](https://github.com/kaiachain/kaia-service-sdk/blob/d936278/packages/dexs-starter-kit/core/Swap.ts#L40)
\ No newline at end of file
diff --git a/packages/dexs-starter-kit/docs/typedoc/modules.md b/packages/dexs-starter-kit/docs/typedoc/modules.md
index c940630..e3fd321 100644
--- a/packages/dexs-starter-kit/docs/typedoc/modules.md
+++ b/packages/dexs-starter-kit/docs/typedoc/modules.md
@@ -1,6 +1,6 @@
-[@klaytn/kss-dexs](README.md) / Modules
+[@kaiachain/kss-dexs](README.md) / Modules
-# @klaytn/kss-dexs
+# @kaiachain/kss-dexs
## Table of contents
diff --git a/packages/dexs-starter-kit/package.json b/packages/dexs-starter-kit/package.json
index 54a4ecd..c4d58b8 100644
--- a/packages/dexs-starter-kit/package.json
+++ b/packages/dexs-starter-kit/package.json
@@ -1,5 +1,5 @@
{
- "name": "@klaytn/kss-dexs",
+ "name": "@kaiachain/kss-dexs",
"version": "1.0.0",
"description": "Includes dex-contracts integration & use-cases",
"exports": {
@@ -7,7 +7,7 @@
},
"repository": {
"type": "git",
- "url": "https://github.com/klaytn/klaytn-service-sdk.git"
+ "url": "https://github.com/kaiachain/kaia-service-sdk.git"
},
"scripts": {
"build": "npx tsc",
@@ -17,7 +17,8 @@
"docs": "npx typedoc"
},
"keywords": [
- "klaytn",
+ "kaia",
+ "kaiachain",
"contracts",
"dex",
"swap",
@@ -26,7 +27,7 @@
"pool",
"kss-dexs"
],
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "MIT",
"dependencies": {
"@jest/types": "^29.4.2",
diff --git a/packages/kss-cli/LICENSE.md b/packages/kss-cli/LICENSE.md
index 7b917df..707f37e 100644
--- a/packages/kss-cli/LICENSE.md
+++ b/packages/kss-cli/LICENSE.md
@@ -1,6 +1,7 @@
MIT License
-Copyright (c) 2023 Klaytn Foundation
+Copyright (c) 2024 Kaia DLT Foundation
+Copyright (c) 2023-2024 Klaytn Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/packages/kss-cli/README.md b/packages/kss-cli/README.md
index d6308c3..2e2a50d 100644
--- a/packages/kss-cli/README.md
+++ b/packages/kss-cli/README.md
@@ -1,13 +1,13 @@
-# Klaytn Service SDK CLI
+# Kaia Service SDK CLI
-kss-cli is a command line utility for klaytn service sdk.
+kss-cli is a command line utility for kaia service sdk.
kss-cli supports below features.
-* `Oracles` - Hardhat project containing Witnet integrations with klaytn.
+* `Oracles` - Hardhat project containing Witnet integrations with kaia.
## Install
```typescript
-npm install -g @klaytn/kss-cli --force
+npm install -g @kaiachain/kss-cli --force
```
## Quick Usage
@@ -29,7 +29,7 @@ npm install -g @klaytn/kss-cli --force
#### Oracles
-To download the Klaytn's integration with witnet oracle hardhat project, please follow below steps
+To download the Kaia's integration with witnet oracle hardhat project, please follow below steps
```typescript
> kss-cli oracle init
diff --git a/packages/kss-cli/bin/commands/oracle/index.js b/packages/kss-cli/bin/commands/oracle/index.js
index e309651..0ca405a 100644
--- a/packages/kss-cli/bin/commands/oracle/index.js
+++ b/packages/kss-cli/bin/commands/oracle/index.js
@@ -4,7 +4,7 @@ const path = require('path')
let exec = (program) => {
program
.command('oracle')
- .description('klaytn service sdk oracle')
+ .description('kaia service sdk oracle')
.usage('[options] ')
.command('init')
.description('initialize the oracle hardhat project')
@@ -14,7 +14,7 @@ let exec = (program) => {
async function init() {
console.log("Initializing the oracle setup")
- copyDir(path.join(__dirname, '..', '..', '..', 'node_modules', '@klaytn', 'kss-oracles'), path.join(process.cwd(), "oracle-starter-kit"), (err) => {
+ copyDir(path.join(__dirname, '..', '..', '..', 'node_modules', '@kaiachain', 'kss-oracles'), path.join(process.cwd(), "oracle-starter-kit"), (err) => {
if(err) {
console.log(err);
return;
diff --git a/packages/kss-cli/package.json b/packages/kss-cli/package.json
index af3ec1a..749f7e9 100644
--- a/packages/kss-cli/package.json
+++ b/packages/kss-cli/package.json
@@ -1,23 +1,24 @@
{
- "name": "@klaytn/kss-cli",
+ "name": "@kaiachain/kss-cli",
"version": "1.0.0",
- "description": "klaytn service sdk command line",
+ "description": "kaia service sdk command line",
"bin": {
"kss-cli": "./bin/kss-cli.js"
},
"repository": {
"type": "git",
- "url": "https://github.com/klaytn/klaytn-service-sdk.git"
+ "url": "https://github.com/kaiachain/kaia-service-sdk.git"
},
"preferGlobal": true,
"keywords": [
- "klaytn",
+ "kaia",
+ "kaiachain",
"kss-cli"
],
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "MIT",
"dependencies": {
- "@klaytn/kss-oracles": "^1.0.0",
+ "@kaiachain/kss-oracles": "^1.0.0",
"chalk": "^4.1.1",
"commander": "^10.0.0",
"figlet": "^1.5.2",
diff --git a/packages/oracles-starter-kit/.env.example b/packages/oracles-starter-kit/.env.example
index d1e1117..0434aa0 100644
--- a/packages/oracles-starter-kit/.env.example
+++ b/packages/oracles-starter-kit/.env.example
@@ -1,2 +1,2 @@
-BAOBAB_RPC_URL='https://api.baobab.klaytn.net:8651'
+KAIROS_RPC_URL='https://public-en.kairos.node.kaia.io'
PRIVATE_KEY='private key here'
\ No newline at end of file
diff --git a/packages/oracles-starter-kit/LICENSE b/packages/oracles-starter-kit/LICENSE
index 7b917df..707f37e 100644
--- a/packages/oracles-starter-kit/LICENSE
+++ b/packages/oracles-starter-kit/LICENSE
@@ -1,6 +1,7 @@
MIT License
-Copyright (c) 2023 Klaytn Foundation
+Copyright (c) 2024 Kaia DLT Foundation
+Copyright (c) 2023-2024 Klaytn Foundation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/packages/oracles-starter-kit/README.md b/packages/oracles-starter-kit/README.md
index e19f1db..f2d31ec 100644
--- a/packages/oracles-starter-kit/README.md
+++ b/packages/oracles-starter-kit/README.md
@@ -2,7 +2,7 @@
- [Oracle Starter Kit](#oracle-starter-kit)
- [Install](#install)
- [Quick Usage](#quick-usage)
- - [Setup Hardhat configurations Baobab Klaytn network and variables](#setup-hardhat-configurations-baobab-klaytn-network-and-variables)
+ - [Setup Hardhat configurations Kairos Kaia network and variables](#setup-hardhat-configurations-kairos-kaia-network-and-variables)
- [1. Hardhat configurations](#1-hardhat-configurations)
- [2. Environment Variables](#2-environment-variables)
- [Deploy contracts](#deploy-contracts)
@@ -50,7 +50,7 @@ This is a hardhat project containing contracts and scripts for `Witnet` integrat
## Install
```typescript
-npm install -g @klaytn/kss-cli --force
+npm install -g @kaiachain/kss-cli --force
```
## Quick Usage
@@ -69,22 +69,22 @@ Enter inside the generated folder and install the packages as mentioned
From there you can run hardhat commands to compile your contracts, deploy those contracts to
the network and run their associated unit tests.
-## Setup Hardhat configurations Baobab Klaytn network and variables
+## Setup Hardhat configurations Kairos Kaia network and variables
The default hardhat configurations can be modified in `helper-hardhat-config.json`
-Default configurations of baobab network `1001`.
+Default configurations of kairos network `1001`.
### 1. Hardhat configurations
Hardhat configuration variables can be found in `helper-hardhat-config.json` in the root directory. Below is the configuration explaination for `1001` network.
- * `name` - hardhat network name Ex: `baobab`
- * `witnetPriceRouter` - witnetPriceRouter Address Ex: `0xeD074DA2A76FD2Ca90C1508930b4FB4420e413B0` for Klaytn Testnet. See [WitnetPriceRouter](https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/klaytn-price-feeds#klaytn-baobab) for reference.
- * `witnetRandomness` - witnetRandomness Address. Ex: `0xb4b2e2e00e9d6e5490d55623e4f403ec84c6d33f` for Klaytn Testnet. See [WitnetRandomness Contract Addresses](https://docs.witnet.io/smart-contracts/witnet-randomness-oracle/contract-addresses#klaytn) for reference.
+ * `name` - hardhat network name Ex: `kairos`
+ * `witnetPriceRouter` - witnetPriceRouter Address Ex: `0xeD074DA2A76FD2Ca90C1508930b4FB4420e413B0` for Kaia Kairos Testnet. See [WitnetPriceRouter](https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/kaia-price-feeds#kaia-kairos) for reference.
+ * `witnetRandomness` - witnetRandomness Address. Ex: `0xb4b2e2e00e9d6e5490d55623e4f403ec84c6d33f` for Kaia Kairos Testnet. See [WitnetRandomness Contract Addresses](https://docs.witnet.io/smart-contracts/witnet-randomness-oracle/contract-addresses#kaia) for reference.
### 2. Environment Variables
We will need to set environment variables by following below steps
1. copy `.env.example` file and rename to `.env`
2. Modify environment variables. Below is the explaination of each variable
- * `BAOBAB_RPC_URL` - `string` https://api.baobab.klaytn.net:8651/ can be used. its the rpc url of blockchain.
+ * `BAOBAB_RPC_URL` - `string` https://public-en.kairos.node.kaia.io can be used. its the rpc url of blockchain.
* `PRIVATE_KEY` - `string` This is private key from wallet, ie [MetaMask](https://metamask.io/). This is required for deploying contracts to public networks.
> IMPORTANT: MAKE SURE YOU DON'T EXPOSE THE KEYS YOU PUT IN THIS `.env` FILE saved in the package node_modules. By that, I mean don't push them to a public repo, and please try to keep them keys you use in development not associated with any real funds.
@@ -92,7 +92,7 @@ We will need to set environment variables by following below steps
Don't commit and push any changes to .env files that may contain sensitive information, such as a private key! If this information reaches a public GitHub repository, someone can use it to check if you have any Mainnet funds in that wallet address, and steal them!
> Get some Baobab Testnet KLAY
-Go to the [Klaytn faucets](https://baobab.wallet.klaytn.foundation/faucet) to get some KLAY to configured private key account.
+Go to the [Kaia faucets](https://kairos.wallet.kaia.io/faucet) to get some KLAY to configured private key account.
## Deploy contracts
@@ -126,7 +126,7 @@ The Witnet Price Feeds consumer contract has one task, to read the latest price
#### Parameters
`deployedContractAddress` - `string` Deployed WitnetPriceFeed contract address
-`id` - `string` id is the witnet pricefeed ID. Ex: `0x6cc828d1` for Price-KLAY/USD-6. See [Klaytn Witnet PriceFeeds](https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/klaytn-price-feeds#klaytn-baobab) for reference.
+`id` - `string` id is the witnet pricefeed ID. Ex: `0x6cc828d1` for Price-KLAY/USD-6. See [Kaia Witnet PriceFeeds](https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/kaia-price-feeds#kaia-kairos) for reference.
#### Returns
* `price` - price of KLAY/USD.
@@ -289,7 +289,7 @@ npx witnet-toolkit try-query --from-solidity ./contracts/witnet-requests/ **_NOTE:_** If above tryWitnetQueries is stuck, please try to run command shown in below snapshot `npx witnet-toolkit`, install the binary once in the machine and retry above method
-![WitnetToolkitBinary](https://github.com/klaytn/klaytn-service-sdk/blob/main/packages/oracles-starter-kit/WitnetToolkitBinary.png)
+![WitnetToolkitBinary](https://github.com/kaiachain/kaia-service-sdk/blob/main/packages/oracles-starter-kit/WitnetToolkitBinary.png)
### Supra Price Feeds
The Supra Price Feeds consumer contract has one task, to read the latest price of a specified price feed contract
@@ -299,7 +299,7 @@ The Supra Price Feeds consumer contract has one task, to read the latest price o
```
#### Parameters
`deployedContractAddress` - `string` Deployed SupraValueFeedExample contract address
-`marketpair` - `string` marketpair is the Supra marketpair id. Ex: `btc_usdt`. See [Klaytn Supra PriceFeeds](https://supraoracles.com/docs/get-started/market-pairs#klaytn-chain) for reference.
+`marketpair` - `string` marketpair is the Supra marketpair id. Ex: `btc_usdt`. See [Kaia Supra PriceFeeds](https://supraoracles.com/docs/get-started/market-pairs#kaia-chain) for reference.
#### Returns
diff --git a/packages/oracles-starter-kit/contracts/WitnetPriceFeed.sol b/packages/oracles-starter-kit/contracts/WitnetPriceFeed.sol
index f302a4e..9ce62d6 100644
--- a/packages/oracles-starter-kit/contracts/WitnetPriceFeed.sol
+++ b/packages/oracles-starter-kit/contracts/WitnetPriceFeed.sol
@@ -7,7 +7,7 @@ contract WitnetPriceFeed {
IWitnetPriceRouter public immutable witnetPriceRouter;
/*
- * Network: Klaytn Baobab
+ * Network: Kaia Kairos
* WitnetPriceRouter: 0xeD074DA2A76FD2Ca90C1508930b4FB4420e413B0
**/
constructor(IWitnetPriceRouter _router) {
@@ -16,7 +16,7 @@ contract WitnetPriceFeed {
/*
* @param _id4 - pricefeed id.
- * id4 can be found here https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/klaytn-price-feeds
+ * id4 can be found here https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/kaia-price-feeds
*
**/
function getPrice(bytes4 _id4) public view returns (int256 _lastPrice, uint256 _lastTimestamp) {
diff --git a/packages/oracles-starter-kit/contracts/WitnetRandom.sol b/packages/oracles-starter-kit/contracts/WitnetRandom.sol
index d24340f..2128fa6 100644
--- a/packages/oracles-starter-kit/contracts/WitnetRandom.sol
+++ b/packages/oracles-starter-kit/contracts/WitnetRandom.sol
@@ -9,7 +9,7 @@ contract WitnetRandom {
IWitnetRandomness public immutable witnetRandomness;
/*
- * Network: Klaytn Baobab
+ * Network: Kaia Kairos
* WitnetRandomness: 0xb4b2e2e00e9d6e5490d55623e4f403ec84c6d33f
**/
constructor(IWitnetRandomness _witnetRandomness) {
diff --git a/packages/oracles-starter-kit/hardhat.config.js b/packages/oracles-starter-kit/hardhat.config.js
index f2608ec..86fdbed 100644
--- a/packages/oracles-starter-kit/hardhat.config.js
+++ b/packages/oracles-starter-kit/hardhat.config.js
@@ -12,7 +12,7 @@ const MAINNET_RPC_URL =
process.env.MAINNET_RPC_URL ||
'https://klaytn.blockpi.network/v1/rpc/public'
const BAOBAB_RPC_URL =
- process.env.BAOBAB_RPC_URL || 'https://api.baobab.klaytn.net:8651/'
+ process.env.BAOBAB_RPC_URL || 'https://public-en.kairos.node.kaia.io'
const PRIVATE_KEY = process.env.PRIVATE_KEY
const FORKING_BLOCK_NUMBER = process.env.FORKING_BLOCK_NUMBER
diff --git a/packages/oracles-starter-kit/package.json b/packages/oracles-starter-kit/package.json
index fef79d3..83910d2 100644
--- a/packages/oracles-starter-kit/package.json
+++ b/packages/oracles-starter-kit/package.json
@@ -1,7 +1,7 @@
{
- "name": "@klaytn/kss-oracles",
+ "name": "@kaiachain/kss-oracles",
"version": "1.0.0",
- "description": "Hardhat Klaytn Oracles starter kit",
+ "description": "Hardhat Kaia Oracles starter kit",
"scripts": {
"help": "hardhat --help",
"compile": "hardhat compile",
@@ -11,13 +11,14 @@
"lint": "eslint . --ext .js",
"lint-fix": "eslint . --fix --ext .js"
},
- "author": "Klaytn Community ",
+ "author": "Kaia Community ",
"license": "MIT",
"keywords": [
- "klaytn",
+ "kaia",
+ "kaiachain",
"oracles",
"witnet",
- "klaytn-service-sdk"
+ "kaia-service-sdk"
],
"dependencies": {
"@nomiclabs/hardhat-ethers": "^2.2.1",
diff --git a/packages/oracles-starter-kit/test/unit/WitnetPriceFeed_unit_test.js b/packages/oracles-starter-kit/test/unit/WitnetPriceFeed_unit_test.js
index 9eac5fb..c6b7acc 100644
--- a/packages/oracles-starter-kit/test/unit/WitnetPriceFeed_unit_test.js
+++ b/packages/oracles-starter-kit/test/unit/WitnetPriceFeed_unit_test.js
@@ -6,7 +6,7 @@ const { deployMockContract, provider } = waffle
!developmentChains.includes(network.name)
? describe.skip
: describe('Unit Tests - WitnetPriceFeed', async function () {
- // Price Feed Address, values can be obtained at https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/klaytn-price-feeds
+ // Price Feed Address, values can be obtained at https://docs.witnet.io/smart-contracts/witnet-data-feeds/addresses/kaia-price-feeds
let witnetPriceFeed
beforeEach(async () => {