{
  "_format": "hh3-artifact-1",
  "contractName": "WitOracleTrustlessDefaultV22",
  "sourceName": "contracts/core/trustless/WitOracleTrustlessDefaultV22.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "reportResultGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "reportResultWithCallbackRevertGasBase",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "sstoreFromZeroGas",
              "type": "uint32"
            }
          ],
          "internalType": "struct WitOracleBaseQueriable.EvmImmutables",
          "name": "_immutables",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_queryAwaitingBlocks",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_queryReportingStake",
          "type": "uint256"
        },
        {
          "internalType": "contract WitOracleRadonRegistry",
          "name": "_registry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDataReport",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "reason",
          "type": "string"
        }
      ],
      "name": "BatchQueryError",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Burnt",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.Beacon",
          "name": "head",
          "type": "tuple"
        }
      ],
      "name": "Rollup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Slashed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Unstaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmRequester",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "radonParams",
          "type": "tuple"
        }
      ],
      "name": "WitOracleQuery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackGas",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryReportDelivery",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmDisputer",
          "type": "address"
        }
      ],
      "name": "WitOracleQueryReportDispute",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmSender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmReward",
          "type": "uint256"
        }
      ],
      "name": "WitOracleQueryUpgrade",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmOrigin",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmReporter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "Witnet.TransactionHash",
          "name": "witDrTxHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "queryRadHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "indexed": false,
          "internalType": "struct Witnet.QuerySLA",
          "name": "queryParams",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleReport",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.QueryId",
          "name": "queryId",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "evmConsumer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmGasPrice",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "evmCallbackActualGas",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "evmCallbackRevertReason",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "resultCborBytes",
          "type": "bytes"
        }
      ],
      "name": "WitOracleResportDeliveryFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "QUERY_AWAITING_BLOCKS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "QUERY_REPORTING_STAKE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tenant",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "channel",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "claimQueryReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId[]",
          "name": "_queryIds",
          "type": "uint64[]"
        }
      ],
      "name": "claimQueryRewardBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_evmTotalReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "class",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tenant",
          "type": "address"
        }
      ],
      "name": "collateralOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currency",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "deleteQuery",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "determineBeaconIndexFromTimestamp",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.Timestamp",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "determineEpochFromTimestamp",
      "outputs": [
        {
          "internalType": "Witnet.BlockNumber",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "disputeQueryResponse",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        }
      ],
      "name": "estimateBaseFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint24",
          "name": "_evmCallbackGasLimit",
          "type": "uint24"
        }
      ],
      "name": "estimateBaseFeeWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_evmGasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_evmWitPrice",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "estimateExtraFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        }
      ],
      "name": "getBeaconByIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGenesisBeacon",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastKnownBeacon",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastKnownBeaconIndex",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextQueryId",
      "outputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQuery",
      "outputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "requester",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "callbackGas",
                  "type": "uint24"
                },
                {
                  "internalType": "bytes",
                  "name": "radonBytecode",
                  "type": "bytes"
                },
                {
                  "internalType": "Witnet.RadonHash",
                  "name": "radonHash",
                  "type": "bytes32"
                }
              ],
              "internalType": "struct Witnet.QueryRequest",
              "name": "request",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "reporter",
                  "type": "address"
                },
                {
                  "internalType": "Witnet.Timestamp",
                  "name": "resultTimestamp",
                  "type": "uint64"
                },
                {
                  "internalType": "Witnet.TransactionHash",
                  "name": "resultDrTxHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "resultCborBytes",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "disputer",
                  "type": "address"
                }
              ],
              "internalType": "struct Witnet.QueryResponse",
              "name": "response",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "slaParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "uuid",
              "type": "bytes15"
            },
            {
              "internalType": "Witnet.QueryEvmReward",
              "name": "reward",
              "type": "uint72"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "checkpoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.Query",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryEvmReward",
      "outputs": [
        {
          "internalType": "Witnet.QueryEvmReward",
          "name": "",
          "type": "uint72"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryRequest",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "requester",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "callbackGas",
              "type": "uint24"
            },
            {
              "internalType": "bytes",
              "name": "radonBytecode",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "radonHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.QueryRequest",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.QueryId",
          "name": "_queryId",
          "type": "uint64"
        }
      ],
      "name": "getQueryResponse",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "reporter",
              "type": "address"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "resultDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "disputer",
              "type": "address"
            }
          ],
          "internalType": "struct Witnet.QueryResponse",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResult",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.ResultStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultStatusDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryResultTrails",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "queryUUID",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.TransactionHash",
          "name": "resultDrTxHash",
          "type": "bytes32"
        },
        {
          "internalType": "Witnet.Timestamp",
          "name": "resultTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint256",
          "name": "resultFinalityBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatus",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "_queryIds",
          "type": "uint256[]"
        }
      ],
      "name": "getQueryStatusBatch",
      "outputs": [
        {
          "internalType": "enum Witnet.QueryStatus[]",
          "name": "_status",
          "type": "uint8[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "getQueryStatusString",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_dataPushReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        }
      ],
      "name": "parseDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "Witnet.RadonHash",
              "name": "queryRadHash",
              "type": "bytes32"
            },
            {
              "components": [
                {
                  "internalType": "uint16",
                  "name": "witResultMaxSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "witCommitteeSize",
                  "type": "uint16"
                },
                {
                  "internalType": "uint64",
                  "name": "witUnitaryReward",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Witnet.QuerySLA",
              "name": "queryParams",
              "type": "tuple"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "resultTimestamp",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "resultCborBytes",
              "type": "bytes"
            }
          ],
          "internalType": "struct Witnet.DataPushReport",
          "name": "_dataPushReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_proof",
          "type": "bytes"
        }
      ],
      "name": "pushDataReport",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.ResultStatus",
              "name": "status",
              "type": "uint8"
            },
            {
              "internalType": "enum Witnet.RadonDataTypes",
              "name": "dataType",
              "type": "uint8"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "drTxHash",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "finality",
              "type": "uint256"
            },
            {
              "internalType": "Witnet.Timestamp",
              "name": "timestamp",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    },
                    {
                      "internalType": "uint256",
                      "name": "cursor",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct WitnetBuffer.Buffer",
                  "name": "buffer",
                  "type": "tuple"
                },
                {
                  "internalType": "uint8",
                  "name": "initialByte",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "majorType",
                  "type": "uint8"
                },
                {
                  "internalType": "uint8",
                  "name": "additionalInformation",
                  "type": "uint8"
                },
                {
                  "internalType": "uint64",
                  "name": "len",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "tag",
                  "type": "uint64"
                }
              ],
              "internalType": "struct WitnetCBOR.CBOR",
              "name": "value",
              "type": "tuple"
            }
          ],
          "internalType": "struct Witnet.DataResult",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        }
      ],
      "name": "queryData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "Witnet.RadonHash",
          "name": "_queryRAD",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "witResultMaxSize",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "witCommitteeSize",
              "type": "uint16"
            },
            {
              "internalType": "uint64",
              "name": "witUnitaryReward",
              "type": "uint64"
            }
          ],
          "internalType": "struct Witnet.QuerySLA",
          "name": "_querySLA",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "consumer",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "gasLimit",
              "type": "uint24"
            }
          ],
          "internalType": "struct Witnet.QueryCallback",
          "name": "_queryCallback",
          "type": "tuple"
        }
      ],
      "name": "queryDataWithCallback",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport",
          "name": "_responseReport",
          "type": "tuple"
        }
      ],
      "name": "reportQueryResponse",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport[]",
          "name": "_responseReports",
          "type": "tuple[]"
        }
      ],
      "name": "reportQueryResponseBatch",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_evmTotalReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "index",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "prevIndex",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes24",
                  "name": "prevRoot",
                  "type": "bytes24"
                },
                {
                  "internalType": "bytes16",
                  "name": "ddrTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "bytes16",
                  "name": "droTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "uint256[4]",
                  "name": "nextCommitteeAggPubkey",
                  "type": "uint256[4]"
                }
              ],
              "internalType": "struct Witnet.Beacon",
              "name": "beacon",
              "type": "tuple"
            },
            {
              "internalType": "uint256[2]",
              "name": "committeeAggSignature",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[4][]",
              "name": "committeeMissingPubkeys",
              "type": "uint256[4][]"
            }
          ],
          "internalType": "struct Witnet.FastForward[]",
          "name": "_witOracleRollup",
          "type": "tuple[]"
        }
      ],
      "name": "rollupBeacons",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "prevIndex",
              "type": "uint32"
            },
            {
              "internalType": "bytes24",
              "name": "prevRoot",
              "type": "bytes24"
            },
            {
              "internalType": "bytes16",
              "name": "ddrTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "bytes16",
              "name": "droTalliesMerkleRoot",
              "type": "bytes16"
            },
            {
              "internalType": "uint256[4]",
              "name": "nextCommitteeAggPubkey",
              "type": "uint256[4]"
            }
          ],
          "internalType": "struct Witnet.Beacon",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "index",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "prevIndex",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes24",
                  "name": "prevRoot",
                  "type": "bytes24"
                },
                {
                  "internalType": "bytes16",
                  "name": "ddrTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "bytes16",
                  "name": "droTalliesMerkleRoot",
                  "type": "bytes16"
                },
                {
                  "internalType": "uint256[4]",
                  "name": "nextCommitteeAggPubkey",
                  "type": "uint256[4]"
                }
              ],
              "internalType": "struct Witnet.Beacon",
              "name": "beacon",
              "type": "tuple"
            },
            {
              "internalType": "uint256[2]",
              "name": "committeeAggSignature",
              "type": "uint256[2]"
            },
            {
              "internalType": "uint256[4][]",
              "name": "committeeMissingPubkeys",
              "type": "uint256[4][]"
            }
          ],
          "internalType": "struct Witnet.FastForward[]",
          "name": "_witOracleRollup",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "Witnet.QueryId",
              "name": "queryId",
              "type": "uint64"
            },
            {
              "internalType": "Witnet.QueryUUID",
              "name": "queryHash",
              "type": "bytes15"
            },
            {
              "internalType": "bytes",
              "name": "witDrRelayerSignature",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.BlockNumber",
              "name": "witDrResultEpoch",
              "type": "uint64"
            },
            {
              "internalType": "bytes",
              "name": "witDrResultCborBytes",
              "type": "bytes"
            },
            {
              "internalType": "Witnet.TransactionHash",
              "name": "witDrTxHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct Witnet.DataPullReport",
          "name": "_responseReport",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "_queryResponseReportMerkleProof",
          "type": "bytes32[]"
        }
      ],
      "name": "rollupQueryResponseProof",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_queryId",
          "type": "uint256"
        }
      ],
      "name": "upgradeQueryEvmReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_withdrawn",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x610180604052348015610010575f5ffd5b5060405161508138038061508183398101604081905261002f91610479565b5f60805260408051808201909152601381527f696e6578697374656e742072656769737472790000000000000000000000000060208201528390839086908490610086906001600160a01b0383163b151590610372565b61014763a614fef760e01b6001600160e01b031916826001600160a01b031663adb7c3f76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100fb9190610532565b6001600160e01b031916146040518060400160405280601481526020017f756e636f6d706c69616e7420726567697374727900000000000000000000000081525061037260201b60201c565b6001600160a01b031660a052805163ffffffff90811660c052602080830151821660e0526040808401518316610100526060909301519091166101205281518083018352601881527f746f6f206d616e79206177616974696e6720626c6f636b730000000000000000918101919091526101c391841090610372565b61020a5f82116040518060400160405280601381526020017f6e6f207265706f7274696e67207374616b653f0000000000000000000000000081525061037260201b60201c565b6101408290526101608190526040805160c0810182525f80825260208083018281528385018381526060808601858152608080880187815289518083018b52888152808801899052808b0189905293840188905260a089019384529680527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e10190955286517fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd680549551945190991c68010000000000000000026001600160401b0363ffffffff958616640100000000026001600160401b03199097169590921694909417949094179390931691909117865590519251821c600160801b029290911c919091177fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd75551909190610363907fc183f9983e4d9665af3c4426441c2490530d67a07a506de5a3030081c7e86fd89060046103f9565b509050505050505050506105d5565b816103805761038081610384565b5050565b60408051808201909152601c81527f5769744f7261636c6554727573746c65737344656661756c74563232000000006020820152816040516020016103ca929190610577565b60408051601f198184030181529082905262461bcd60e51b82526103f0916004016105a0565b60405180910390fd5b8260048101928215610427579160200282015b8281111561042757825182559160200191906001019061040c565b50610433929150610437565b5090565b5b80821115610433575f8155600101610438565b805163ffffffff8116811461045e575f5ffd5b919050565b80516001600160a01b038116811461045e575f5ffd5b5f5f5f5f84860360e081121561048d575f5ffd5b608081121561049a575f5ffd5b50604051608081016001600160401b03811182821017156104c957634e487b7160e01b5f52604160045260245ffd5b6040526104d58661044b565b81526104e36020870161044b565b60208201526104f46040870161044b565b60408201526105056060870161044b565b6060820152608086015160a08701519195509350915061052760c08601610463565b905092959194509250565b5f60208284031215610542575f5ffd5b81516001600160e01b031981168114610559575f5ffd5b9392505050565b5f81518060208401855e5f93019283525090919050565b5f6105828285610560565b6101d160f51b81526105976002820185610560565b95945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e051610100516101205161014051610160516149d36106ae5f395f81816107d101528181610ca3015281816113ae0152818161153d01528181611a3001528181611db90152818161254501526125ec01525f818161032101528181610c8101528181611388015281816115170152818161196301528181611a0a01528181611d970152818161251f01526125ca01525f8181610b2001528181610f3201526122f501525f610b4c01525f8181610b8c0152610bd401525f610f5e01525f61067001525f61091301526149d35ff3fe608060405260043610610262575f3560e01c80637bbdb96e1161013f578063bff852fa116100b3578063d4038ac611610078578063d4038ac6146108ee578063e5a6b10f14610902578063ec5946db14610935578063f91ffdb214610948578063fc140d7714610967578063fe52e05f14610986575f5ffd5b8063bff852fa1461082b578063c258134814610870578063c805dd0f1461088f578063ca7da98b146108a3578063d0a92a08146108cf575f5ffd5b806390602a901161010457806390602a9014610762578063a58f680314610781578063a667533f14610794578063a6ef08c0146107c0578063adb7c3f7146107f3578063b783922b1461080c575f5ffd5b80637bbdb96e146106aa5780637c1fbda3146106d7578063838d44e2146106f65780638bfabb4f146107225780638cfcdea214610736575f5ffd5b806347ad9e69116101d657806359209b391161019b57806359209b39146105205780636d0d6a7e1461054c5780636f07abcc1461056b5780636fdaab7e1461059757806370a082311461060c5780637b1039991461065f575f5ffd5b806347ad9e691461046b5780634cddf6151461048a57806350127a96146104b657806353a5d58c146104d5578063581f5094146104f4575f5ffd5b80631aefb107116102275780631aefb107146103625780631f08f481146103b857806339a8653e146103d75780633b3195b7146103f65780633ccfd60b146104095780633fa595761461041d575f5ffd5b8063057600311461027757806305e742ef146102ac5780630f884886146102d95780631105c8631461031057806317d298d014610343575f5ffd5b366102735761027133346109af565b005b5f5ffd5b348015610282575f5ffd5b50610296610291366004612cf3565b610a22565b6040516102a39190612d31565b60405180910390f35b3480156102b7575f5ffd5b506102cb6102c6366004612dd5565b610b19565b6040519081526020016102a3565b3480156102e4575f5ffd5b506102f86102f3366004612e22565b610c09565b6040516001600160401b0390911681526020016102a3565b34801561031b575f5ffd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561034e575f5ffd5b506102f861035d366004612e22565b610c13565b34801561036d575f5ffd5b506102cb61037c366004612e51565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090206001015490565b3480156103c3575f5ffd5b506102cb6103d2366004612cf3565b610c1d565b3480156103e2575f5ffd5b506102cb6103f1366004612e6c565b610f2c565b6102cb610404366004612f9d565b610f8c565b348015610414575f5ffd5b506102cb611164565b348015610428575f5ffd5b5061043c610437366004612e6c565b6111e6565b6040516102a3949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610476575f5ffd5b50610296610485366004613021565b611237565b348015610495575f5ffd5b506104a96104a4366004612e6c565b6112f6565b6040516102a39190613065565b3480156104c1575f5ffd5b506102cb6104d0366004612e22565b61136a565b3480156104e0575f5ffd5b506102cb6104ef366004612cf3565b6114a5565b3480156104ff575f5ffd5b5061051361050e366004612cf3565b6116ac565b6040516102a39190613083565b34801561052b575f5ffd5b5061053f61053a366004612e6c565b611766565b6040516102a391906130fb565b348015610557575f5ffd5b5061053f6105663660046131e7565b6117e2565b348015610576575f5ffd5b5061058a610585366004612e6c565b611942565b6040516102a39190613280565b3480156105a2575f5ffd5b506105f46105b1366004612e6c565b5f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1846020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b0390911681526020016102a3565b348015610617575f5ffd5b506102cb610626366004612e51565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090205490565b34801561066a575f5ffd5b506106927f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a3565b3480156106b5575f5ffd5b506106be6119e5565b6040516001600160e01b031990911681526020016102a3565b3480156106e2575f5ffd5b506105f46106f1366004612e6c565b6119f4565b348015610701575f5ffd5b50610715610710366004612e6c565b611ad4565b6040516102a3919061328e565b34801561072d575f5ffd5b50610296611b56565b348015610741575f5ffd5b50610755610750366004612e22565b611c52565b6040516102a39190613349565b34801561076d575f5ffd5b506102cb61077c366004613415565b611d64565b6102cb61078f366004613446565b611f31565b34801561079f575f5ffd5b506107b36107ae366004612e22565b612007565b6040516102a39190613471565b3480156107cb575f5ffd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107fe575f5ffd5b506304722eaf60e31b6106be565b348015610817575f5ffd5b5061053f6108263660046131e7565b6120b9565b348015610836575f5ffd5b5060408051808201909152601c81527f5769744f7261636c6554727573746c65737344656661756c74563232000000006020820152610715565b34801561087b575f5ffd5b5061071561088a366004612e6c565b61210f565b34801561089a575f5ffd5b506102f86121e0565b3480156108ae575f5ffd5b506108c26108bd366004612e22565b612217565b6040516102a39190613483565b3480156108da575f5ffd5b506102cb6108e9366004613495565b6122bc565b3480156108f9575f5ffd5b5061029661234e565b34801561090d575f5ffd5b506106927f000000000000000000000000000000000000000000000000000000000000000081565b610271610943366004612e6c565b6123a8565b348015610953575f5ffd5b506102cb610962366004612e22565b612501565b348015610972575f5ffd5b506102cb6109813660046134c8565b61258f565b348015610991575f5ffd5b5061099a6126cc565b60405163ffffffff90911681526020016102a3565b6040516311f9fbc960e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__906347e7ef24906044015b5f6040518083038186803b158015610a08575f5ffd5b505af4158015610a1a573d5f5f3e3d5ffd5b505050505050565b610a2a612bd8565b60405163f308da0f60e01b815273__$ae81277065e375dbfccbe8236469c17501$__9063f308da0f90610a639086908690600401613751565b61012060405180830381865af4925050508015610a9d575060408051601f3d908101601f19168201909252610a9a918101906137b7565b60015b610b1057610aa9613848565b806308c379a003610ad75750610abd613860565b80610ac85750610ad9565b610ad1816126f5565b50610b13565b505b3d808015610b02576040519150601f19603f3d011682016040523d82523d5f602084013e610b07565b606091505b50610ad1612761565b90505b92915050565b5f80610b467f000000000000000000000000000000000000000000000000000000000000000060036138f6565b610b70907f000000000000000000000000000000000000000000000000000000000000000061390d565b9050808362ffffff161080610bb2575080610bb062ffffff85167f000000000000000000000000000000000000000000000000000000000000000061390d565b105b15610bc957610bc181856138f6565b915050610b13565b610bf862ffffff84167f000000000000000000000000000000000000000000000000000000000000000061390d565b610bc190856138f6565b5092915050565b5f610b138261276e565b5f610b13826127ca565b5f805b82811015610c025736848483818110610c3b57610c3b613920565b9050602002810190610c4d9190613934565b60405163194eb1ef60e21b815290915073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc90610ccb9084907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401613a7c565b5f60405180830381865af4925050508015610d0757506040513d5f823e601f3d908101601f19168201604052610d049190810190613b28565b60015b610dcc57610d13613848565b806308c379a003610d6a5750610d27613860565b80610d325750610d6c565b5f51602061497e5f395f51905f52610d4d6020840184612e22565b82604051610d5c929190613bc0565b60405180910390a150610f23565b505b3d808015610d95576040519150601f19603f3d011682016040523d82523d5f602084013e610d9a565b606091505b505f51602061497e5f395f51905f52610db66020840184612e22565b610dbe6127dc565b604051610d5c929190613bc0565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be90610e0f908a908a908a908a908a908a908a90600401613be1565b602060405180830381865af4925050508015610e48575060408051601f3d908101601f19168201909252610e4591810190613c3a565b60015b610f0d57610e54613848565b806308c379a003610eab5750610e68613860565b80610e735750610ead565b5f51602061497e5f395f51905f52610e8e60208b018b612e22565b82604051610e9d929190613bc0565b60405180910390a150610f1b565b505b3d808015610ed6576040519150601f19603f3d011682016040523d82523d5f602084013e610edb565b606091505b505f51602061497e5f395f51905f52610ef760208b018b612e22565b610eff6127dc565b604051610e9d929190613bc0565b610f17818c61390d565b9a50505b505050505050505b50600101610c20565b5f610f587f000000000000000000000000000000000000000000000000000000000000000060046138f6565b610f82907f000000000000000000000000000000000000000000000000000000000000000061390d565b610b1390836138f6565b5f34610f9c3a8460200151610b19565b80821015610fbc57610fb733610fb28484613c51565b61282b565b610ffe565b610fc781600a6138f6565b821115610ffe57610ffe6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506126f5565b8461103461100b82612872565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b8152506128ad565b846110fa5f825f01516001600160a01b03163b1180156110b8575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611094573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b89190613c64565b80156110cc57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b8152506128ad565b8551602087015161110e9190348b8b6128bf565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c604051611151959493929190613c83565b60405180910390a2505050509392505050565b6040516351cff8d960e01b81523360048201525f9073__$ae81277065e375dbfccbe8236469c17501$__906351cff8d990602401602060405180830381865af41580156111b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c3a565b90506111e33382612a3d565b90565b5f5f5f5f5f6111f486612a70565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b61123f612bd8565b61124e8263ffffffff16612aa5565b6040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b8154815260200190600101908083116112d3575050505050815250509050919050565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611346573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b139190613cf5565b604051630a70cd2160e31b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906353866908906064015b602060405180830381865af492505050801561142d575060408051601f3d908101601f1916820190925261142a91810190613c3a565b60015b610b1357611439613848565b806308c379a003611467575061144d613860565b806114585750611469565b611461816126f5565b50919050565b505b3d808015611492576040519150601f19603f3d011682016040523d82523d5f602084013e611497565b606091505b50611461612761565b919050565b5f805b82811015610c025773__$ae81277065e375dbfccbe8236469c17501$__6355caae048585848181106114dc576114dc613920565b90506020020160208101906114f19190612e22565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606401602060405180830381865af492505050801561159d575060408051601f3d908101601f1916820190925261159a91810190613c3a565b60015b611696576115a9613848565b806308c379a00361161a57506115bd613860565b806115c8575061161c565b5f51602061497e5f395f51905f528585848181106115e8576115e8613920565b90506020020160208101906115fd9190612e22565b8260405161160c929190613bc0565b60405180910390a1506116a4565b505b3d808015611645576040519150601f19603f3d011682016040523d82523d5f602084013e61164a565b606091505b505f51602061497e5f395f51905f5285858481811061166b5761166b613920565b90506020020160208101906116809190612e22565b6116886127dc565b60405161160c929190613bc0565b6116a0818461390d565b9250505b6001016114a8565b6060816001600160401b038111156116c6576116c6612e83565b6040519080825280602002602001820160405280156116ef578160200160208202803683370190505b5090505f5b82811015610c025761171d84848381811061171157611711613920565b90506020020135611942565b82828151811061172f5761172f613920565b602002602001019060068111156117485761174861303c565b9081600681111561175b5761175b61303c565b9052506001016116f4565b61176e612c13565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af41580156117bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b139190810190613dfa565b6117ea612c13565b5f806117f884860186614036565b604051638578337760e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__9063857833779061183890899086908690600401614394565b5f60405180830381865af492505050801561187457506040513d5f823e601f3d908101601f191682016040526118719190810190613dfa565b60015b61193157611880613848565b806308c379a0036118c25750611894613860565b8061189f57506118c4565b8060405162461bcd60e51b81526004016118b9919061328e565b60405180910390fd5b505b3d8080156118ed576040519150601f19603f3d011682016040523d82523d5f602084013e6118f2565b606091505b5060405162461bcd60e51b81526020600482015260136024820152723ab73430b7323632b21030b9b9b2b93a34b7b760691b60448201526064016118b9565b925061193b915050565b9392505050565b5f61194c82612a70565b604051633962372d60e01b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000602482015273__$ae81277065e375dbfccbe8236469c17501$__90633962372d90604401602060405180830381865af41580156119c1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b13919061445c565b5f6119ef30612acc565b905090565b6040516345ac7f3f60e01b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906345ac7f3f90606401602060405180830381865af4925050508015611aae575060408051601f3d908101601f19168201909252611aab91810190614490565b60015b611aba57611439613848565b6001600160481b0381168015610c0257610c023382612a3d565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff8611af984611942565b6040518263ffffffff1660e01b8152600401611b159190613280565b5f60405180830381865af4158015611b2f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b1391908101906144a9565b611b5e612bd8565b7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e100545f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e101602052604090206040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b815481526020019060010190808311611c3157505050505081525050905090565b611ce86040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015611d3d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b139190810190614683565b60405163194eb1ef60e21b81525f9073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc90611de19085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401613a7c565b5f60405180830381865af4925050508015611e1d57506040513d5f823e601f3d908101601f19168201604052611e1a9190810190613b28565b60015b611e2957611439613848565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be90611e6c908a908a908a908a908a908a908a90600401613be1565b602060405180830381865af4925050508015611ea5575060408051601f3d908101601f19168201909252611ea291810190613c3a565b60015b611f1857611eb1613848565b806308c379a003611edf5750611ec5613860565b80611ed05750611ee1565b611ed9816126f5565b50611f25565b505b3d808015611f0a576040519150601f19603f3d011682016040523d82523d5f602084013e611f0f565b606091505b50611ed9612761565b9998505050505050505050565b50505050505050919050565b5f34611f3c3a610f2c565b80821015611f5757611f5233610fb28484613c51565b611f99565b611f6281600a6138f6565b821115611f9957611f996040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506126f5565b83611fa661100b82612872565b611fb3335f3489896128bf565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a604051611ff6959493929190613c83565b60405180910390a250505092915050565b61203d60405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af4158015612092573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b13919081019061475d565b6120c1612c13565b5f806120cf84860186614036565b604051631ac0750360e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90631ac075039061183890899086908690600401614394565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b815260040161216491815260200190565b5f60405180830381865af415801561217e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121a59190810190613dfa565b6040516020016121b591906130fb565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611b15919061328e565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183546119ef906001600160401b0316600161478e565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612295573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b1391908101906147ad565b5f6020825f015161ffff16116122d2575f612324565b81516020906122e29082906147de565b6122ec919061480c565b61ffff1661231a7f0000000000000000000000000000000000000000000000000000000000000000866138f6565b61232491906138f6565b604083015161233c906001600160401b0316856138f6565b612346919061390d565b949350505050565b612356612bd8565b506040805160c0810182525f808252602080830182905282840182905260608084018390526080808501849052855190810186528381529182018390529381018290529283015260a081019190915290565b806001806123b583611942565b60068111156123c6576123c661303c565b1461245157604051638f191e5f60e01b815261244c9073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612406908590600401613280565b5f60405180830381865af4158015612420573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261244791908101906144a9565b6126f5565b505050565b5f61245b84612a70565b90505f34600983015461247e9190600160781b90046001600160481b031661390d565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b604051631572ab8160e21b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906355caae04906064016113f4565b6040516334c20ee360e01b81525f9073__$ae81277065e375dbfccbe8236469c17501$__906334c20ee39061261490899089908990899089907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161482f565b602060405180830381865af492505050801561264d575060408051601f3d908101601f1916820190925261264a91810190613c3a565b60015b6126c057612659613848565b806308c379a003612687575061266d613860565b806126785750612689565b612681816126f5565b506126c3565b505b3d8080156126b2576040519150601f19603f3d011682016040523d82523d5f602084013e6126b7565b606091505b50612681612761565b90505b95945050505050565b5f6119ef7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1005490565b60408051808201909152601c81527f5769744f7261636c6554727573746c65737344656661756c745632320000000060208201528160405160200161273b9291906148b7565b60408051601f198184030181529082905262461bcd60e51b82526118b99160040161328e565b61276c6124476127dc565b565b5f6001600160401b0382161561279e57601461278a5f846148d7565b61279491906148f6565b610b13905f61478e565b6001600160401b038216156127c357602d6127b95f846148d7565b610b1391906148f6565b505f919050565b5f610b136127d78361276e565b612b0a565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b8152506040516020016128179190614923565b604051602081830303815290604052905090565b604051632770a7eb60e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__90639dc29fac906044016109f2565b5f5f826020015161ffff161180156128935750607f826020015161ffff1611155b8015610b13575050604001516001600160401b0316151590565b816128bb576128bb816126f5565b5050565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18380545f906128f7906001600160401b0316614953565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f61292f82612a70565b6009810180546001600160c01b0316600160c01b436001600160401b0316021790559050612966828561296186612b16565b612b69565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff8616156129db57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f1935050505015801561244c573d5f5f3e3d5ffd5b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1835b5f928352600101602052506040902090565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e100612a93565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610b13600a836148f6565b5f815f015182602001518360400151604051602001612aed9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f612b7330612acc565b612b7e600143613c51565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b6040805160c0810182525f8082526020820181905291810182905260608101829052608081019190915260a08101612c0e612c8e565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001612c0e604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b60405180608001604052806004906020820280368337509192915050565b5f5f83601f840112612cbc575f5ffd5b5081356001600160401b03811115612cd2575f5ffd5b6020830191508360208260051b8501011115612cec575f5ffd5b9250929050565b5f5f60208385031215612d04575f5ffd5b82356001600160401b03811115612d19575f5ffd5b612d2585828601612cac565b90969095509350505050565b5f6101208201905063ffffffff835116825263ffffffff60208401511660208301526001600160401b031960408401511660408301526001600160801b031960608401511660608301526001600160801b0319608084015116608083015260a083015160a083015f5b6004811015612db9578251825260209283019290910190600101612d9a565b50505092915050565b62ffffff81168114612dd2575f5ffd5b50565b5f5f60408385031215612de6575f5ffd5b823591506020830135612df881612dc2565b809150509250929050565b6001600160401b0381168114612dd2575f5ffd5b80356114a081612e03565b5f60208284031215612e32575f5ffd5b813561193b81612e03565b6001600160a01b0381168114612dd2575f5ffd5b5f60208284031215612e61575f5ffd5b813561193b81612e3d565b5f60208284031215612e7c575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715612eb657612eb6612e83565b60405250565b604081018181106001600160401b0382111715612eb657612eb6612e83565b60c081018181106001600160401b0382111715612eb657612eb6612e83565b601f8201601f191681016001600160401b0381118282101715612f1f57612f1f612e83565b6040525050565b6040516111e360c082612efa565b61ffff81168114612dd2575f5ffd5b5f60608284031215612f53575f5ffd5b604051612f5f81612e97565b8091508235612f6d81612f34565b81526020830135612f7d81612f34565b60208201526040830135612f9081612e03565b6040919091015292915050565b5f5f5f83850360c0811215612fb0575f5ffd5b84359350612fc18660208701612f43565b92506040607f1982011215612fd4575f5ffd5b50604051612fe181612ebc565b6080850135612fef81612e3d565b815260a0850135612fff81612dc2565b602082015292959194509192509050565b63ffffffff81168114612dd2575f5ffd5b5f60208284031215613031575f5ffd5b813561193b81613010565b634e487b7160e01b5f52602160045260245ffd5b61010081106130615761306161303c565b9052565b60208101610b138284613050565b600781106130615761306161303c565b602080825282518282018190525f918401906040840190835b818110156130c2576130af838551613073565b602093840193929092019160010161309c565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815261310d602082018351613050565b5f6020830151601481106131235761312361303c565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a086015261317d6101e08601826130cd565b6020928301516101c08701529183015160ff16610100860152506040820151906131ad61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506126c3565b5f5f5f604084860312156131f9575f5ffd5b83356001600160401b0381111561320e575f5ffd5b840160e0818703121561321f575f5ffd5b925060208401356001600160401b03811115613239575f5ffd5b8401601f81018613613249575f5ffd5b80356001600160401b0381111561325e575f5ffd5b86602082840101111561326f575f5ffd5b939660209190910195509293505050565b60208101610b138284613073565b602081525f61193b60208301846130cd565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526132d560808501826130cd565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a0606085015261332c60a08501826130cd565b6080938401516001600160a01b0316949093019390935250919050565b602081525f825161010060208401526133666101208401826132a0565b90506020840151601f1984830301604085015261338382826132e9565b91505060408401516133c0606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f60c08284031215611461575f5ffd5b5f60208284031215613425575f5ffd5b81356001600160401b0381111561343a575f5ffd5b61234684828501613405565b5f5f60808385031215613457575f5ffd5b823591506134688460208501612f43565b90509250929050565b602081525f61193b60208301846132a0565b602081525f61193b60208301846132e9565b5f5f5f60a084860312156134a7575f5ffd5b83359250602084013591506134bf8560408601612f43565b90509250925092565b5f5f5f5f5f606086880312156134dc575f5ffd5b85356001600160401b038111156134f1575f5ffd5b6134fd88828901612cac565b90965094505060208601356001600160401b0381111561351b575f5ffd5b61352788828901613405565b93505060408601356001600160401b03811115613542575f5ffd5b61354e88828901612cac565b969995985093965092949392505050565b67ffffffffffffffff1981168114612dd2575f5ffd5b6001600160801b031981168114612dd2575f5ffd5b80356114a081613575565b60808183375050565b60408183375050565b5f5f8335601e198436030181126135bc575f5ffd5b83016020810192503590506001600160401b038111156135da575f5ffd5b8060071b3603821315612cec575f5ffd5b8183526020830192505f815f5b8481101561361857608082873760809586019591909101906001016135f8565b5093949350505050565b5f8383855260208501945060208460051b820101835f5b8681101561374557838303601f1901885281353687900361017e1901811261365f575f5ffd5b8601803561366c81613010565b63ffffffff168452602081013561368281613010565b63ffffffff166020850152604081013561369b8161355f565b67ffffffffffffffff1916604085015260608101356136b981613575565b6001600160801b03191660608501526136d46080820161358a565b6001600160801b03191660808501526136f360a0808601908301613595565b6137056101208501610120830161359e565b6137136101608201826135a7565b915061018061016086015261372d610180860183836135eb565b60209a8b019a90955093909301925050600101613639565b50909695505050505050565b602081525f612346602083018486613622565b5f82601f830112613773575f5ffd5b604051613781608082612efa565b806080840185811115613792575f5ffd5b845b818110156137ac578051835260209283019201613794565b509195945050505050565b5f6101208284031280156137c9575f5ffd5b506040516137d681612edb565b82516137e181613010565b815260208301516137f181613010565b602082015260408301516138048161355f565b6040820152606083015161381781613575565b6060820152608083015161382a81613575565b608082015261383c8460a08501613764565b60a08201529392505050565b5f60033d11156111e35760045f5f3e505f5160e01c90565b5f60443d101561386d5790565b6040513d600319016004823e80513d60248201116001600160401b038211171561389657505090565b80820180516001600160401b038111156138b1575050505090565b3d84016003190182820160200111156138cb575050505090565b6138da60208285010185612efa565b509392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610b1357610b136138e2565b80820180821115610b1357610b136138e2565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613948575f5ffd5b9190910192915050565b6001600160881b031981168114612dd2575f5ffd5b5f5f8335601e1984360301811261397c575f5ffd5b83016020810192503590506001600160401b0381111561399a575f5ffd5b803603821315612cec575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81356139dc81612e03565b6001600160401b0316835260208201356139f581613952565b6001600160881b0319166020840152613a116040830183613967565b60c06040860152613a2660c0860182846139a8565b9150506060830135613a3781612e03565b6001600160401b03166060850152613a526080840184613967565b8583036080870152613a658382846139a8565b60a095860135969095019590955250919392505050565b606081525f613a8e60608301866139d0565b60208301949094525060400152919050565b80516114a081612e03565b5f5f6001600160401b03841115613ac457613ac4612e83565b50604051601f8401601f191660200190613ade8282612efa565b809250848152858585011115613af2575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112613b19575f5ffd5b61193b83835160208501613aab565b5f5f5f5f5f5f5f60e0888a031215613b3e575f5ffd5b8751613b4981612e3d565b602089015160408a01519198509650613b6181612e03565b6060890151909550613b7281612e03565b6080890151909450613b8381612e03565b60a089015160c08a015191945092506001600160401b03811115613ba5575f5ffd5b613bb18a828b01613b0a565b91505092959891949750929550565b6001600160401b0383168152604060208201525f61234660408301846130cd565b60018060a01b03881681528660208201526001600160401b03861660408201526001600160401b03851660608201526001600160401b03841660808201528260a082015260e060c08201525f611f1860e08301846130cd565b5f60208284031215613c4a575f5ffd5b5051919050565b81810381811115610b1357610b136138e2565b5f60208284031215613c74575f5ffd5b8151801515811461193b575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e08101613cdc608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b9695505050505050565b805161010081106114a0575f5ffd5b5f60208284031215613d05575f5ffd5b61193b82613ce6565b805160ff811681146114a0575f5ffd5b5f60c08284031215613d2e575f5ffd5b604051613d3a81612edb565b80915082516001600160401b03811115613d52575f5ffd5b830160408186031215613d63575f5ffd5b604051613d6f81612ebc565b81516001600160401b03811115613d84575f5ffd5b613d9087828501613b0a565b825250602091820151828201528252613daa908401613d0e565b6020820152613dbb60408401613d0e565b6040820152613dcc60608401613d0e565b6060820152613ddd60808401613aa0565b6080820152613dee60a08401613aa0565b60a08201525092915050565b5f60208284031215613e0a575f5ffd5b81516001600160401b03811115613e1f575f5ffd5b820160c08185031215613e30575f5ffd5b604051613e3c81612edb565b613e4582613ce6565b8152602082015160148110613e58575f5ffd5b60208201526040828101519082015260608083015190820152613e7d60808301613aa0565b608082015260a08201516001600160401b03811115613e9a575f5ffd5b613ea686828501613d1e565b60a083015250949350505050565b5f6001600160401b03821115613ecc57613ecc612e83565b5060051b60200190565b5f82601f830112613ee5575f5ffd5b6040515f90613ef5608082612efa565b9050806080840185811115613f08575f5ffd5b845b818110156130c2578035845260209384019301613f0a565b5f82601f830112613f31575f5ffd5b604080515f91613f419082612efa565b9050806040840185811115613f08575f5ffd5b5f82601f830112613f63575f5ffd5b8135613f6e81613eb4565b604051613f7b8282612efa565b80915082815260208101915060208360071b860101925085831115613f9e575f5ffd5b602085015b83811015613fc557613fb58782613ed6565b8352602090920191608001613fa3565b5095945050505050565b5f82601f830112613fde575f5ffd5b8135613fe981613eb4565b604051613ff68282612efa565b80915082815260208101915060208360051b860101925085831115614019575f5ffd5b602085015b83811015613fc557803583526020928301920161401e565b5f5f60408385031215614047575f5ffd5b82356001600160401b0381111561405c575f5ffd5b8301601f8101851361406c575f5ffd5b803561407781613eb4565b6040516140848282612efa565b80915082815260208101915060208360051b8501019250878311156140a7575f5ffd5b602084015b838110156141c95780356001600160401b038111156140c9575f5ffd5b8501808a03601f19016101808112156140e0575f5ffd5b6040516140ec81612e97565b6101208212156140fa575f5ffd5b604051915061410882612edb565b602083013561411681613010565b8252604083013561412681613010565b602083015260608301356141398161355f565b6040830152608083013561414c81613575565b606083015261415d60a0840161358a565b608083015261416f8c60c08501613ed6565b60a08301528181526141858c6101408501613f22565b602082015261018083013591506001600160401b038211156141a5575f5ffd5b6141b48c602084860101613f54565b604082015285525050602092830192016140ac565b50945050505060208301356001600160401b038111156141e7575f5ffd5b6141f385828601613fcf565b9150509250929050565b805f5b600481101561421f578151845260209384019390910190600101614200565b50505050565b805f5b600281101561421f578151845260209384019390910190600101614228565b5f8151808452602084019350602083015f5b828110156136185761426c8683516141fd565b6080959095019460209190910190600101614259565b5f82825180855260208501945060208160051b830101602085015f5b8381101561374557601f198584030188528151805163ffffffff815116855263ffffffff60208201511660208601526001600160401b031960408201511660408601526001600160801b031960608201511660608601526001600160801b0319608082015116608086015260a0810151905061431d60a08601826141fd565b506020810151614331610120860182614225565b5060400151610180610160850181905261434d90850182614247565b6020998a019990945092909201915060010161429e565b5f8151808452602084019350602083015f5b82811015613618578151865260209586019590910190600101614376565b6060808252843590820152602084013560808201525f60408501356143b881612f34565b61ffff1660a083015260608501356143cf81612f34565b61ffff1660c083015260808501356143e681612e03565b6001600160401b031660e083015261440060a08601612e17565b6001600160401b031661010083015261441c60c0860186613967565b60e0610120850152614433610140850182846139a8565b91505082810360208401526144488186614282565b90508281036040840152613cdc8185614364565b5f6020828403121561446c575f5ffd5b81516007811061193b575f5ffd5b80516001600160481b03811681146114a0575f5ffd5b5f602082840312156144a0575f5ffd5b61193b8261447a565b5f602082840312156144b9575f5ffd5b81516001600160401b038111156144ce575f5ffd5b8201601f810184136144de575f5ffd5b61234684825160208401613aab565b5f608082840312156144fd575f5ffd5b604051608081018181106001600160401b038211171561451f5761451f612e83565b8060405250809150825161453281612e3d565b8152602083015161454281612dc2565b602082015260408301516001600160401b0381111561455f575f5ffd5b61456b85828601613b0a565b604083015250606092830151920191909152919050565b5f60a08284031215614592575f5ffd5b60405160a081018181106001600160401b03821117156145b4576145b4612e83565b806040525080915082516145c781612e3d565b815260208301516145d781612e03565b60208201526040838101519082015260608301516001600160401b038111156145fe575f5ffd5b61460a85828601613b0a565b606083015250608083015161461e81612e3d565b6080919091015292915050565b5f6060828403121561463b575f5ffd5b60405161464781612e97565b809150825161465581612f34565b8152602083015161466581612f34565b60208201526040830151612f9081612e03565b80516114a081613952565b5f60208284031215614693575f5ffd5b81516001600160401b038111156146a8575f5ffd5b820161010081850312156146ba575f5ffd5b6146c2612f26565b81516001600160401b038111156146d7575f5ffd5b6146e3868285016144ed565b82525060208201516001600160401b038111156146fe575f5ffd5b61470a86828501614582565b60208301525061471d856040840161462b565b604082015261472e60a08301614678565b606082015261473f60c0830161447a565b608082015261475060e08301613aa0565b60a0820152949350505050565b5f6020828403121561476d575f5ffd5b81516001600160401b03811115614782575f5ffd5b612346848285016144ed565b6001600160401b038181168382160190811115610b1357610b136138e2565b5f602082840312156147bd575f5ffd5b81516001600160401b038111156147d2575f5ffd5b61234684828501614582565b61ffff8281168282160390811115610b1357610b136138e2565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff83168061481f5761481f6147f8565b8061ffff84160491505092915050565b60a081525f61484260a08301898b613622565b828103602084015261485481896139d0565b838103604085015286815290506001600160fb1b03861115614874575f5ffd5b8560051b8088602084013760608401959095526080909201929092529091016020019695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6148c282856148a0565b6101d160f51b81526126c360028201856148a0565b6001600160401b038281168282160390811115610b1357610b136138e2565b5f6001600160401b0383168061490e5761490e6147f8565b806001600160401b0384160491505092915050565b5f61492e82846148a0565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b5f6001600160401b0382166001600160401b038103614974576149746138e2565b6001019291505056fe7ae9f29e9f698fdd92cfb045617624fdc0c640b517e34bc5670b6ada3b54b48ba2646970667358221220d2079a3639196897e7d7e0fe19af6ba9258327e82115216ed35debd873b266ec64736f6c634300081e0033",
  "deployedBytecode": "0x608060405260043610610262575f3560e01c80637bbdb96e1161013f578063bff852fa116100b3578063d4038ac611610078578063d4038ac6146108ee578063e5a6b10f14610902578063ec5946db14610935578063f91ffdb214610948578063fc140d7714610967578063fe52e05f14610986575f5ffd5b8063bff852fa1461082b578063c258134814610870578063c805dd0f1461088f578063ca7da98b146108a3578063d0a92a08146108cf575f5ffd5b806390602a901161010457806390602a9014610762578063a58f680314610781578063a667533f14610794578063a6ef08c0146107c0578063adb7c3f7146107f3578063b783922b1461080c575f5ffd5b80637bbdb96e146106aa5780637c1fbda3146106d7578063838d44e2146106f65780638bfabb4f146107225780638cfcdea214610736575f5ffd5b806347ad9e69116101d657806359209b391161019b57806359209b39146105205780636d0d6a7e1461054c5780636f07abcc1461056b5780636fdaab7e1461059757806370a082311461060c5780637b1039991461065f575f5ffd5b806347ad9e691461046b5780634cddf6151461048a57806350127a96146104b657806353a5d58c146104d5578063581f5094146104f4575f5ffd5b80631aefb107116102275780631aefb107146103625780631f08f481146103b857806339a8653e146103d75780633b3195b7146103f65780633ccfd60b146104095780633fa595761461041d575f5ffd5b8063057600311461027757806305e742ef146102ac5780630f884886146102d95780631105c8631461031057806317d298d014610343575f5ffd5b366102735761027133346109af565b005b5f5ffd5b348015610282575f5ffd5b50610296610291366004612cf3565b610a22565b6040516102a39190612d31565b60405180910390f35b3480156102b7575f5ffd5b506102cb6102c6366004612dd5565b610b19565b6040519081526020016102a3565b3480156102e4575f5ffd5b506102f86102f3366004612e22565b610c09565b6040516001600160401b0390911681526020016102a3565b34801561031b575f5ffd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561034e575f5ffd5b506102f861035d366004612e22565b610c13565b34801561036d575f5ffd5b506102cb61037c366004612e51565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090206001015490565b3480156103c3575f5ffd5b506102cb6103d2366004612cf3565b610c1d565b3480156103e2575f5ffd5b506102cb6103f1366004612e6c565b610f2c565b6102cb610404366004612f9d565b610f8c565b348015610414575f5ffd5b506102cb611164565b348015610428575f5ffd5b5061043c610437366004612e6c565b6111e6565b6040516102a3949392919093845260208401929092526001600160401b03166040830152606082015260800190565b348015610476575f5ffd5b50610296610485366004613021565b611237565b348015610495575f5ffd5b506104a96104a4366004612e6c565b6112f6565b6040516102a39190613065565b3480156104c1575f5ffd5b506102cb6104d0366004612e22565b61136a565b3480156104e0575f5ffd5b506102cb6104ef366004612cf3565b6114a5565b3480156104ff575f5ffd5b5061051361050e366004612cf3565b6116ac565b6040516102a39190613083565b34801561052b575f5ffd5b5061053f61053a366004612e6c565b611766565b6040516102a391906130fb565b348015610557575f5ffd5b5061053f6105663660046131e7565b6117e2565b348015610576575f5ffd5b5061058a610585366004612e6c565b611942565b6040516102a39190613280565b3480156105a2575f5ffd5b506105f46105b1366004612e6c565b5f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1846020526040902060090154600160781b90046001600160481b031690565b6040516001600160481b0390911681526020016102a3565b348015610617575f5ffd5b506102cb610626366004612e51565b6001600160a01b03165f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e102602052604090205490565b34801561066a575f5ffd5b506106927f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a3565b3480156106b5575f5ffd5b506106be6119e5565b6040516001600160e01b031990911681526020016102a3565b3480156106e2575f5ffd5b506105f46106f1366004612e6c565b6119f4565b348015610701575f5ffd5b50610715610710366004612e6c565b611ad4565b6040516102a3919061328e565b34801561072d575f5ffd5b50610296611b56565b348015610741575f5ffd5b50610755610750366004612e22565b611c52565b6040516102a39190613349565b34801561076d575f5ffd5b506102cb61077c366004613415565b611d64565b6102cb61078f366004613446565b611f31565b34801561079f575f5ffd5b506107b36107ae366004612e22565b612007565b6040516102a39190613471565b3480156107cb575f5ffd5b506102cb7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107fe575f5ffd5b506304722eaf60e31b6106be565b348015610817575f5ffd5b5061053f6108263660046131e7565b6120b9565b348015610836575f5ffd5b5060408051808201909152601c81527f5769744f7261636c6554727573746c65737344656661756c74563232000000006020820152610715565b34801561087b575f5ffd5b5061071561088a366004612e6c565b61210f565b34801561089a575f5ffd5b506102f86121e0565b3480156108ae575f5ffd5b506108c26108bd366004612e22565b612217565b6040516102a39190613483565b3480156108da575f5ffd5b506102cb6108e9366004613495565b6122bc565b3480156108f9575f5ffd5b5061029661234e565b34801561090d575f5ffd5b506106927f000000000000000000000000000000000000000000000000000000000000000081565b610271610943366004612e6c565b6123a8565b348015610953575f5ffd5b506102cb610962366004612e22565b612501565b348015610972575f5ffd5b506102cb6109813660046134c8565b61258f565b348015610991575f5ffd5b5061099a6126cc565b60405163ffffffff90911681526020016102a3565b6040516311f9fbc960e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__906347e7ef24906044015b5f6040518083038186803b158015610a08575f5ffd5b505af4158015610a1a573d5f5f3e3d5ffd5b505050505050565b610a2a612bd8565b60405163f308da0f60e01b815273__$ae81277065e375dbfccbe8236469c17501$__9063f308da0f90610a639086908690600401613751565b61012060405180830381865af4925050508015610a9d575060408051601f3d908101601f19168201909252610a9a918101906137b7565b60015b610b1057610aa9613848565b806308c379a003610ad75750610abd613860565b80610ac85750610ad9565b610ad1816126f5565b50610b13565b505b3d808015610b02576040519150601f19603f3d011682016040523d82523d5f602084013e610b07565b606091505b50610ad1612761565b90505b92915050565b5f80610b467f000000000000000000000000000000000000000000000000000000000000000060036138f6565b610b70907f000000000000000000000000000000000000000000000000000000000000000061390d565b9050808362ffffff161080610bb2575080610bb062ffffff85167f000000000000000000000000000000000000000000000000000000000000000061390d565b105b15610bc957610bc181856138f6565b915050610b13565b610bf862ffffff84167f000000000000000000000000000000000000000000000000000000000000000061390d565b610bc190856138f6565b5092915050565b5f610b138261276e565b5f610b13826127ca565b5f805b82811015610c025736848483818110610c3b57610c3b613920565b9050602002810190610c4d9190613934565b60405163194eb1ef60e21b815290915073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc90610ccb9084907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401613a7c565b5f60405180830381865af4925050508015610d0757506040513d5f823e601f3d908101601f19168201604052610d049190810190613b28565b60015b610dcc57610d13613848565b806308c379a003610d6a5750610d27613860565b80610d325750610d6c565b5f51602061497e5f395f51905f52610d4d6020840184612e22565b82604051610d5c929190613bc0565b60405180910390a150610f23565b505b3d808015610d95576040519150601f19603f3d011682016040523d82523d5f602084013e610d9a565b606091505b505f51602061497e5f395f51905f52610db66020840184612e22565b610dbe6127dc565b604051610d5c929190613bc0565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be90610e0f908a908a908a908a908a908a908a90600401613be1565b602060405180830381865af4925050508015610e48575060408051601f3d908101601f19168201909252610e4591810190613c3a565b60015b610f0d57610e54613848565b806308c379a003610eab5750610e68613860565b80610e735750610ead565b5f51602061497e5f395f51905f52610e8e60208b018b612e22565b82604051610e9d929190613bc0565b60405180910390a150610f1b565b505b3d808015610ed6576040519150601f19603f3d011682016040523d82523d5f602084013e610edb565b606091505b505f51602061497e5f395f51905f52610ef760208b018b612e22565b610eff6127dc565b604051610e9d929190613bc0565b610f17818c61390d565b9a50505b505050505050505b50600101610c20565b5f610f587f000000000000000000000000000000000000000000000000000000000000000060046138f6565b610f82907f000000000000000000000000000000000000000000000000000000000000000061390d565b610b1390836138f6565b5f34610f9c3a8460200151610b19565b80821015610fbc57610fb733610fb28484613c51565b61282b565b610ffe565b610fc781600a6138f6565b821115610ffe57610ffe6040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506126f5565b8461103461100b82612872565b6040518060400160405280600b81526020016a696e76616c696420534c4160a81b8152506128ad565b846110fa5f825f01516001600160a01b03163b1180156110b8575081516040516323d0872b60e11b81523060048201526001600160a01b03909116906347a10e5690602401602060405180830381865afa158015611094573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b89190613c64565b80156110cc57505f826020015162ffffff16115b6040518060400160405280601081526020016f696e76616c69642063616c6c6261636b60801b8152506128ad565b8551602087015161110e9190348b8b6128bf565b9450336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34888c8c604051611151959493929190613c83565b60405180910390a2505050509392505050565b6040516351cff8d960e01b81523360048201525f9073__$ae81277065e375dbfccbe8236469c17501$__906351cff8d990602401602060405180830381865af41580156111b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d79190613c3a565b90506111e33382612a3d565b90565b5f5f5f5f5f6111f486612a70565b600981015460058201546004909201546001600160881b0319608883901b16999298506001600160401b03600160c01b9182900481169850910416945092505050565b61123f612bd8565b61124e8263ffffffff16612aa5565b6040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b8154815260200190600101908083116112d3575050505050815250509050919050565b604051634cddf61560e01b8152600481018290525f9073__$713c4f4487e8756194dbc5b3b091cd4345$__90634cddf61590602401602060405180830381865af4158015611346573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b139190613cf5565b604051630a70cd2160e31b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906353866908906064015b602060405180830381865af492505050801561142d575060408051601f3d908101601f1916820190925261142a91810190613c3a565b60015b610b1357611439613848565b806308c379a003611467575061144d613860565b806114585750611469565b611461816126f5565b50919050565b505b3d808015611492576040519150601f19603f3d011682016040523d82523d5f602084013e611497565b606091505b50611461612761565b919050565b5f805b82811015610c025773__$ae81277065e375dbfccbe8236469c17501$__6355caae048585848181106114dc576114dc613920565b90506020020160208101906114f19190612e22565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f00000000000000000000000000000000000000000000000000000000000000006044820152606401602060405180830381865af492505050801561159d575060408051601f3d908101601f1916820190925261159a91810190613c3a565b60015b611696576115a9613848565b806308c379a00361161a57506115bd613860565b806115c8575061161c565b5f51602061497e5f395f51905f528585848181106115e8576115e8613920565b90506020020160208101906115fd9190612e22565b8260405161160c929190613bc0565b60405180910390a1506116a4565b505b3d808015611645576040519150601f19603f3d011682016040523d82523d5f602084013e61164a565b606091505b505f51602061497e5f395f51905f5285858481811061166b5761166b613920565b90506020020160208101906116809190612e22565b6116886127dc565b60405161160c929190613bc0565b6116a0818461390d565b9250505b6001016114a8565b6060816001600160401b038111156116c6576116c6612e83565b6040519080825280602002602001820160405280156116ef578160200160208202803683370190505b5090505f5b82811015610c025761171d84848381811061171157611711613920565b90506020020135611942565b82828151811061172f5761172f613920565b602002602001019060068111156117485761174861303c565b9081600681111561175b5761175b61303c565b9052506001016116f4565b61176e612c13565b6040516359209b3960e01b81526004810183905273__$713c4f4487e8756194dbc5b3b091cd4345$__906359209b39906024015f60405180830381865af41580156117bb573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b139190810190613dfa565b6117ea612c13565b5f806117f884860186614036565b604051638578337760e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__9063857833779061183890899086908690600401614394565b5f60405180830381865af492505050801561187457506040513d5f823e601f3d908101601f191682016040526118719190810190613dfa565b60015b61193157611880613848565b806308c379a0036118c25750611894613860565b8061189f57506118c4565b8060405162461bcd60e51b81526004016118b9919061328e565b60405180910390fd5b505b3d8080156118ed576040519150601f19603f3d011682016040523d82523d5f602084013e6118f2565b606091505b5060405162461bcd60e51b81526020600482015260136024820152723ab73430b7323632b21030b9b9b2b93a34b7b760691b60448201526064016118b9565b925061193b915050565b9392505050565b5f61194c82612a70565b604051633962372d60e01b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000602482015273__$ae81277065e375dbfccbe8236469c17501$__90633962372d90604401602060405180830381865af41580156119c1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b13919061445c565b5f6119ef30612acc565b905090565b6040516345ac7f3f60e01b8152600481018290527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906345ac7f3f90606401602060405180830381865af4925050508015611aae575060408051601f3d908101601f19168201909252611aab91810190614490565b60015b611aba57611439613848565b6001600160481b0381168015610c0257610c023382612a3d565b606073__$713c4f4487e8756194dbc5b3b091cd4345$__634cbc7ff8611af984611942565b6040518263ffffffff1660e01b8152600401611b159190613280565b5f60405180830381865af4158015611b2f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b1391908101906144a9565b611b5e612bd8565b7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e100545f9081527ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e101602052604090206040805160c081018252825463ffffffff8082168352640100000000820416602083015267ffffffffffffffff19600160401b909104831b168183015260018301546001600160801b0319608082811b82166060850152600160801b909204821b16818301528251908101909252919060a08301906002830160048282826020028201915b815481526020019060010190808311611c3157505050505081525050905090565b611ce86040805161014081019091525f60c0820181815260e083018290526060610100840152610120830191909152819081526040805160a0810182525f808252602082810182905292820181905260608083015260808201529101908152604080516060810182525f80825260208281018290529282015291019081525f602082018190526040820181905260609091015290565b60405163467e6f5160e11b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__90638cfcdea2906024015f60405180830381865af4158015611d3d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b139190810190614683565b60405163194eb1ef60e21b81525f9073__$ae81277065e375dbfccbe8236469c17501$__9063653ac7bc90611de19085907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401613a7c565b5f60405180830381865af4925050508015611e1d57506040513d5f823e601f3d908101601f19168201604052611e1a9190810190613b28565b60015b611e2957611439613848565b604051637102a0df60e11b815273__$713c4f4487e8756194dbc5b3b091cd4345$__9063e20541be90611e6c908a908a908a908a908a908a908a90600401613be1565b602060405180830381865af4925050508015611ea5575060408051601f3d908101601f19168201909252611ea291810190613c3a565b60015b611f1857611eb1613848565b806308c379a003611edf5750611ec5613860565b80611ed05750611ee1565b611ed9816126f5565b50611f25565b505b3d808015611f0a576040519150601f19603f3d011682016040523d82523d5f602084013e611f0f565b606091505b50611ed9612761565b9998505050505050505050565b50505050505050919050565b5f34611f3c3a610f2c565b80821015611f5757611f5233610fb28484613c51565b611f99565b611f6281600a6138f6565b821115611f9957611f996040518060400160405280600f81526020016e1d1bdbc81b5d58da081c995dd85c99608a1b8152506126f5565b83611fa661100b82612872565b611fb3335f3489896128bf565b9350336001600160a01b03167ffbe74eb38ea9de3d74d481a4f701ae121d794895c5797db8260d06d317901d263a34878a8a604051611ff6959493929190613c83565b60405180910390a250505092915050565b61203d60405180608001604052805f6001600160a01b031681526020015f62ffffff168152602001606081526020015f81525090565b60405163a667533f60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063a667533f906024015f60405180830381865af4158015612092573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b13919081019061475d565b6120c1612c13565b5f806120cf84860186614036565b604051631ac0750360e01b8152919350915073__$ae81277065e375dbfccbe8236469c17501$__90631ac075039061183890899086908690600401614394565b606073__$39c1c75f9ff01712a7ae2d1d1d8c462aa1$__6371aad10d73__$713c4f4487e8756194dbc5b3b091cd4345$__6359209b39856040518263ffffffff1660e01b815260040161216491815260200190565b5f60405180830381865af415801561217e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121a59190810190613dfa565b6040516020016121b591906130fb565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611b15919061328e565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e183546119ef906001600160401b0316600161478e565b6040805160a0810182525f80825260208201819052918101829052606080820152608081019190915260405163ca7da98b60e01b81526001600160401b038316600482015273__$713c4f4487e8756194dbc5b3b091cd4345$__9063ca7da98b906024015f60405180830381865af4158015612295573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b1391908101906147ad565b5f6020825f015161ffff16116122d2575f612324565b81516020906122e29082906147de565b6122ec919061480c565b61ffff1661231a7f0000000000000000000000000000000000000000000000000000000000000000866138f6565b61232491906138f6565b604083015161233c906001600160401b0316856138f6565b612346919061390d565b949350505050565b612356612bd8565b506040805160c0810182525f808252602080830182905282840182905260608084018390526080808501849052855190810186528381529182018390529381018290529283015260a081019190915290565b806001806123b583611942565b60068111156123c6576123c661303c565b1461245157604051638f191e5f60e01b815261244c9073__$713c4f4487e8756194dbc5b3b091cd4345$__90638f191e5f90612406908590600401613280565b5f60405180830381865af4158015612420573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261244791908101906144a9565b6126f5565b505050565b5f61245b84612a70565b90505f34600983015461247e9190600160781b90046001600160481b031661390d565b6009830180546001600160481b038316600160781b0268ffffffffffffffffff60781b19909116179055604080516001600160401b03881681523360208201523a818301526060810183905290519192507f66f95ec285ca572fa1cac40e7019e14ab45a8fc619c6405222e8af55534c2f67919081900360800190a15050505050565b604051631572ab8160e21b81526001600160401b03821660048201527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201525f9073__$ae81277065e375dbfccbe8236469c17501$__906355caae04906064016113f4565b6040516334c20ee360e01b81525f9073__$ae81277065e375dbfccbe8236469c17501$__906334c20ee39061261490899089908990899089907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009060040161482f565b602060405180830381865af492505050801561264d575060408051601f3d908101601f1916820190925261264a91810190613c3a565b60015b6126c057612659613848565b806308c379a003612687575061266d613860565b806126785750612689565b612681816126f5565b506126c3565b505b3d8080156126b2576040519150601f19603f3d011682016040523d82523d5f602084013e6126b7565b606091505b50612681612761565b90505b95945050505050565b5f6119ef7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1005490565b60408051808201909152601c81527f5769744f7261636c6554727573746c65737344656661756c745632320000000060208201528160405160200161273b9291906148b7565b60408051601f198184030181529082905262461bcd60e51b82526118b99160040161328e565b61276c6124476127dc565b565b5f6001600160401b0382161561279e57601461278a5f846148d7565b61279491906148f6565b610b13905f61478e565b6001600160401b038216156127c357602d6127b95f846148d7565b610b1391906148f6565b505f919050565b5f610b136127d78361276e565b612b0a565b60606040518060400160405260108152806020016f2bb4ba27b930b1b632a230ba30a634b160811b8152506040516020016128179190614923565b604051602081830303815290604052905090565b604051632770a7eb60e21b81526001600160a01b03831660048201526024810182905273__$ae81277065e375dbfccbe8236469c17501$__90639dc29fac906044016109f2565b5f5f826020015161ffff161180156128935750607f826020015161ffff1611155b8015610b13575050604001516001600160401b0316151590565b816128bb576128bb816126f5565b5050565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e18380545f906128f7906001600160401b0316614953565b91906101000a8154816001600160401b0302191690836001600160401b0316021790556001600160401b031690505f61292f82612a70565b6009810180546001600160c01b0316600160c01b436001600160401b0316021790559050612966828561296186612b16565b612b69565b60098201805460889290921c6001600160c01b031990921691909117600160781b6001600160481b0388160217905580546001600160a01b0319166001600160a01b0388161781556002810184905562ffffff8616156129db57805462ffffff60a01b1916600160a01b62ffffff8816021781555b82516008909101805460208501516040909501516001600160401b0316640100000000026bffffffffffffffff000000001961ffff968716620100000263ffffffff199093169690941695909517179190911692909217909155949350505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f1935050505015801561244c573d5f5f3e3d5ffd5b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e1835b5f928352600101602052506040902090565b5f7ff595240b351bc8f951c2f53b26f4e78c32cb62122cf76c19b7fdda7d4968e100612a93565b604080516001600160a01b038316602082015246918101919091525f906060015b604051602081830303815290604052805190602001209050919050565b5f610b13600a836148f6565b5f815f015182602001518360400151604051602001612aed9392919060f093841b6001600160f01b031990811682529290931b909116600283015260c01b6001600160c01b0319166004820152600c0190565b5f612b7330612acc565b612b7e600143613c51565b604080516001600160e01b031990931660208401529040908201526001600160401b03851660608201526080810184905260a0810183905260c0016040516020818303038152906040528051906020012090509392505050565b6040805160c0810182525f8082526020820181905291810182905260608101829052608081019190915260a08101612c0e612c8e565b905290565b6040805160c08101909152805f81526020015f81526020015f81526020015f81526020015f6001600160401b03168152602001612c0e604080516101008101909152606060c082019081525f60e0830152819081525f6020820181905260408201819052606082018190526080820181905260a09091015290565b60405180608001604052806004906020820280368337509192915050565b5f5f83601f840112612cbc575f5ffd5b5081356001600160401b03811115612cd2575f5ffd5b6020830191508360208260051b8501011115612cec575f5ffd5b9250929050565b5f5f60208385031215612d04575f5ffd5b82356001600160401b03811115612d19575f5ffd5b612d2585828601612cac565b90969095509350505050565b5f6101208201905063ffffffff835116825263ffffffff60208401511660208301526001600160401b031960408401511660408301526001600160801b031960608401511660608301526001600160801b0319608084015116608083015260a083015160a083015f5b6004811015612db9578251825260209283019290910190600101612d9a565b50505092915050565b62ffffff81168114612dd2575f5ffd5b50565b5f5f60408385031215612de6575f5ffd5b823591506020830135612df881612dc2565b809150509250929050565b6001600160401b0381168114612dd2575f5ffd5b80356114a081612e03565b5f60208284031215612e32575f5ffd5b813561193b81612e03565b6001600160a01b0381168114612dd2575f5ffd5b5f60208284031215612e61575f5ffd5b813561193b81612e3d565b5f60208284031215612e7c575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b606081018181106001600160401b0382111715612eb657612eb6612e83565b60405250565b604081018181106001600160401b0382111715612eb657612eb6612e83565b60c081018181106001600160401b0382111715612eb657612eb6612e83565b601f8201601f191681016001600160401b0381118282101715612f1f57612f1f612e83565b6040525050565b6040516111e360c082612efa565b61ffff81168114612dd2575f5ffd5b5f60608284031215612f53575f5ffd5b604051612f5f81612e97565b8091508235612f6d81612f34565b81526020830135612f7d81612f34565b60208201526040830135612f9081612e03565b6040919091015292915050565b5f5f5f83850360c0811215612fb0575f5ffd5b84359350612fc18660208701612f43565b92506040607f1982011215612fd4575f5ffd5b50604051612fe181612ebc565b6080850135612fef81612e3d565b815260a0850135612fff81612dc2565b602082015292959194509192509050565b63ffffffff81168114612dd2575f5ffd5b5f60208284031215613031575f5ffd5b813561193b81613010565b634e487b7160e01b5f52602160045260245ffd5b61010081106130615761306161303c565b9052565b60208101610b138284613050565b600781106130615761306161303c565b602080825282518282018190525f918401906040840190835b818110156130c2576130af838551613073565b602093840193929092019160010161309c565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815261310d602082018351613050565b5f6020830151601481106131235761312361303c565b8060408401525060408301516060830152606083015160808301526001600160401b0360808401511660a083015260a083015160c080840152805160c060e0850152805160406101a086015261317d6101e08601826130cd565b6020928301516101c08701529183015160ff16610100860152506040820151906131ad61012086018360ff169052565b606083015160ff1661014086015260808301516001600160401b0380821661016088015260a09094015193841661018087015291506126c3565b5f5f5f604084860312156131f9575f5ffd5b83356001600160401b0381111561320e575f5ffd5b840160e0818703121561321f575f5ffd5b925060208401356001600160401b03811115613239575f5ffd5b8401601f81018613613249575f5ffd5b80356001600160401b0381111561325e575f5ffd5b86602082840101111561326f575f5ffd5b939660209190910195509293505050565b60208101610b138284613073565b602081525f61193b60208301846130cd565b60018060a01b03815116825262ffffff60208201511660208301525f6040820151608060408501526132d560808501826130cd565b606093840151949093019390935250919050565b60018060a01b0381511682526001600160401b036020820151166020830152604081015160408301525f606082015160a0606085015261332c60a08501826130cd565b6080938401516001600160a01b0316949093019390935250919050565b602081525f825161010060208401526133666101208401826132a0565b90506020840151601f1984830301604085015261338382826132e9565b91505060408401516133c0606085018261ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b5060608401516001600160881b03191660c084015260808401516001600160481b031660e084015260a0909301516001600160401b0316610100909201919091525090565b5f60c08284031215611461575f5ffd5b5f60208284031215613425575f5ffd5b81356001600160401b0381111561343a575f5ffd5b61234684828501613405565b5f5f60808385031215613457575f5ffd5b823591506134688460208501612f43565b90509250929050565b602081525f61193b60208301846132a0565b602081525f61193b60208301846132e9565b5f5f5f60a084860312156134a7575f5ffd5b83359250602084013591506134bf8560408601612f43565b90509250925092565b5f5f5f5f5f606086880312156134dc575f5ffd5b85356001600160401b038111156134f1575f5ffd5b6134fd88828901612cac565b90965094505060208601356001600160401b0381111561351b575f5ffd5b61352788828901613405565b93505060408601356001600160401b03811115613542575f5ffd5b61354e88828901612cac565b969995985093965092949392505050565b67ffffffffffffffff1981168114612dd2575f5ffd5b6001600160801b031981168114612dd2575f5ffd5b80356114a081613575565b60808183375050565b60408183375050565b5f5f8335601e198436030181126135bc575f5ffd5b83016020810192503590506001600160401b038111156135da575f5ffd5b8060071b3603821315612cec575f5ffd5b8183526020830192505f815f5b8481101561361857608082873760809586019591909101906001016135f8565b5093949350505050565b5f8383855260208501945060208460051b820101835f5b8681101561374557838303601f1901885281353687900361017e1901811261365f575f5ffd5b8601803561366c81613010565b63ffffffff168452602081013561368281613010565b63ffffffff166020850152604081013561369b8161355f565b67ffffffffffffffff1916604085015260608101356136b981613575565b6001600160801b03191660608501526136d46080820161358a565b6001600160801b03191660808501526136f360a0808601908301613595565b6137056101208501610120830161359e565b6137136101608201826135a7565b915061018061016086015261372d610180860183836135eb565b60209a8b019a90955093909301925050600101613639565b50909695505050505050565b602081525f612346602083018486613622565b5f82601f830112613773575f5ffd5b604051613781608082612efa565b806080840185811115613792575f5ffd5b845b818110156137ac578051835260209283019201613794565b509195945050505050565b5f6101208284031280156137c9575f5ffd5b506040516137d681612edb565b82516137e181613010565b815260208301516137f181613010565b602082015260408301516138048161355f565b6040820152606083015161381781613575565b6060820152608083015161382a81613575565b608082015261383c8460a08501613764565b60a08201529392505050565b5f60033d11156111e35760045f5f3e505f5160e01c90565b5f60443d101561386d5790565b6040513d600319016004823e80513d60248201116001600160401b038211171561389657505090565b80820180516001600160401b038111156138b1575050505090565b3d84016003190182820160200111156138cb575050505090565b6138da60208285010185612efa565b509392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610b1357610b136138e2565b80820180821115610b1357610b136138e2565b634e487b7160e01b5f52603260045260245ffd5b5f823560be19833603018112613948575f5ffd5b9190910192915050565b6001600160881b031981168114612dd2575f5ffd5b5f5f8335601e1984360301811261397c575f5ffd5b83016020810192503590506001600160401b0381111561399a575f5ffd5b803603821315612cec575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f81356139dc81612e03565b6001600160401b0316835260208201356139f581613952565b6001600160881b0319166020840152613a116040830183613967565b60c06040860152613a2660c0860182846139a8565b9150506060830135613a3781612e03565b6001600160401b03166060850152613a526080840184613967565b8583036080870152613a658382846139a8565b60a095860135969095019590955250919392505050565b606081525f613a8e60608301866139d0565b60208301949094525060400152919050565b80516114a081612e03565b5f5f6001600160401b03841115613ac457613ac4612e83565b50604051601f8401601f191660200190613ade8282612efa565b809250848152858585011115613af2575f5ffd5b8484602083015e5f6020868301015250509392505050565b5f82601f830112613b19575f5ffd5b61193b83835160208501613aab565b5f5f5f5f5f5f5f60e0888a031215613b3e575f5ffd5b8751613b4981612e3d565b602089015160408a01519198509650613b6181612e03565b6060890151909550613b7281612e03565b6080890151909450613b8381612e03565b60a089015160c08a015191945092506001600160401b03811115613ba5575f5ffd5b613bb18a828b01613b0a565b91505092959891949750929550565b6001600160401b0383168152604060208201525f61234660408301846130cd565b60018060a01b03881681528660208201526001600160401b03861660408201526001600160401b03851660608201526001600160401b03841660808201528260a082015260e060c08201525f611f1860e08301846130cd565b5f60208284031215613c4a575f5ffd5b5051919050565b81810381811115610b1357610b136138e2565b5f60208284031215613c74575f5ffd5b8151801515811461193b575f5ffd5b858152602081018590526001600160401b03841660408201526060810183905260e08101613cdc608083018461ffff815116825261ffff60208201511660208301526001600160401b0360408201511660408301525050565b9695505050505050565b805161010081106114a0575f5ffd5b5f60208284031215613d05575f5ffd5b61193b82613ce6565b805160ff811681146114a0575f5ffd5b5f60c08284031215613d2e575f5ffd5b604051613d3a81612edb565b80915082516001600160401b03811115613d52575f5ffd5b830160408186031215613d63575f5ffd5b604051613d6f81612ebc565b81516001600160401b03811115613d84575f5ffd5b613d9087828501613b0a565b825250602091820151828201528252613daa908401613d0e565b6020820152613dbb60408401613d0e565b6040820152613dcc60608401613d0e565b6060820152613ddd60808401613aa0565b6080820152613dee60a08401613aa0565b60a08201525092915050565b5f60208284031215613e0a575f5ffd5b81516001600160401b03811115613e1f575f5ffd5b820160c08185031215613e30575f5ffd5b604051613e3c81612edb565b613e4582613ce6565b8152602082015160148110613e58575f5ffd5b60208201526040828101519082015260608083015190820152613e7d60808301613aa0565b608082015260a08201516001600160401b03811115613e9a575f5ffd5b613ea686828501613d1e565b60a083015250949350505050565b5f6001600160401b03821115613ecc57613ecc612e83565b5060051b60200190565b5f82601f830112613ee5575f5ffd5b6040515f90613ef5608082612efa565b9050806080840185811115613f08575f5ffd5b845b818110156130c2578035845260209384019301613f0a565b5f82601f830112613f31575f5ffd5b604080515f91613f419082612efa565b9050806040840185811115613f08575f5ffd5b5f82601f830112613f63575f5ffd5b8135613f6e81613eb4565b604051613f7b8282612efa565b80915082815260208101915060208360071b860101925085831115613f9e575f5ffd5b602085015b83811015613fc557613fb58782613ed6565b8352602090920191608001613fa3565b5095945050505050565b5f82601f830112613fde575f5ffd5b8135613fe981613eb4565b604051613ff68282612efa565b80915082815260208101915060208360051b860101925085831115614019575f5ffd5b602085015b83811015613fc557803583526020928301920161401e565b5f5f60408385031215614047575f5ffd5b82356001600160401b0381111561405c575f5ffd5b8301601f8101851361406c575f5ffd5b803561407781613eb4565b6040516140848282612efa565b80915082815260208101915060208360051b8501019250878311156140a7575f5ffd5b602084015b838110156141c95780356001600160401b038111156140c9575f5ffd5b8501808a03601f19016101808112156140e0575f5ffd5b6040516140ec81612e97565b6101208212156140fa575f5ffd5b604051915061410882612edb565b602083013561411681613010565b8252604083013561412681613010565b602083015260608301356141398161355f565b6040830152608083013561414c81613575565b606083015261415d60a0840161358a565b608083015261416f8c60c08501613ed6565b60a08301528181526141858c6101408501613f22565b602082015261018083013591506001600160401b038211156141a5575f5ffd5b6141b48c602084860101613f54565b604082015285525050602092830192016140ac565b50945050505060208301356001600160401b038111156141e7575f5ffd5b6141f385828601613fcf565b9150509250929050565b805f5b600481101561421f578151845260209384019390910190600101614200565b50505050565b805f5b600281101561421f578151845260209384019390910190600101614228565b5f8151808452602084019350602083015f5b828110156136185761426c8683516141fd565b6080959095019460209190910190600101614259565b5f82825180855260208501945060208160051b830101602085015f5b8381101561374557601f198584030188528151805163ffffffff815116855263ffffffff60208201511660208601526001600160401b031960408201511660408601526001600160801b031960608201511660608601526001600160801b0319608082015116608086015260a0810151905061431d60a08601826141fd565b506020810151614331610120860182614225565b5060400151610180610160850181905261434d90850182614247565b6020998a019990945092909201915060010161429e565b5f8151808452602084019350602083015f5b82811015613618578151865260209586019590910190600101614376565b6060808252843590820152602084013560808201525f60408501356143b881612f34565b61ffff1660a083015260608501356143cf81612f34565b61ffff1660c083015260808501356143e681612e03565b6001600160401b031660e083015261440060a08601612e17565b6001600160401b031661010083015261441c60c0860186613967565b60e0610120850152614433610140850182846139a8565b91505082810360208401526144488186614282565b90508281036040840152613cdc8185614364565b5f6020828403121561446c575f5ffd5b81516007811061193b575f5ffd5b80516001600160481b03811681146114a0575f5ffd5b5f602082840312156144a0575f5ffd5b61193b8261447a565b5f602082840312156144b9575f5ffd5b81516001600160401b038111156144ce575f5ffd5b8201601f810184136144de575f5ffd5b61234684825160208401613aab565b5f608082840312156144fd575f5ffd5b604051608081018181106001600160401b038211171561451f5761451f612e83565b8060405250809150825161453281612e3d565b8152602083015161454281612dc2565b602082015260408301516001600160401b0381111561455f575f5ffd5b61456b85828601613b0a565b604083015250606092830151920191909152919050565b5f60a08284031215614592575f5ffd5b60405160a081018181106001600160401b03821117156145b4576145b4612e83565b806040525080915082516145c781612e3d565b815260208301516145d781612e03565b60208201526040838101519082015260608301516001600160401b038111156145fe575f5ffd5b61460a85828601613b0a565b606083015250608083015161461e81612e3d565b6080919091015292915050565b5f6060828403121561463b575f5ffd5b60405161464781612e97565b809150825161465581612f34565b8152602083015161466581612f34565b60208201526040830151612f9081612e03565b80516114a081613952565b5f60208284031215614693575f5ffd5b81516001600160401b038111156146a8575f5ffd5b820161010081850312156146ba575f5ffd5b6146c2612f26565b81516001600160401b038111156146d7575f5ffd5b6146e3868285016144ed565b82525060208201516001600160401b038111156146fe575f5ffd5b61470a86828501614582565b60208301525061471d856040840161462b565b604082015261472e60a08301614678565b606082015261473f60c0830161447a565b608082015261475060e08301613aa0565b60a0820152949350505050565b5f6020828403121561476d575f5ffd5b81516001600160401b03811115614782575f5ffd5b612346848285016144ed565b6001600160401b038181168382160190811115610b1357610b136138e2565b5f602082840312156147bd575f5ffd5b81516001600160401b038111156147d2575f5ffd5b61234684828501614582565b61ffff8281168282160390811115610b1357610b136138e2565b634e487b7160e01b5f52601260045260245ffd5b5f61ffff83168061481f5761481f6147f8565b8061ffff84160491505092915050565b60a081525f61484260a08301898b613622565b828103602084015261485481896139d0565b838103604085015286815290506001600160fb1b03861115614874575f5ffd5b8560051b8088602084013760608401959095526080909201929092529091016020019695505050505050565b5f81518060208401855e5f93019283525090919050565b5f6148c282856148a0565b6101d160f51b81526126c360028201856148a0565b6001600160401b038281168282160390811115610b1357610b136138e2565b5f6001600160401b0383168061490e5761490e6147f8565b806001600160401b0384160491505092915050565b5f61492e82846148a0565b741d103ab73430b7323632b21030b9b9b2b93a34b7b760591b81526015019392505050565b5f6001600160401b0382166001600160401b038103614974576149746138e2565b6001019291505056fe7ae9f29e9f698fdd92cfb045617624fdc0c640b517e34bc5670b6ada3b54b48ba2646970667358221220d2079a3639196897e7d7e0fe19af6ba9258327e82115216ed35debd873b266ec64736f6c634300081e0033",
  "linkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 5257
        },
        {
          "length": 20,
          "start": 6588
        },
        {
          "length": 20,
          "start": 7730
        },
        {
          "length": 20,
          "start": 8582
        },
        {
          "length": 20,
          "start": 9140
        },
        {
          "length": 20,
          "start": 9446
        },
        {
          "length": 20,
          "start": 9993
        },
        {
          "length": 20,
          "start": 10203
        },
        {
          "length": 20,
          "start": 10508
        },
        {
          "length": 20,
          "start": 10892
        }
      ]
    },
    "project/contracts/data/WitOracleTrustlessDataLib.sol": {
      "WitOracleTrustlessDataLib": [
        {
          "length": 20,
          "start": 4226
        },
        {
          "length": 20,
          "start": 4327
        },
        {
          "length": 20,
          "start": 4877
        },
        {
          "length": 20,
          "start": 6185
        },
        {
          "length": 20,
          "start": 6788
        },
        {
          "length": 20,
          "start": 7008
        },
        {
          "length": 20,
          "start": 7866
        },
        {
          "length": 20,
          "start": 8247
        },
        {
          "length": 20,
          "start": 8454
        },
        {
          "length": 20,
          "start": 9251
        },
        {
          "length": 20,
          "start": 10129
        },
        {
          "length": 20,
          "start": 11291
        },
        {
          "length": 20,
          "start": 11342
        },
        {
          "length": 20,
          "start": 12030
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 10177
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "project/contracts/data/WitOracleDataLib.sol": {
      "WitOracleDataLib": [
        {
          "length": 20,
          "start": 3547
        },
        {
          "length": 20,
          "start": 4878
        },
        {
          "length": 20,
          "start": 6020
        },
        {
          "length": 20,
          "start": 6872
        },
        {
          "length": 20,
          "start": 7430
        },
        {
          "length": 20,
          "start": 7736
        },
        {
          "length": 20,
          "start": 8283
        },
        {
          "length": 20,
          "start": 8493
        },
        {
          "length": 20,
          "start": 8798
        },
        {
          "length": 20,
          "start": 9182
        }
      ]
    },
    "project/contracts/data/WitOracleTrustlessDataLib.sol": {
      "WitOracleTrustlessDataLib": [
        {
          "length": 20,
          "start": 2516
        },
        {
          "length": 20,
          "start": 2617
        },
        {
          "length": 20,
          "start": 3167
        },
        {
          "length": 20,
          "start": 4475
        },
        {
          "length": 20,
          "start": 5078
        },
        {
          "length": 20,
          "start": 5298
        },
        {
          "length": 20,
          "start": 6156
        },
        {
          "length": 20,
          "start": 6537
        },
        {
          "length": 20,
          "start": 6744
        },
        {
          "length": 20,
          "start": 7541
        },
        {
          "length": 20,
          "start": 8419
        },
        {
          "length": 20,
          "start": 9581
        },
        {
          "length": 20,
          "start": 9632
        },
        {
          "length": 20,
          "start": 10320
        }
      ]
    },
    "project/contracts/libs/WitOracleResultStatusLib.sol": {
      "WitOracleResultStatusLib": [
        {
          "length": 20,
          "start": 8467
        }
      ]
    }
  },
  "immutableReferences": {
    "10085": [
      {
        "length": 32,
        "start": 1648
      }
    ],
    "10087": [
      {
        "length": 32,
        "start": 3934
      }
    ],
    "10089": [
      {
        "length": 32,
        "start": 2956
      },
      {
        "length": 32,
        "start": 3028
      }
    ],
    "10091": [
      {
        "length": 32,
        "start": 2892
      }
    ],
    "10093": [
      {
        "length": 32,
        "start": 2848
      },
      {
        "length": 32,
        "start": 3890
      },
      {
        "length": 32,
        "start": 8949
      }
    ],
    "12554": [
      {
        "length": 32,
        "start": 801
      },
      {
        "length": 32,
        "start": 3201
      },
      {
        "length": 32,
        "start": 5000
      },
      {
        "length": 32,
        "start": 5399
      },
      {
        "length": 32,
        "start": 6499
      },
      {
        "length": 32,
        "start": 6666
      },
      {
        "length": 32,
        "start": 7575
      },
      {
        "length": 32,
        "start": 9503
      },
      {
        "length": 32,
        "start": 9674
      }
    ],
    "12557": [
      {
        "length": 32,
        "start": 2001
      },
      {
        "length": 32,
        "start": 3235
      },
      {
        "length": 32,
        "start": 5038
      },
      {
        "length": 32,
        "start": 5437
      },
      {
        "length": 32,
        "start": 6704
      },
      {
        "length": 32,
        "start": 7609
      },
      {
        "length": 32,
        "start": 9541
      },
      {
        "length": 32,
        "start": 9708
      }
    ],
    "45715": [
      {
        "length": 32,
        "start": 2323
      }
    ]
  },
  "inputSourceName": "project/contracts/core/trustless/WitOracleTrustlessDefaultV22.sol",
  "buildInfoId": "solc-0_8_30-47301052af11a5aa5062e9b98ca44d5e142950cf"
}