{
  "_format": "hh-sol-artifact-1",
  "contractName": "WitnetRequestBytecodesDefault",
  "sourceName": "contracts/core/defaults/WitnetRequestBytecodesDefault.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_upgradable",
          "type": "bool"
        },
        {
          "internalType": "bytes32",
          "name": "_versionTag",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "UnknownRadonReducer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "UnknownRadonRequest",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "UnknownRadonRetrieval",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "NewDataProvider",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadHash",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadonReducerHash",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadonRetrievalHash",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "baseAddr",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "baseCodehash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "versionTag",
          "type": "string"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "stateMutability": "nonpayable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "base",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "bytecodeOf",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_radBytecode",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "_sla",
          "type": "tuple"
        }
      ],
      "name": "bytecodeOf",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "committeeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint64",
              "name": "witnessingFeeNanoWit",
              "type": "uint64"
            }
          ],
          "internalType": "struct WitnetV2.RadonSLA",
          "name": "_sla",
          "type": "tuple"
        }
      ],
      "name": "bytecodeOf",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "class",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "codehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_codehash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deployer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_radBytecode",
          "type": "bytes"
        }
      ],
      "name": "hashOf",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isUpgradable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        }
      ],
      "name": "isUpgradableFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        }
      ],
      "name": "lookupDataProvider",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_authority",
          "type": "string"
        }
      ],
      "name": "lookupDataProviderIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_index",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_offset",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_length",
          "type": "uint256"
        }
      ],
      "name": "lookupDataProviderSources",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "_endpoints",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_hash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonReducer",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReducerOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "_reducer",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestAggregator",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReducerOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestResultDataType",
      "outputs": [
        {
          "internalType": "enum Witnet.RadonDataTypes",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestResultMaxSize",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestSources",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestSourcesCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRequestTally",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReducerOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_hash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRetrieval",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "argsCount",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataRequestMethods",
              "name": "method",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "resultDataType",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "internalType": "string",
              "name": "body",
              "type": "string"
            },
            {
              "internalType": "string[2][]",
              "name": "headers",
              "type": "string[2][]"
            },
            {
              "internalType": "bytes",
              "name": "script",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.RadonRetrieval",
          "name": "_source",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_hash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRetrievalArgsCount",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_hash",
          "type": "bytes32"
        }
      ],
      "name": "lookupRadonRetrievalResultDataType",
      "outputs": [
        {
          "internalType": "enum Witnet.RadonDataTypes",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalDataProviders",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReducerOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "args",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "_reducer",
          "type": "tuple"
        }
      ],
      "name": "verifyRadonReducer",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_retrievalsIds",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes32",
          "name": "_aggregatorId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_tallyId",
          "type": "bytes32"
        },
        {
          "internalType": "uint16",
          "name": "_resultMaxSize",
          "type": "uint16"
        },
        {
          "internalType": "string[][]",
          "name": "_args",
          "type": "string[][]"
        }
      ],
      "name": "verifyRadonRequest",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_radHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum Witnet.RadonDataRequestMethods",
          "name": "_requestMethod",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "_requestURL",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_requestBody",
          "type": "string"
        },
        {
          "internalType": "string[2][]",
          "name": "_requestHeaders",
          "type": "string[2][]"
        },
        {
          "internalType": "bytes",
          "name": "_requestRadonScript",
          "type": "bytes"
        }
      ],
      "name": "verifyRadonRetrieval",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6101606040523361010052636f1735ab60e01b6101405234801561002257600080fd5b50604051614ed1380380614ed1833981016040819052610041916101eb565b81816040518060400160405280601d81526020017f696f2e7769746e65742e70726f786961626c652e62797465636f64657300000081525082333061008a6100fd60201b60201c565b80546001600160a01b0319166001600160a01b0392831617905581166100ca57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100d381610121565b5030608052151560c052600160025560e0919091528051602090910120610120525061021e915050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec90565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dee80546001600160a01b03191690556000610171600080516020614eb1833981519152546001600160a01b031690565b9050806001600160a01b0316826001600160a01b0316146101e757600080516020614eb183398151915280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b5050565b600080604083850312156101fe57600080fd5b8251801515811461020e57600080fd5b6020939093015192949293505050565b60805160a05160c05160e051610100516101205161014051614c2061029160003960006106af015260006103e6015260006107d601526000610eb70152600081816104250152610efe0152600050506000818161039c0152818161067801528181610d3f0152610e220152614c206000f3fe6080604052600436106102135760003560e01c80639f34df1911610118578063b2299677116100a0578063d5f394881161006f578063d5f39488146107c4578063db4c6b21146107f8578063e30c397814610818578063f2fde38b14610843578063f4f07e991461086357610271565b8063b2299677146106ea578063b4ab01a51461071e578063bff852fa14610750578063c0a673611461079657610271565b8063a47bd1a4116100e7578063a47bd1a414610609578063a4a7cecd14610629578063a83e942c14610649578063a9e954b914610669578063adb7c3f71461069d57610271565b80639f34df1914610589578063a0490fa0146105a9578063a09948b0146105c9578063a0e55336146105e957610271565b80636b58960a1161019b57806379ba50971161016a57806379ba5097146104f25780637f412e23146105075780638da5cb5b146105275780639dd487571461053c5780639eb3ab1f1461056957610271565b80636b58960a1461046a5780636ea3ebe41461048a578063715018a6146104aa57806376b78a06146104bf57610271565b80634c729104116101e25780634c729104146103605780635001f3b51461038d57806352d1902d146103d45780635479d9401461041657806354fd4d501461045557610271565b806321ead36f146102b05780632ebf5d5c146102e65780633679f86414610313578063439fab911461034057610271565b366102715760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206e6f207472616e736044820152636665727360e01b60648201526084015b60405180910390fd5b34801561027d57600080fd5b506102ae6040518060400160405280600f81526020016e1b9bdd081a5b5c1b195b595b9d1959608a1b815250610883565b005b3480156102bc57600080fd5b506102d06102cb366004613768565b6108ef565b6040516102dd91906137d0565b60405180910390f35b3480156102f257600080fd5b506103066103013660046137e3565b6109d7565b6040516102dd919061384c565b34801561031f57600080fd5b5061033361032e3660046137e3565b610a83565b6040516102dd9190613899565b34801561034c57600080fd5b506102ae61035b366004613a1b565b610c46565b34801561036c57600080fd5b5061038061037b3660046137e3565b610e98565b6040516102dd9190613a67565b34801561039957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102dd565b3480156103e057600080fd5b506104087f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102dd565b34801561042257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016102dd565b34801561046157600080fd5b50610306610eb0565b34801561047657600080fd5b50610445610485366004613a8a565b610ee0565b34801561049657600080fd5b506104086104a53660046137e3565b610f41565b3480156104b657600080fd5b506102ae610f56565b3480156104cb57600080fd5b506104df6104da3660046137e3565b610f6a565b60405161ffff90911681526020016102dd565b3480156104fe57600080fd5b506102ae610f88565b34801561051357600080fd5b50610408610522366004613aca565b61101d565b34801561053357600080fd5b506103bc611168565b34801561054857600080fd5b5061055c6105573660046137e3565b611184565b6040516102dd9190613ca1565b34801561057557600080fd5b50610408610584366004613e84565b611569565b34801561059557600080fd5b506103336105a43660046137e3565b61194e565b3480156105b557600080fd5b506104086105c4366004613f58565b611ae7565b3480156105d557600080fd5b506103066105e4366004613fab565b611b31565b3480156105f557600080fd5b506103806106043660046137e3565b611c7d565b34801561061557600080fd5b50610408610624366004613f58565b611cfa565b34801561063557600080fd5b5061040861064436600461410c565b611d49565b34801561065557600080fd5b506102d06106643660046137e3565b612b10565b34801561067557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610408565b3480156106a957600080fd5b506106d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160e01b031990911681526020016102dd565b3480156106f657600080fd5b507f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427df754610408565b34801561072a57600080fd5b5061073e6107393660046137e3565b612b73565b60405160ff90911681526020016102dd565b34801561075c57600080fd5b5060408051808201909152601d81527f5769746e65745265717565737442797465636f64657344656661756c740000006020820152610306565b3480156107a257600080fd5b506107b66107b13660046137e3565b612bea565b6040516102dd9291906141e8565b3480156107d057600080fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080457600080fd5b506103336108133660046137e3565b612cb6565b34801561082457600080fd5b50600080516020614bcb833981519152546001600160a01b03166103bc565b34801561084f57600080fd5b506102ae61085e366004613a8a565b612e41565b34801561086f57600080fd5b5061030661087e36600461420a565b612eb4565b60408051808201909152601d81527f5769746e65745265717565737442797465636f64657344656661756c740000006020820152816040516020016108c9929190614237565b60408051601f198184030181529082905262461bcd60e51b82526102689160040161384c565b606060006108fb613009565b6000868152602091909152604090206001810154909150808510156109ce5780610925858761428a565b111561093857610935858261429d565b93505b836001600160401b0381111561095057610950613930565b604051908082528060200260200182016040528015610979578160200160208202803683370190505b50925060005b83518110156109cc57600283016000610998888461428a565b8152602001908152602001600020548482815181106109b9576109b96142b0565b602090810291909101015260010161097f565b505b50509392505050565b60606109e1613009565b60008381526006919091016020526040902080546109fe906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a906142c6565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509050919050565b604080518082019091526000815260606020820152610aa0613009565b600083815260029190910160205260409081902081518083019092528054829060ff16600b811115610ad457610ad461385f565b600b811115610ae557610ae561385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610bfe5760008481526020902060408051808201909152600284029091018054829060ff166009811115610b4857610b4861385f565b6009811115610b5957610b5961385f565b8152602001600182018054610b6d906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b99906142c6565b8015610be65780601f10610bbb57610100808354040283529160200191610be6565b820191906000526020600020905b815481529060010190602001808311610bc957829003601f168201915b50505050508152505081526020019060010190610b0e565b505050915250508051909150600b811115610c1b57610c1b61385f565b60ff16600003610c415760405163b020432960e01b815260048101839052602401610268565b919050565b600080516020614bab833981519152546001600160a01b031680610ca75781806020019051810190610c7891906142fa565b600080516020614bab83398151915280546001600160a01b0319166001600160a01b0383161790559050610d0d565b336001600160a01b03821614610d0d5760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f74207468652060448201526437bbb732b960d91b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031615610df3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031603610df35760405162461bcd60e51b815260206004820152602b60248201527f5769746e65745265717565737442797465636f6465733a20616c72656164792060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec80546001600160a01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181169283179093553f9183167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6610e7f610eb0565b604051610e8c919061384c565b60405180910390a45050565b6000610ea38261302d565b6003015460ff1692915050565b6060610edb7f000000000000000000000000000000000000000000000000000000000000000061304a565b905090565b600080516020614bab833981519152546000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008015610f3a5750826001600160a01b0316816001600160a01b0316145b9392505050565b6000610f4c8261302d565b6004015492915050565b610f5e6130f5565b610f686000613127565b565b6000610f758261302d565b60030154610100900461ffff1692915050565b3380610fa9600080516020614bcb833981519152546001600160a01b031690565b6001600160a01b0316146110115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610268565b61101a81613127565b50565b6000816040516020016110309190613899565b6040516020818303038152906040528051906020012090506000611052613009565b600083815260029190910160205260409020805490915060ff16600b81111561107d5761107d61385f565b60ff1615801561108f57506001810154155b156111625760405163daf4b0ef60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063daf4b0ef906110cb908690600401614317565b60006040518083038186803b1580156110e357600080fd5b505af41580156110f7573d6000803e3d6000fd5b50508451835490925083915060ff1916600183600b81111561111b5761111b61385f565b021790555061112e8184602001516131c8565b6040518281527feb8b5415ec9648a9403c5cce90965dfa18af4388f474323741018a06e231be829060200160405180910390a15b50919050565b600080516020614bab833981519152546001600160a01b031690565b6111c56040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b6111cd613009565b60008381526003919091016020908152604091829020825160e08101909352805460ff808216855291928401916101009091041660048111156112125761121261385f565b60048111156112235761122361385f565b8152815460209091019062010000900460ff1660138111156112475761124761385f565b60138111156112585761125861385f565b815260200160018201805461126c906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611298906142c6565b80156112e55780601f106112ba576101008083540402835291602001916112e5565b820191906000526020600020905b8154815290600101906020018083116112c857829003601f168201915b505050505081526020016002820180546112fe906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461132a906142c6565b80156113775780601f1061134c57610100808354040283529160200191611377565b820191906000526020600020905b81548152906001019060200180831161135a57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561148357600084815260208120604080518082019091529160028086029092019190835b828210156114705783820180546113e3906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461140f906142c6565b801561145c5780601f106114315761010080835404028352916020019161145c565b820191906000526020600020905b81548152906001019060200180831161143f57829003601f168201915b5050505050815260200190600101906113cd565b50505050815260200190600101906113a5565b50505050815260200160048201805461149b906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546114c7906142c6565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b5050505050815250509050600060048111156115325761153261385f565b816020015160048111156115485761154861385f565b03610c4157604051633552703b60e21b815260048101839052602401610268565b600088600481111561157d5761157d61385f565b604051631746472760e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__916317464727916115c191908c908c908c908c908c908c908c90600401614441565b602060405180830381865af41580156115de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160291906144ad565b9050600061160e613009565b60008381526003919091016020526040902054610100900460ff16600481111561163a5761163a61385f565b03611942576040518060e001604052806116cf8a8a604051806040016040528060018152602001600160fd1b8152508b8b604051806040016040528060018152602001600160fd1b8152508c604051806040016040528060018152602001600160fd1b8152508d8d6040516020016116bb9a999897969594939291906144c6565b60405160208183030381529060405261325c565b60ff1681526020018a60048111156116e9576116e961385f565b815260200173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63f3106f7886866040518363ffffffff1660e01b8152600401611727929190614563565b602060405180830381865af4158015611744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117689190614577565b60138111156117795761177961385f565b815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a0181900481028201810190925288815291810191908990899081908401838280828437600092019190915250505090825250602080820187905260408051601f870183900483028101830182528681529201919086908690819084018382808284376000920191909152505050915250611838613009565b6000838152600391909101602090815260409091208251815460ff90911660ff19821681178355928401519192839161ffff1916176101008360048111156118825761188261385f565b021790555060408201518154829062ff00001916620100008360138111156118ac576118ac61385f565b0217905550606082015160018201906118c590826145e8565b50608082015160028201906118da90826145e8565b5060a082015180516118f6916003840191602090910190613503565b5060c0820151600482019061190b90826145e8565b50506040518281527fd4d6341509dbdeb3a349aa77cc95076376f8e1c84fd3d27e0081424b01909272915060200160405180910390a15b98975050505050505050565b60408051808201909152600081526060602082015261196b613009565b60020160006119798461302d565b6001015481526020810191909152604090810160002081518083019092528054829060ff16600b8111156119af576119af61385f565b600b8111156119c0576119c061385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115611a2357611a2361385f565b6009811115611a3457611a3461385f565b8152602001600182018054611a48906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a74906142c6565b8015611ac15780601f10611a9657610100808354040283529160200191611ac1565b820191906000526020600020905b815481529060010190602001808311611aa457829003601f168201915b505050505081525050815260200190600101906119e9565b505050915250909392505050565b6000611b2883838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133d192505050565b90505b92915050565b60405163acbade1f60e01b81526001600160401b0383166004820152600560f91b602482015260609073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015611b96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bbe91908101906146a7565b8484611bd7611bd236879003870187614714565b613423565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291611c0d9190600401614767565b600060405180830381865af4158015611c2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5291908101906146a7565b604051602001611c6594939291906147b8565b60405160208183030381529060405290509392505050565b600080611c88613009565b60008481526003919091016020526040902054610100900460ff166004811115611cb457611cb461385f565b03611cd557604051633552703b60e21b815260048101839052602401610268565b611cdd613009565b600092835260030160205250604090205462010000900460ff1690565b6000611d04613009565b60010160008484604051602001611d1c9291906147f3565b60405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b6000808686868686604051602001611d65959493929190614803565b604051602081830303815290604052805190602001209050611d85613009565b600082815260059190910160205260408120549250611da2613009565b6000838152600591909101602052604090205403612b06578651600003611e195760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f2072657472696044820152646576616c7360d81b6064820152608401610268565b8251875114611e785760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a2061726773206d69736044820152640dac2e8c6d60db1b6064820152608401610268565b6000611e82613009565b600088815260029190910160205260409081902081518083019092528054829060ff16600b811115611eb657611eb661385f565b600b811115611ec757611ec761385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611fe05760008481526020902060408051808201909152600284029091018054829060ff166009811115611f2a57611f2a61385f565b6009811115611f3b57611f3b61385f565b8152602001600182018054611f4f906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7b906142c6565b8015611fc85780601f10611f9d57610100808354040283529160200191611fc8565b820191906000526020600020905b815481529060010190602001808311611fab57829003601f168201915b50505050508152505081526020019060010190611ef0565b505050508152505090506000611ff4613009565b600088815260029190910160205260409081902081518083019092528054829060ff16600b8111156120285761202861385f565b600b8111156120395761203961385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156121525760008481526020902060408051808201909152600284029091018054829060ff16600981111561209c5761209c61385f565b60098111156120ad576120ad61385f565b81526020016001820180546120c1906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546120ed906142c6565b801561213a5780601f1061210f5761010080835404028352916020019161213a565b820191906000526020600020905b81548152906001019060200180831161211d57829003601f168201915b50505050508152505081526020019060010190612062565b505050508152505090506000808a516001600160401b0381111561217857612178613930565b6040519080825280602002602001820160405280156121ea57816020015b6121d76040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816121965790505b50905060005b815181101561270057612201613009565b60030160008d8381518110612218576122186142b0565b6020908102919091018101518252818101929092526040908101600020815160e08101909252805460ff808216845292939192918401916101009091041660048111156122675761226761385f565b60048111156122785761227861385f565b8152815460209091019062010000900460ff16601381111561229c5761229c61385f565b60138111156122ad576122ad61385f565b81526020016001820180546122c1906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546122ed906142c6565b801561233a5780601f1061230f5761010080835404028352916020019161233a565b820191906000526020600020905b81548152906001019060200180831161231d57829003601f168201915b50505050508152602001600282018054612353906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461237f906142c6565b80156123cc5780601f106123a1576101008083540402835291602001916123cc565b820191906000526020600020905b8154815290600101906020018083116123af57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156124d857600084815260208120604080518082019091529160028086029092019190835b828210156124c5578382018054612438906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612464906142c6565b80156124b15780601f10612486576101008083540402835291602001916124b1565b820191906000526020600020905b81548152906001019060200180831161249457829003601f168201915b505050505081526020019060010190612422565b50505050815260200190600101906123fa565b5050505081526020016004820180546124f0906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461251c906142c6565b80156125695780601f1061253e57610100808354040283529160200191612569565b820191906000526020600020905b81548152906001019060200180831161254c57829003601f168201915b505050505081525050828281518110612584576125846142b0565b6020026020010181905250806000036125bd57816000815181106125aa576125aa6142b0565b6020026020010151604001519250612662565b8260138111156125cf576125cf61385f565b8282815181106125e1576125e16142b0565b60200260200101516040015160138111156125fe576125fe61385f565b146126625760405162461bcd60e51b815260206004820152602e60248201527f5769746e65745265717565737442797465636f6465733a206d69736d6174636860448201526d696e672072657472696576616c7360901b6064820152608401610268565b818181518110612674576126746142b0565b60200260200101516000015160ff16888281518110612695576126956142b0565b60200260200101515110156126f85760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206d697373696e67206044820152636172677360e01b6064820152608401610268565b6001016121f0565b508160138111156127135761271361385f565b604051630160730f60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91630160730f9161274b91908c906004016148d2565b602060405180830381865af4158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c91906148f1565b975060008173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63b6349ebd90918a8873__$6fdcaaf223938e26cbe304f958c2f40bbf$__631c02d22b90916040518263ffffffff1660e01b81526004016127e79190614317565b600060405180830381865af4158015612804573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282c91908101906146a7565b604051631c02d22b60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__90631c02d22b90612863908c90600401614317565b600060405180830381865af4158015612880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a891908101906146a7565b8e6040518663ffffffff1660e01b81526004016128c99594939291906149aa565b600060405180830381865af41580156128e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261290e91908101906146a7565b905061ffff815111156129755760405162461bcd60e51b815260206004820152602960248201527f5769746e65745265717565737442797465636f6465733a20746f6f20686561766044820152681e481c995c5d595cdd60ba1b6064820152608401610268565b61297e816133d1565b965086612989613009565b60008881526005919091016020526040902055806129a5613009565b600089815260069190910160205260409020906129c290826145e8565b506040518060e001604052808981526020018c81526020018881526020018460138111156129f2576129f261385f565b81526020018a61ffff1681526020018d81526020018b815250612a13613009565b600089815260049190910160209081526040909120825180519192612a3d9284929091019061355d565b50602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690836013811115612a7c57612a7c61385f565b0217905550608082015160038201805461ffff9092166101000262ffff001990921691909117905560a08201518051612abf9160048401916020909101906135b6565b5060c091909101516005909101556040518781527fe8845fcb11242df46ec5ca06bf7d381c3c6e9cc4f110abacffc933558e8dd67d9060200160405180910390a150505050505b5095945050505050565b6060612b1b8261302d565b600401805480602002602001604051908101604052809291908181526020018280548015610a7757602002820191906000526020600020905b815481526020019060010190808311612b545750505050509050919050565b600080612b7e613009565b60008481526003919091016020526040902054610100900460ff166004811115612baa57612baa61385f565b03612bcb57604051633552703b60e21b815260048101839052602401610268565b612bd3613009565b600092835260030160205250604090205460ff1690565b60606000612bf6613009565b600084815260209190915260409020612c0d613009565b6000858152602091909152604090206001015481548290612c2d906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612c59906142c6565b8015612ca65780601f10612c7b57610100808354040283529160200191612ca6565b820191906000526020600020905b815481529060010190602001808311612c8957829003601f168201915b5050505050915091509150915091565b604080518082019091526000815260606020820152612cd3613009565b6002016000612ce18461302d565b6005015481526020810191909152604090810160002081518083019092528054829060ff16600b811115612d1757612d1761385f565b600b811115612d2857612d2861385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115612d8b57612d8b61385f565b6009811115612d9c57612d9c61385f565b8152602001600182018054612db0906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddc906142c6565b8015612e295780601f10612dfe57610100808354040283529160200191612e29565b820191906000526020600020905b815481529060010190602001808311612e0c57829003601f168201915b50505050508152505081526020019060010190612d51565b612e496130f5565b600080516020614bcb83398151915280546001600160a01b0319166001600160a01b038316908117909155612e7c611168565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60606000612ec1846109d7565b805160405163acbade1f60e01b81526001600160401b039091166004820152600560f91b602482015290915073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015612f29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f5191908101906146a7565b81612f64611bd236879003870187614714565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291612f9a9190600401614767565b600060405180830381865af4158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf91908101906146a7565b604051602001612ff193929190614aec565b60405160208183030381529060405291505092915050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427def90565b6000613037613009565b6000928352600401602052506040902090565b60606000613057836134ca565b6001600160401b0381111561306e5761306e613930565b6040519080825280601f01601f191660200182016040528015613098576020820181803683370190505b50905060005b81518110156130ee578381602081106130b9576130b96142b0565b1a60f81b8282815181106130cf576130cf6142b0565b60200101906001600160f81b031916908160001a90535060010161309e565b5092915050565b336130fe611168565b6001600160a01b031614610f685760405163118cdaa760e01b8152336004820152602401610268565b600080516020614bcb83398151915280546001600160a01b0319169055600061314e611168565b9050806001600160a01b0316826001600160a01b0316146131c457600080516020614bab83398151915280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b5050565b60005b815181101561325757826001018282815181106131ea576131ea6142b0565b60209081029190910181015182546001818101855560009485529290932081516002909402018054919390929091839160ff19909116908360098111156132335761323361385f565b02179055506020820151600182019061324c90826145e8565b5050506001016131cb565b505050565b600060038251101561327057506000919050565b8151600090600119015b808210156133ca57601760fa1b6001600160f81b0319168483815181106132a3576132a36142b0565b01602001516001600160f81b0319161480156132ef5750601760fa1b6001600160f81b0319168483600201815181106132de576132de6142b0565b01602001516001600160f81b031916145b801561332c5750600360fc1b6001600160f81b03191684836001018151811061331a5761331a6142b0565b01602001516001600160f81b03191610155b80156133695750603960f81b6001600160f81b031916848360010181518110613357576133576142b0565b01602001516001600160f81b03191611155b156133bf576000600360fc1b60f81c85846001018151811061338d5761338d6142b0565b602001015160f81c60f81b60f81c0360010190508360ff168160ff1611156133b3578093505b6003830192505061327a565b60019091019061327a565b5050919050565b60006002826040516133e39190614b2f565b602060405180830381855afa158015613400573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611b2b91906144ad565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a00160405280836000015160ff168152602001603360ff16815260200183602001516001600160401b03168152602001836020015160646134949190614b4b565b6001600160401b03168152602001836000015160ff1684602001516134b99190614b76565b6001600160401b0316905292915050565b60005b6020811015610c41578181602081106134e8576134e86142b0565b1a60f81b6001600160f81b03191615610c41576001016134cd565b82805482825590600052602060002090600202810192821561354d579160200282015b8281111561354d57825161353d90839060026135fd565b5091602001919060020190613526565b50613559929150613642565b5090565b8280548282559060005260206000209081019282156135aa579160200282015b828111156135aa578251805161359a91849160209091019061365f565b509160200191906001019061357d565b506135599291506136a5565b8280548282559060005260206000209081019282156135f1579160200282015b828111156135f15782518255916020019190600101906135d6565b506135599291506136c2565b8260028101928215613636579160200282015b82811115613636578251829061362690826145e8565b5091602001919060010190613610565b506135599291506136d7565b8082111561355957600061365682826136f4565b50600201613642565b828054828255906000526020600020908101928215613636579160200282015b82811115613636578251829061369590826145e8565b509160200191906001019061367f565b808211156135595760006136b98282613710565b506001016136a5565b5b8082111561355957600081556001016136c3565b808211156135595760006136eb828261372e565b506001016136d7565b506000613701828261372e565b50610f6890600101600061372e565b508054600082559060005260206000209081019061101a91906136d7565b50805461373a906142c6565b6000825580601f1061374a575050565b601f01602090049060005260206000209081019061101a91906136c2565b60008060006060848603121561377d57600080fd5b505081359360208301359350604090920135919050565b60008151808452602080850194506020840160005b838110156137c5578151875295820195908201906001016137a9565b509495945050505050565b602081526000611b286020830184613794565b6000602082840312156137f557600080fd5b5035919050565b60005b838110156138175781810151838201526020016137ff565b50506000910152565b600081518084526138388160208601602086016137fc565b601f01601f19169290920160200192915050565b602081526000611b286020830184613820565b634e487b7160e01b600052602160045260246000fd5b600c81106138855761388561385f565b9052565b600a81106138855761388561385f565b60006020808352606083016138b18285018651613875565b81850151604080604087015282825180855260808801915060808160051b8901019450858401935060005b8181101561392257607f1989870301835284516138fa878251613889565b87015186880185905261390f87860182613820565b96505093860193918601916001016138dc565b509398975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561396857613968613930565b60405290565b604051601f8201601f191681016001600160401b038111828210171561399657613996613930565b604052919050565b60006001600160401b038211156139b7576139b7613930565b50601f01601f191660200190565b600082601f8301126139d657600080fd5b81356139e96139e48261399e565b61396e565b8181528460208386010111156139fe57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613a2d57600080fd5b81356001600160401b03811115613a4357600080fd5b613a4f848285016139c5565b949350505050565b601481106138855761388561385f565b60208101611b2b8284613a57565b6001600160a01b038116811461101a57600080fd5b600060208284031215613a9c57600080fd5b8135610f3a81613a75565b60006001600160401b03821115613ac057613ac0613930565b5060051b60200190565b60006020808385031215613add57600080fd5b82356001600160401b0380821115613af457600080fd5b81850191506040808388031215613b0a57600080fd5b613b12613946565b8335600c8110613b2157600080fd5b81528385013583811115613b3457600080fd5b80850194505087601f850112613b4957600080fd5b8335613b576139e482613aa7565b81815260059190911b8501860190868101908a831115613b7657600080fd5b8787015b83811015613bf757803587811115613b925760008081fd5b8801808d03601f1901871315613ba85760008081fd5b613bb0613946565b8a820135600a8110613bc25760008081fd5b81528188013589811115613bd65760008081fd5b613be48f8d838601016139c5565b828d015250845250918801918801613b7a565b509683019690965250979650505050505050565b600581106138855761388561385f565b600082825180855260208086019550808260051b8401018186016000805b85811015613c9357868403601f19018a5282518460408101845b6002811015613c7e578782038352613c6c828551613820565b93890193928901929150600101613c53565b509b87019b9550505091840191600101613c39565b509198975050505050505050565b6020815260ff825116602082015260006020830151613cc36040840182613c0b565b506040830151613cd66060840182613a57565b50606083015160e06080840152613cf1610100840182613820565b90506080840151601f19808584030160a0860152613d0f8383613820565b925060a08601519150808584030160c0860152613d2c8383613c1b565b925060c08601519150808584030160e086015250613d4a8282613820565b95945050505050565b60008083601f840112613d6557600080fd5b5081356001600160401b03811115613d7c57600080fd5b602083019150836020828501011115613d9457600080fd5b9250929050565b600082601f830112613dac57600080fd5b81356020613dbc6139e483613aa7565b82815260059290921b84018101918181019086841115613ddb57600080fd5b8286015b84811015613e795780356001600160401b0380821115613dff5760008081fd5b818901915089603f830112613e145760008081fd5b613e1c613946565b80606084018c811115613e2f5760008081fd5b8885015b81811015613e6757803585811115613e4b5760008081fd5b613e598f8c838a01016139c5565b855250928901928901613e33565b50508652505050918301918301613ddf565b509695505050505050565b60008060008060008060008060a0898b031215613ea057600080fd5b883560058110613eaf57600080fd5b975060208901356001600160401b0380821115613ecb57600080fd5b613ed78c838d01613d53565b909950975060408b0135915080821115613ef057600080fd5b613efc8c838d01613d53565b909750955060608b0135915080821115613f1557600080fd5b613f218c838d01613d9b565b945060808b0135915080821115613f3757600080fd5b50613f448b828c01613d53565b999c989b5096995094979396929594505050565b60008060208385031215613f6b57600080fd5b82356001600160401b03811115613f8157600080fd5b613f8d85828601613d53565b90969095509350505050565b60006040828403121561116257600080fd5b600080600060608486031215613fc057600080fd5b83356001600160401b03811115613fd657600080fd5b613fe286828701613d53565b9094509250613ff690508560208601613f99565b90509250925092565b61ffff8116811461101a57600080fd5b8035610c4181613fff565b600082601f83011261402b57600080fd5b8135602061403b6139e483613aa7565b82815260059290921b8401810191818101908684111561405a57600080fd5b8286015b84811015613e795780356001600160401b038082111561407d57600080fd5b818901915089603f83011261409157600080fd5b858201356140a16139e482613aa7565b81815260059190911b830160400190878101908c8311156140c157600080fd5b604085015b838110156140fa578035858111156140dd57600080fd5b6140ec8f6040838a01016139c5565b8452509189019189016140c6565b5087525050509284019250830161405e565b600080600080600060a0868803121561412457600080fd5b85356001600160401b038082111561413b57600080fd5b818801915088601f83011261414f57600080fd5b8135602061415f6139e483613aa7565b82815260059290921b8401810191818101908c84111561417e57600080fd5b948201945b8386101561419c57853582529482019490820190614183565b995050890135965050604088013594506141b86060890161400f565b935060808801359150808211156141ce57600080fd5b506141db8882890161401a565b9150509295509295909350565b6040815260006141fb6040830185613820565b90508260208301529392505050565b6000806060838503121561421d57600080fd5b8235915061422e8460208501613f99565b90509250929050565b600083516142498184602088016137fc565b6101d160f51b90830190815283516142688160028401602088016137fc565b01600201949350505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611b2b57611b2b614274565b81810381811115611b2b57611b2b614274565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806142da57607f821691505b60208210810361116257634e487b7160e01b600052602260045260246000fd5b60006020828403121561430c57600080fd5b8151610f3a81613a75565b600060208083526060830161432f8285018651613875565b81850151604080604087015282825180855260808801915060808160051b8901019450858401935060005b8181101561392257607f198987030183528451614378878251613889565b87015186880185905261438d87860182613820565b965050938601939186019160010161435a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600082825180855260208086019550808260051b8401018186016000805b85811015613c9357868403601f19018a5282518460408101845b600281101561442c57878203835261441a828551613820565b93890193928901929150600101614401565b509b87019b95505050918401916001016143e7565b61444b818a613c0b565b60a06020820152600061446260a08301898b6143a0565b828103604084015261447581888a6143a0565b9050828103606084015261448981876143c9565b9050828103608084015261449e8185876143a0565b9b9a5050505050505050505050565b6000602082840312156144bf57600080fd5b5051919050565b60e0815260006144da60e083018c8e6143a0565b82810360208401526144ec818c613820565b90508281036040840152614501818a8c6143a0565b905082810360608401526145158189613820565b905082810360808401526145298188613c1b565b905082810360a084015261453d8187613820565b905082810360c08401526145528185876143a0565b9d9c50505050505050505050505050565b602081526000613a4f6020830184866143a0565b60006020828403121561458957600080fd5b815160148110610f3a57600080fd5b601f821115613257576000816000526020600020601f850160051c810160208610156145c15750805b601f850160051c820191505b818110156145e0578281556001016145cd565b505050505050565b81516001600160401b0381111561460157614601613930565b6146158161460f84546142c6565b84614598565b602080601f83116001811461464a57600084156146325750858301515b600019600386901b1c1916600185901b1785556145e0565b600085815260208120601f198616915b828110156146795788860151825594840194600190910190840161465a565b50858210156146975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156146b957600080fd5b81516001600160401b038111156146cf57600080fd5b8201601f810184136146e057600080fd5b80516146ee6139e48261399e565b81815285602083850101111561470357600080fd5b613d4a8260208301602086016137fc565b60006040828403121561472657600080fd5b61472e613946565b823560ff8116811461473f57600080fd5b815260208301356001600160401b038116811461475b57600080fd5b60208201529392505050565b600060a08201905060ff835116825260ff602084015116602083015260408301516001600160401b038082166040850152806060860151166060850152806080860151166080850152505092915050565b600085516147ca818460208a016137fc565b820184868237600090850190815283516147e88183602088016137fc565b019695505050505050565b8183823760009101908152919050565b60a08152600061481660a0830188613794565b6020878185015286604085015261ffff86166060850152838203608085015281855180845282840191506005838260051b8601018489016000805b858110156148be57601f198985038101885283518051808752908a01908a87019080891b88018c01865b828110156148a757858a8303018452614895828651613820565b948e0194938e0193915060010161487b565b509a8c019a97505050938901935050600101614851565b50919e9d5050505050505050505050505050565b604081016148e08285613a57565b61ffff831660208301529392505050565b60006020828403121561490357600080fd5b8151610f3a81613fff565b6000828251808552602080860195506005818360051b8501018287016000805b8681101561499b57601f1988850381018c5283518051808752908801908887019080891b88018a01865b8281101561498457858a8303018452614972828651613820565b948c0194938c01939150600101614958565b509e8a019e9750505093870193505060010161492e565b50919998505050505050505050565b600060a080830160a0845280895180835260c0925060c08601915060c08160051b8701016020808d0160005b84811015614a905760bf198a8503018652815160e060ff825116865284820151614a0286880182613c0b565b50604080830151614a1582890182613a57565b50506060808301518282890152614a2e83890182613820565b9250505060808083015187830382890152614a498382613820565b92505050898201518682038b880152614a6282826143c9565b91505088820151915085810389870152614a7c8183613820565b9785019795505050908201906001016149d6565b505087820390880152614aa3818c61490e565b9450505050508281036040840152614abb8187613820565b90508281036060840152614acf8186613820565b915050614ae2608083018461ffff169052565b9695505050505050565b60008451614afe8184602089016137fc565b845190830190614b128183602089016137fc565b8451910190614b258183602088016137fc565b0195945050505050565b60008251614b418184602087016137fc565b9190910192915050565b6001600160401b03818116838216028082169190828114614b6e57614b6e614274565b505092915050565b60006001600160401b0380841680614b9e57634e487b7160e01b600052601260045260246000fd5b9216919091049291505056fe673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427ded673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427deea2646970667358221220440e6734861c85b24cfc7e636266cc599e549ee2e7412c5b94659215f5bb09d664736f6c63430008190033673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427ded",
  "deployedBytecode": "0x6080604052600436106102135760003560e01c80639f34df1911610118578063b2299677116100a0578063d5f394881161006f578063d5f39488146107c4578063db4c6b21146107f8578063e30c397814610818578063f2fde38b14610843578063f4f07e991461086357610271565b8063b2299677146106ea578063b4ab01a51461071e578063bff852fa14610750578063c0a673611461079657610271565b8063a47bd1a4116100e7578063a47bd1a414610609578063a4a7cecd14610629578063a83e942c14610649578063a9e954b914610669578063adb7c3f71461069d57610271565b80639f34df1914610589578063a0490fa0146105a9578063a09948b0146105c9578063a0e55336146105e957610271565b80636b58960a1161019b57806379ba50971161016a57806379ba5097146104f25780637f412e23146105075780638da5cb5b146105275780639dd487571461053c5780639eb3ab1f1461056957610271565b80636b58960a1461046a5780636ea3ebe41461048a578063715018a6146104aa57806376b78a06146104bf57610271565b80634c729104116101e25780634c729104146103605780635001f3b51461038d57806352d1902d146103d45780635479d9401461041657806354fd4d501461045557610271565b806321ead36f146102b05780632ebf5d5c146102e65780633679f86414610313578063439fab911461034057610271565b366102715760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206e6f207472616e736044820152636665727360e01b60648201526084015b60405180910390fd5b34801561027d57600080fd5b506102ae6040518060400160405280600f81526020016e1b9bdd081a5b5c1b195b595b9d1959608a1b815250610883565b005b3480156102bc57600080fd5b506102d06102cb366004613768565b6108ef565b6040516102dd91906137d0565b60405180910390f35b3480156102f257600080fd5b506103066103013660046137e3565b6109d7565b6040516102dd919061384c565b34801561031f57600080fd5b5061033361032e3660046137e3565b610a83565b6040516102dd9190613899565b34801561034c57600080fd5b506102ae61035b366004613a1b565b610c46565b34801561036c57600080fd5b5061038061037b3660046137e3565b610e98565b6040516102dd9190613a67565b34801561039957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102dd565b3480156103e057600080fd5b506104087f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016102dd565b34801561042257600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190151581526020016102dd565b34801561046157600080fd5b50610306610eb0565b34801561047657600080fd5b50610445610485366004613a8a565b610ee0565b34801561049657600080fd5b506104086104a53660046137e3565b610f41565b3480156104b657600080fd5b506102ae610f56565b3480156104cb57600080fd5b506104df6104da3660046137e3565b610f6a565b60405161ffff90911681526020016102dd565b3480156104fe57600080fd5b506102ae610f88565b34801561051357600080fd5b50610408610522366004613aca565b61101d565b34801561053357600080fd5b506103bc611168565b34801561054857600080fd5b5061055c6105573660046137e3565b611184565b6040516102dd9190613ca1565b34801561057557600080fd5b50610408610584366004613e84565b611569565b34801561059557600080fd5b506103336105a43660046137e3565b61194e565b3480156105b557600080fd5b506104086105c4366004613f58565b611ae7565b3480156105d557600080fd5b506103066105e4366004613fab565b611b31565b3480156105f557600080fd5b506103806106043660046137e3565b611c7d565b34801561061557600080fd5b50610408610624366004613f58565b611cfa565b34801561063557600080fd5b5061040861064436600461410c565b611d49565b34801561065557600080fd5b506102d06106643660046137e3565b612b10565b34801561067557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000003f610408565b3480156106a957600080fd5b506106d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160e01b031990911681526020016102dd565b3480156106f657600080fd5b507f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427df754610408565b34801561072a57600080fd5b5061073e6107393660046137e3565b612b73565b60405160ff90911681526020016102dd565b34801561075c57600080fd5b5060408051808201909152601d81527f5769746e65745265717565737442797465636f64657344656661756c740000006020820152610306565b3480156107a257600080fd5b506107b66107b13660046137e3565b612bea565b6040516102dd9291906141e8565b3480156107d057600080fd5b506103bc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080457600080fd5b506103336108133660046137e3565b612cb6565b34801561082457600080fd5b50600080516020614bcb833981519152546001600160a01b03166103bc565b34801561084f57600080fd5b506102ae61085e366004613a8a565b612e41565b34801561086f57600080fd5b5061030661087e36600461420a565b612eb4565b60408051808201909152601d81527f5769746e65745265717565737442797465636f64657344656661756c740000006020820152816040516020016108c9929190614237565b60408051601f198184030181529082905262461bcd60e51b82526102689160040161384c565b606060006108fb613009565b6000868152602091909152604090206001810154909150808510156109ce5780610925858761428a565b111561093857610935858261429d565b93505b836001600160401b0381111561095057610950613930565b604051908082528060200260200182016040528015610979578160200160208202803683370190505b50925060005b83518110156109cc57600283016000610998888461428a565b8152602001908152602001600020548482815181106109b9576109b96142b0565b602090810291909101015260010161097f565b505b50509392505050565b60606109e1613009565b60008381526006919091016020526040902080546109fe906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a906142c6565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509050919050565b604080518082019091526000815260606020820152610aa0613009565b600083815260029190910160205260409081902081518083019092528054829060ff16600b811115610ad457610ad461385f565b600b811115610ae557610ae561385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015610bfe5760008481526020902060408051808201909152600284029091018054829060ff166009811115610b4857610b4861385f565b6009811115610b5957610b5961385f565b8152602001600182018054610b6d906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b99906142c6565b8015610be65780601f10610bbb57610100808354040283529160200191610be6565b820191906000526020600020905b815481529060010190602001808311610bc957829003601f168201915b50505050508152505081526020019060010190610b0e565b505050915250508051909150600b811115610c1b57610c1b61385f565b60ff16600003610c415760405163b020432960e01b815260048101839052602401610268565b919050565b600080516020614bab833981519152546001600160a01b031680610ca75781806020019051810190610c7891906142fa565b600080516020614bab83398151915280546001600160a01b0319166001600160a01b0383161790559050610d0d565b336001600160a01b03821614610d0d5760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f74207468652060448201526437bbb732b960d91b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031615610df3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec546001600160a01b031603610df35760405162461bcd60e51b815260206004820152602b60248201527f5769746e65745265717565737442797465636f6465733a20616c72656164792060448201526a1a5b9a5d1a585b1a5e995960aa1b6064820152608401610268565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427dec80546001600160a01b0319167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181169283179093553f9183167fe73e754121f0bad1327816970101955bfffdf53d270ac509d777c25be070d7f6610e7f610eb0565b604051610e8c919061384c565b60405180910390a45050565b6000610ea38261302d565b6003015460ff1692915050565b6060610edb7f000000000000000000000000000000000000000000000000000000000000000061304a565b905090565b600080516020614bab833981519152546000906001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000008015610f3a5750826001600160a01b0316816001600160a01b0316145b9392505050565b6000610f4c8261302d565b6004015492915050565b610f5e6130f5565b610f686000613127565b565b6000610f758261302d565b60030154610100900461ffff1692915050565b3380610fa9600080516020614bcb833981519152546001600160a01b031690565b6001600160a01b0316146110115760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610268565b61101a81613127565b50565b6000816040516020016110309190613899565b6040516020818303038152906040528051906020012090506000611052613009565b600083815260029190910160205260409020805490915060ff16600b81111561107d5761107d61385f565b60ff1615801561108f57506001810154155b156111625760405163daf4b0ef60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063daf4b0ef906110cb908690600401614317565b60006040518083038186803b1580156110e357600080fd5b505af41580156110f7573d6000803e3d6000fd5b50508451835490925083915060ff1916600183600b81111561111b5761111b61385f565b021790555061112e8184602001516131c8565b6040518281527feb8b5415ec9648a9403c5cce90965dfa18af4388f474323741018a06e231be829060200160405180910390a15b50919050565b600080516020614bab833981519152546001600160a01b031690565b6111c56040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b6111cd613009565b60008381526003919091016020908152604091829020825160e08101909352805460ff808216855291928401916101009091041660048111156112125761121261385f565b60048111156112235761122361385f565b8152815460209091019062010000900460ff1660138111156112475761124761385f565b60138111156112585761125861385f565b815260200160018201805461126c906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611298906142c6565b80156112e55780601f106112ba576101008083540402835291602001916112e5565b820191906000526020600020905b8154815290600101906020018083116112c857829003601f168201915b505050505081526020016002820180546112fe906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461132a906142c6565b80156113775780601f1061134c57610100808354040283529160200191611377565b820191906000526020600020905b81548152906001019060200180831161135a57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561148357600084815260208120604080518082019091529160028086029092019190835b828210156114705783820180546113e3906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461140f906142c6565b801561145c5780601f106114315761010080835404028352916020019161145c565b820191906000526020600020905b81548152906001019060200180831161143f57829003601f168201915b5050505050815260200190600101906113cd565b50505050815260200190600101906113a5565b50505050815260200160048201805461149b906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546114c7906142c6565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b5050505050815250509050600060048111156115325761153261385f565b816020015160048111156115485761154861385f565b03610c4157604051633552703b60e21b815260048101839052602401610268565b600088600481111561157d5761157d61385f565b604051631746472760e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__916317464727916115c191908c908c908c908c908c908c908c90600401614441565b602060405180830381865af41580156115de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160291906144ad565b9050600061160e613009565b60008381526003919091016020526040902054610100900460ff16600481111561163a5761163a61385f565b03611942576040518060e001604052806116cf8a8a604051806040016040528060018152602001600160fd1b8152508b8b604051806040016040528060018152602001600160fd1b8152508c604051806040016040528060018152602001600160fd1b8152508d8d6040516020016116bb9a999897969594939291906144c6565b60405160208183030381529060405261325c565b60ff1681526020018a60048111156116e9576116e961385f565b815260200173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63f3106f7886866040518363ffffffff1660e01b8152600401611727929190614563565b602060405180830381865af4158015611744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117689190614577565b60138111156117795761177961385f565b815260200189898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8a0181900481028201810190925288815291810191908990899081908401838280828437600092019190915250505090825250602080820187905260408051601f870183900483028101830182528681529201919086908690819084018382808284376000920191909152505050915250611838613009565b6000838152600391909101602090815260409091208251815460ff90911660ff19821681178355928401519192839161ffff1916176101008360048111156118825761188261385f565b021790555060408201518154829062ff00001916620100008360138111156118ac576118ac61385f565b0217905550606082015160018201906118c590826145e8565b50608082015160028201906118da90826145e8565b5060a082015180516118f6916003840191602090910190613503565b5060c0820151600482019061190b90826145e8565b50506040518281527fd4d6341509dbdeb3a349aa77cc95076376f8e1c84fd3d27e0081424b01909272915060200160405180910390a15b98975050505050505050565b60408051808201909152600081526060602082015261196b613009565b60020160006119798461302d565b6001015481526020810191909152604090810160002081518083019092528054829060ff16600b8111156119af576119af61385f565b600b8111156119c0576119c061385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115611a2357611a2361385f565b6009811115611a3457611a3461385f565b8152602001600182018054611a48906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a74906142c6565b8015611ac15780601f10611a9657610100808354040283529160200191611ac1565b820191906000526020600020905b815481529060010190602001808311611aa457829003601f168201915b505050505081525050815260200190600101906119e9565b505050915250909392505050565b6000611b2883838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133d192505050565b90505b92915050565b60405163acbade1f60e01b81526001600160401b0383166004820152600560f91b602482015260609073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015611b96573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611bbe91908101906146a7565b8484611bd7611bd236879003870187614714565b613423565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291611c0d9190600401614767565b600060405180830381865af4158015611c2a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c5291908101906146a7565b604051602001611c6594939291906147b8565b60405160208183030381529060405290509392505050565b600080611c88613009565b60008481526003919091016020526040902054610100900460ff166004811115611cb457611cb461385f565b03611cd557604051633552703b60e21b815260048101839052602401610268565b611cdd613009565b600092835260030160205250604090205462010000900460ff1690565b6000611d04613009565b60010160008484604051602001611d1c9291906147f3565b60405160208183030381529060405280519060200120815260200190815260200160002054905092915050565b6000808686868686604051602001611d65959493929190614803565b604051602081830303815290604052805190602001209050611d85613009565b600082815260059190910160205260408120549250611da2613009565b6000838152600591909101602052604090205403612b06578651600003611e195760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a206e6f2072657472696044820152646576616c7360d81b6064820152608401610268565b8251875114611e785760405162461bcd60e51b815260206004820152602560248201527f5769746e65745265717565737442797465636f6465733a2061726773206d69736044820152640dac2e8c6d60db1b6064820152608401610268565b6000611e82613009565b600088815260029190910160205260409081902081518083019092528054829060ff16600b811115611eb657611eb661385f565b600b811115611ec757611ec761385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611fe05760008481526020902060408051808201909152600284029091018054829060ff166009811115611f2a57611f2a61385f565b6009811115611f3b57611f3b61385f565b8152602001600182018054611f4f906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7b906142c6565b8015611fc85780601f10611f9d57610100808354040283529160200191611fc8565b820191906000526020600020905b815481529060010190602001808311611fab57829003601f168201915b50505050508152505081526020019060010190611ef0565b505050508152505090506000611ff4613009565b600088815260029190910160205260409081902081518083019092528054829060ff16600b8111156120285761202861385f565b600b8111156120395761203961385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b828210156121525760008481526020902060408051808201909152600284029091018054829060ff16600981111561209c5761209c61385f565b60098111156120ad576120ad61385f565b81526020016001820180546120c1906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546120ed906142c6565b801561213a5780601f1061210f5761010080835404028352916020019161213a565b820191906000526020600020905b81548152906001019060200180831161211d57829003601f168201915b50505050508152505081526020019060010190612062565b505050508152505090506000808a516001600160401b0381111561217857612178613930565b6040519080825280602002602001820160405280156121ea57816020015b6121d76040805160e0810190915260008082526020820190815260200160008152602001606081526020016060815260200160608152602001606081525090565b8152602001906001900390816121965790505b50905060005b815181101561270057612201613009565b60030160008d8381518110612218576122186142b0565b6020908102919091018101518252818101929092526040908101600020815160e08101909252805460ff808216845292939192918401916101009091041660048111156122675761226761385f565b60048111156122785761227861385f565b8152815460209091019062010000900460ff16601381111561229c5761229c61385f565b60138111156122ad576122ad61385f565b81526020016001820180546122c1906142c6565b80601f01602080910402602001604051908101604052809291908181526020018280546122ed906142c6565b801561233a5780601f1061230f5761010080835404028352916020019161233a565b820191906000526020600020905b81548152906001019060200180831161231d57829003601f168201915b50505050508152602001600282018054612353906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461237f906142c6565b80156123cc5780601f106123a1576101008083540402835291602001916123cc565b820191906000526020600020905b8154815290600101906020018083116123af57829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156124d857600084815260208120604080518082019091529160028086029092019190835b828210156124c5578382018054612438906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612464906142c6565b80156124b15780601f10612486576101008083540402835291602001916124b1565b820191906000526020600020905b81548152906001019060200180831161249457829003601f168201915b505050505081526020019060010190612422565b50505050815260200190600101906123fa565b5050505081526020016004820180546124f0906142c6565b80601f016020809104026020016040519081016040528092919081815260200182805461251c906142c6565b80156125695780601f1061253e57610100808354040283529160200191612569565b820191906000526020600020905b81548152906001019060200180831161254c57829003601f168201915b505050505081525050828281518110612584576125846142b0565b6020026020010181905250806000036125bd57816000815181106125aa576125aa6142b0565b6020026020010151604001519250612662565b8260138111156125cf576125cf61385f565b8282815181106125e1576125e16142b0565b60200260200101516040015160138111156125fe576125fe61385f565b146126625760405162461bcd60e51b815260206004820152602e60248201527f5769746e65745265717565737442797465636f6465733a206d69736d6174636860448201526d696e672072657472696576616c7360901b6064820152608401610268565b818181518110612674576126746142b0565b60200260200101516000015160ff16888281518110612695576126956142b0565b60200260200101515110156126f85760405162461bcd60e51b8152602060048201526024808201527f5769746e65745265717565737442797465636f6465733a206d697373696e67206044820152636172677360e01b6064820152608401610268565b6001016121f0565b508160138111156127135761271361385f565b604051630160730f60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91630160730f9161274b91908c906004016148d2565b602060405180830381865af4158015612768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278c91906148f1565b975060008173__$6fdcaaf223938e26cbe304f958c2f40bbf$__63b6349ebd90918a8873__$6fdcaaf223938e26cbe304f958c2f40bbf$__631c02d22b90916040518263ffffffff1660e01b81526004016127e79190614317565b600060405180830381865af4158015612804573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282c91908101906146a7565b604051631c02d22b60e01b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__90631c02d22b90612863908c90600401614317565b600060405180830381865af4158015612880573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a891908101906146a7565b8e6040518663ffffffff1660e01b81526004016128c99594939291906149aa565b600060405180830381865af41580156128e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261290e91908101906146a7565b905061ffff815111156129755760405162461bcd60e51b815260206004820152602960248201527f5769746e65745265717565737442797465636f6465733a20746f6f20686561766044820152681e481c995c5d595cdd60ba1b6064820152608401610268565b61297e816133d1565b965086612989613009565b60008881526005919091016020526040902055806129a5613009565b600089815260069190910160205260409020906129c290826145e8565b506040518060e001604052808981526020018c81526020018881526020018460138111156129f2576129f261385f565b81526020018a61ffff1681526020018d81526020018b815250612a13613009565b600089815260049190910160209081526040909120825180519192612a3d9284929091019061355d565b50602082015181600101556040820151816002015560608201518160030160006101000a81548160ff02191690836013811115612a7c57612a7c61385f565b0217905550608082015160038201805461ffff9092166101000262ffff001990921691909117905560a08201518051612abf9160048401916020909101906135b6565b5060c091909101516005909101556040518781527fe8845fcb11242df46ec5ca06bf7d381c3c6e9cc4f110abacffc933558e8dd67d9060200160405180910390a150505050505b5095945050505050565b6060612b1b8261302d565b600401805480602002602001604051908101604052809291908181526020018280548015610a7757602002820191906000526020600020905b815481526020019060010190808311612b545750505050509050919050565b600080612b7e613009565b60008481526003919091016020526040902054610100900460ff166004811115612baa57612baa61385f565b03612bcb57604051633552703b60e21b815260048101839052602401610268565b612bd3613009565b600092835260030160205250604090205460ff1690565b60606000612bf6613009565b600084815260209190915260409020612c0d613009565b6000858152602091909152604090206001015481548290612c2d906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612c59906142c6565b8015612ca65780601f10612c7b57610100808354040283529160200191612ca6565b820191906000526020600020905b815481529060010190602001808311612c8957829003601f168201915b5050505050915091509150915091565b604080518082019091526000815260606020820152612cd3613009565b6002016000612ce18461302d565b6005015481526020810191909152604090810160002081518083019092528054829060ff16600b811115612d1757612d1761385f565b600b811115612d2857612d2861385f565b815260200160018201805480602002602001604051908101604052809291908181526020016000905b82821015611ad95760008481526020902060408051808201909152600284029091018054829060ff166009811115612d8b57612d8b61385f565b6009811115612d9c57612d9c61385f565b8152602001600182018054612db0906142c6565b80601f0160208091040260200160405190810160405280929190818152602001828054612ddc906142c6565b8015612e295780601f10612dfe57610100808354040283529160200191612e29565b820191906000526020600020905b815481529060010190602001808311612e0c57829003601f168201915b50505050508152505081526020019060010190612d51565b612e496130f5565b600080516020614bcb83398151915280546001600160a01b0319166001600160a01b038316908117909155612e7c611168565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60606000612ec1846109d7565b805160405163acbade1f60e01b81526001600160401b039091166004820152600560f91b602482015290915073__$6fdcaaf223938e26cbe304f958c2f40bbf$__9063acbade1f90604401600060405180830381865af4158015612f29573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f5191908101906146a7565b81612f64611bd236879003870187614714565b6040516316c0d2a160e11b815273__$6fdcaaf223938e26cbe304f958c2f40bbf$__91632d81a54291612f9a9190600401614767565b600060405180830381865af4158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf91908101906146a7565b604051602001612ff193929190614aec565b60405160208183030381529060405291505092915050565b7f673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427def90565b6000613037613009565b6000928352600401602052506040902090565b60606000613057836134ca565b6001600160401b0381111561306e5761306e613930565b6040519080825280601f01601f191660200182016040528015613098576020820181803683370190505b50905060005b81518110156130ee578381602081106130b9576130b96142b0565b1a60f81b8282815181106130cf576130cf6142b0565b60200101906001600160f81b031916908160001a90535060010161309e565b5092915050565b336130fe611168565b6001600160a01b031614610f685760405163118cdaa760e01b8152336004820152602401610268565b600080516020614bcb83398151915280546001600160a01b0319169055600061314e611168565b9050806001600160a01b0316826001600160a01b0316146131c457600080516020614bab83398151915280546001600160a01b0319166001600160a01b0384811691821790925560405190918316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35b5050565b60005b815181101561325757826001018282815181106131ea576131ea6142b0565b60209081029190910181015182546001818101855560009485529290932081516002909402018054919390929091839160ff19909116908360098111156132335761323361385f565b02179055506020820151600182019061324c90826145e8565b5050506001016131cb565b505050565b600060038251101561327057506000919050565b8151600090600119015b808210156133ca57601760fa1b6001600160f81b0319168483815181106132a3576132a36142b0565b01602001516001600160f81b0319161480156132ef5750601760fa1b6001600160f81b0319168483600201815181106132de576132de6142b0565b01602001516001600160f81b031916145b801561332c5750600360fc1b6001600160f81b03191684836001018151811061331a5761331a6142b0565b01602001516001600160f81b03191610155b80156133695750603960f81b6001600160f81b031916848360010181518110613357576133576142b0565b01602001516001600160f81b03191611155b156133bf576000600360fc1b60f81c85846001018151811061338d5761338d6142b0565b602001015160f81c60f81b60f81c0360010190508360ff168160ff1611156133b3578093505b6003830192505061327a565b60019091019061327a565b5050919050565b60006002826040516133e39190614b2f565b602060405180830381855afa158015613400573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611b2b91906144ad565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526040518060a00160405280836000015160ff168152602001603360ff16815260200183602001516001600160401b03168152602001836020015160646134949190614b4b565b6001600160401b03168152602001836000015160ff1684602001516134b99190614b76565b6001600160401b0316905292915050565b60005b6020811015610c41578181602081106134e8576134e86142b0565b1a60f81b6001600160f81b03191615610c41576001016134cd565b82805482825590600052602060002090600202810192821561354d579160200282015b8281111561354d57825161353d90839060026135fd565b5091602001919060020190613526565b50613559929150613642565b5090565b8280548282559060005260206000209081019282156135aa579160200282015b828111156135aa578251805161359a91849160209091019061365f565b509160200191906001019061357d565b506135599291506136a5565b8280548282559060005260206000209081019282156135f1579160200282015b828111156135f15782518255916020019190600101906135d6565b506135599291506136c2565b8260028101928215613636579160200282015b82811115613636578251829061362690826145e8565b5091602001919060010190613610565b506135599291506136d7565b8082111561355957600061365682826136f4565b50600201613642565b828054828255906000526020600020908101928215613636579160200282015b82811115613636578251829061369590826145e8565b509160200191906001019061367f565b808211156135595760006136b98282613710565b506001016136a5565b5b8082111561355957600081556001016136c3565b808211156135595760006136eb828261372e565b506001016136d7565b506000613701828261372e565b50610f6890600101600061372e565b508054600082559060005260206000209081019061101a91906136d7565b50805461373a906142c6565b6000825580601f1061374a575050565b601f01602090049060005260206000209081019061101a91906136c2565b60008060006060848603121561377d57600080fd5b505081359360208301359350604090920135919050565b60008151808452602080850194506020840160005b838110156137c5578151875295820195908201906001016137a9565b509495945050505050565b602081526000611b286020830184613794565b6000602082840312156137f557600080fd5b5035919050565b60005b838110156138175781810151838201526020016137ff565b50506000910152565b600081518084526138388160208601602086016137fc565b601f01601f19169290920160200192915050565b602081526000611b286020830184613820565b634e487b7160e01b600052602160045260246000fd5b600c81106138855761388561385f565b9052565b600a81106138855761388561385f565b60006020808352606083016138b18285018651613875565b81850151604080604087015282825180855260808801915060808160051b8901019450858401935060005b8181101561392257607f1989870301835284516138fa878251613889565b87015186880185905261390f87860182613820565b96505093860193918601916001016138dc565b509398975050505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561396857613968613930565b60405290565b604051601f8201601f191681016001600160401b038111828210171561399657613996613930565b604052919050565b60006001600160401b038211156139b7576139b7613930565b50601f01601f191660200190565b600082601f8301126139d657600080fd5b81356139e96139e48261399e565b61396e565b8181528460208386010111156139fe57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613a2d57600080fd5b81356001600160401b03811115613a4357600080fd5b613a4f848285016139c5565b949350505050565b601481106138855761388561385f565b60208101611b2b8284613a57565b6001600160a01b038116811461101a57600080fd5b600060208284031215613a9c57600080fd5b8135610f3a81613a75565b60006001600160401b03821115613ac057613ac0613930565b5060051b60200190565b60006020808385031215613add57600080fd5b82356001600160401b0380821115613af457600080fd5b81850191506040808388031215613b0a57600080fd5b613b12613946565b8335600c8110613b2157600080fd5b81528385013583811115613b3457600080fd5b80850194505087601f850112613b4957600080fd5b8335613b576139e482613aa7565b81815260059190911b8501860190868101908a831115613b7657600080fd5b8787015b83811015613bf757803587811115613b925760008081fd5b8801808d03601f1901871315613ba85760008081fd5b613bb0613946565b8a820135600a8110613bc25760008081fd5b81528188013589811115613bd65760008081fd5b613be48f8d838601016139c5565b828d015250845250918801918801613b7a565b509683019690965250979650505050505050565b600581106138855761388561385f565b600082825180855260208086019550808260051b8401018186016000805b85811015613c9357868403601f19018a5282518460408101845b6002811015613c7e578782038352613c6c828551613820565b93890193928901929150600101613c53565b509b87019b9550505091840191600101613c39565b509198975050505050505050565b6020815260ff825116602082015260006020830151613cc36040840182613c0b565b506040830151613cd66060840182613a57565b50606083015160e06080840152613cf1610100840182613820565b90506080840151601f19808584030160a0860152613d0f8383613820565b925060a08601519150808584030160c0860152613d2c8383613c1b565b925060c08601519150808584030160e086015250613d4a8282613820565b95945050505050565b60008083601f840112613d6557600080fd5b5081356001600160401b03811115613d7c57600080fd5b602083019150836020828501011115613d9457600080fd5b9250929050565b600082601f830112613dac57600080fd5b81356020613dbc6139e483613aa7565b82815260059290921b84018101918181019086841115613ddb57600080fd5b8286015b84811015613e795780356001600160401b0380821115613dff5760008081fd5b818901915089603f830112613e145760008081fd5b613e1c613946565b80606084018c811115613e2f5760008081fd5b8885015b81811015613e6757803585811115613e4b5760008081fd5b613e598f8c838a01016139c5565b855250928901928901613e33565b50508652505050918301918301613ddf565b509695505050505050565b60008060008060008060008060a0898b031215613ea057600080fd5b883560058110613eaf57600080fd5b975060208901356001600160401b0380821115613ecb57600080fd5b613ed78c838d01613d53565b909950975060408b0135915080821115613ef057600080fd5b613efc8c838d01613d53565b909750955060608b0135915080821115613f1557600080fd5b613f218c838d01613d9b565b945060808b0135915080821115613f3757600080fd5b50613f448b828c01613d53565b999c989b5096995094979396929594505050565b60008060208385031215613f6b57600080fd5b82356001600160401b03811115613f8157600080fd5b613f8d85828601613d53565b90969095509350505050565b60006040828403121561116257600080fd5b600080600060608486031215613fc057600080fd5b83356001600160401b03811115613fd657600080fd5b613fe286828701613d53565b9094509250613ff690508560208601613f99565b90509250925092565b61ffff8116811461101a57600080fd5b8035610c4181613fff565b600082601f83011261402b57600080fd5b8135602061403b6139e483613aa7565b82815260059290921b8401810191818101908684111561405a57600080fd5b8286015b84811015613e795780356001600160401b038082111561407d57600080fd5b818901915089603f83011261409157600080fd5b858201356140a16139e482613aa7565b81815260059190911b830160400190878101908c8311156140c157600080fd5b604085015b838110156140fa578035858111156140dd57600080fd5b6140ec8f6040838a01016139c5565b8452509189019189016140c6565b5087525050509284019250830161405e565b600080600080600060a0868803121561412457600080fd5b85356001600160401b038082111561413b57600080fd5b818801915088601f83011261414f57600080fd5b8135602061415f6139e483613aa7565b82815260059290921b8401810191818101908c84111561417e57600080fd5b948201945b8386101561419c57853582529482019490820190614183565b995050890135965050604088013594506141b86060890161400f565b935060808801359150808211156141ce57600080fd5b506141db8882890161401a565b9150509295509295909350565b6040815260006141fb6040830185613820565b90508260208301529392505050565b6000806060838503121561421d57600080fd5b8235915061422e8460208501613f99565b90509250929050565b600083516142498184602088016137fc565b6101d160f51b90830190815283516142688160028401602088016137fc565b01600201949350505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115611b2b57611b2b614274565b81810381811115611b2b57611b2b614274565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806142da57607f821691505b60208210810361116257634e487b7160e01b600052602260045260246000fd5b60006020828403121561430c57600080fd5b8151610f3a81613a75565b600060208083526060830161432f8285018651613875565b81850151604080604087015282825180855260808801915060808160051b8901019450858401935060005b8181101561392257607f198987030183528451614378878251613889565b87015186880185905261438d87860182613820565b965050938601939186019160010161435a565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600082825180855260208086019550808260051b8401018186016000805b85811015613c9357868403601f19018a5282518460408101845b600281101561442c57878203835261441a828551613820565b93890193928901929150600101614401565b509b87019b95505050918401916001016143e7565b61444b818a613c0b565b60a06020820152600061446260a08301898b6143a0565b828103604084015261447581888a6143a0565b9050828103606084015261448981876143c9565b9050828103608084015261449e8185876143a0565b9b9a5050505050505050505050565b6000602082840312156144bf57600080fd5b5051919050565b60e0815260006144da60e083018c8e6143a0565b82810360208401526144ec818c613820565b90508281036040840152614501818a8c6143a0565b905082810360608401526145158189613820565b905082810360808401526145298188613c1b565b905082810360a084015261453d8187613820565b905082810360c08401526145528185876143a0565b9d9c50505050505050505050505050565b602081526000613a4f6020830184866143a0565b60006020828403121561458957600080fd5b815160148110610f3a57600080fd5b601f821115613257576000816000526020600020601f850160051c810160208610156145c15750805b601f850160051c820191505b818110156145e0578281556001016145cd565b505050505050565b81516001600160401b0381111561460157614601613930565b6146158161460f84546142c6565b84614598565b602080601f83116001811461464a57600084156146325750858301515b600019600386901b1c1916600185901b1785556145e0565b600085815260208120601f198616915b828110156146795788860151825594840194600190910190840161465a565b50858210156146975787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156146b957600080fd5b81516001600160401b038111156146cf57600080fd5b8201601f810184136146e057600080fd5b80516146ee6139e48261399e565b81815285602083850101111561470357600080fd5b613d4a8260208301602086016137fc565b60006040828403121561472657600080fd5b61472e613946565b823560ff8116811461473f57600080fd5b815260208301356001600160401b038116811461475b57600080fd5b60208201529392505050565b600060a08201905060ff835116825260ff602084015116602083015260408301516001600160401b038082166040850152806060860151166060850152806080860151166080850152505092915050565b600085516147ca818460208a016137fc565b820184868237600090850190815283516147e88183602088016137fc565b019695505050505050565b8183823760009101908152919050565b60a08152600061481660a0830188613794565b6020878185015286604085015261ffff86166060850152838203608085015281855180845282840191506005838260051b8601018489016000805b858110156148be57601f198985038101885283518051808752908a01908a87019080891b88018c01865b828110156148a757858a8303018452614895828651613820565b948e0194938e0193915060010161487b565b509a8c019a97505050938901935050600101614851565b50919e9d5050505050505050505050505050565b604081016148e08285613a57565b61ffff831660208301529392505050565b60006020828403121561490357600080fd5b8151610f3a81613fff565b6000828251808552602080860195506005818360051b8501018287016000805b8681101561499b57601f1988850381018c5283518051808752908801908887019080891b88018a01865b8281101561498457858a8303018452614972828651613820565b948c0194938c01939150600101614958565b509e8a019e9750505093870193505060010161492e565b50919998505050505050505050565b600060a080830160a0845280895180835260c0925060c08601915060c08160051b8701016020808d0160005b84811015614a905760bf198a8503018652815160e060ff825116865284820151614a0286880182613c0b565b50604080830151614a1582890182613a57565b50506060808301518282890152614a2e83890182613820565b9250505060808083015187830382890152614a498382613820565b92505050898201518682038b880152614a6282826143c9565b91505088820151915085810389870152614a7c8183613820565b9785019795505050908201906001016149d6565b505087820390880152614aa3818c61490e565b9450505050508281036040840152614abb8187613820565b90508281036060840152614acf8186613820565b915050614ae2608083018461ffff169052565b9695505050505050565b60008451614afe8184602089016137fc565b845190830190614b128183602089016137fc565b8451910190614b258183602088016137fc565b0195945050505050565b60008251614b418184602087016137fc565b9190910192915050565b6001600160401b03818116838216028082169190828114614b6e57614b6e614274565b505092915050565b60006001600160401b0380841680614b9e57634e487b7160e01b600052601260045260246000fd5b9216919091049291505056fe673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427ded673359bdfd0124f9962355e7aed2d07d989b0d4bc4cbe2c94c295e0f81427deea2646970667358221220440e6734861c85b24cfc7e636266cc599e549ee2e7412c5b94659215f5bb09d664736f6c63430008190033",
  "linkReferences": {
    "contracts/libs/WitnetEncodingLib.sol": {
      "WitnetEncodingLib": [
        {
          "length": 20,
          "start": 4916
        },
        {
          "length": 20,
          "start": 6173
        },
        {
          "length": 20,
          "start": 6529
        },
        {
          "length": 20,
          "start": 7661
        },
        {
          "length": 20,
          "start": 7799
        },
        {
          "length": 20,
          "start": 10675
        },
        {
          "length": 20,
          "start": 10788
        },
        {
          "length": 20,
          "start": 10818
        },
        {
          "length": 20,
          "start": 10956
        },
        {
          "length": 20,
          "start": 12672
        },
        {
          "length": 20,
          "start": 12804
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/libs/WitnetEncodingLib.sol": {
      "WitnetEncodingLib": [
        {
          "length": 20,
          "start": 4259
        },
        {
          "length": 20,
          "start": 5516
        },
        {
          "length": 20,
          "start": 5872
        },
        {
          "length": 20,
          "start": 7004
        },
        {
          "length": 20,
          "start": 7142
        },
        {
          "length": 20,
          "start": 10018
        },
        {
          "length": 20,
          "start": 10131
        },
        {
          "length": 20,
          "start": 10161
        },
        {
          "length": 20,
          "start": 10299
        },
        {
          "length": 20,
          "start": 12015
        },
        {
          "length": 20,
          "start": 12147
        }
      ]
    }
  }
}
