{
  "_format": "hh-sol-artifact-1",
  "contractName": "OFTAdapterFixedSupplyMock",
  "sourceName": "contracts/mocks/layerzero/adapter/ERC20/OFTAdapterFixedSupplyMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "lzEndpoint",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "InvalidDelegate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEndpointCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidLocalDecimals",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "options",
          "type": "bytes"
        }
      ],
      "name": "InvalidOptions",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LzTokenUnavailable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        }
      ],
      "name": "NoPeer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "msgValue",
          "type": "uint256"
        }
      ],
      "name": "NotEnoughNative",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "OnlyEndpoint",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "sender",
          "type": "bytes32"
        }
      ],
      "name": "OnlyPeer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlySelf",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "result",
          "type": "bytes"
        }
      ],
      "name": "SimulationResult",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minAmountLD",
          "type": "uint256"
        }
      ],
      "name": "SlippageExceeded",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "Credit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountSentLD",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "Debit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "eid",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "msgType",
              "type": "uint16"
            },
            {
              "internalType": "bytes",
              "name": "options",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct EnforcedOptionParam[]",
          "name": "_enforcedOptions",
          "type": "tuple[]"
        }
      ],
      "name": "EnforcedOptionSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "inspector",
          "type": "address"
        }
      ],
      "name": "MsgInspectorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "guid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "OFTReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "guid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "fromAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountSentLD",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountReceivedLD",
          "type": "uint256"
        }
      ],
      "name": "OFTSent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "peer",
          "type": "bytes32"
        }
      ],
      "name": "PeerSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "preCrimeAddress",
          "type": "address"
        }
      ],
      "name": "PreCrimeSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "SEND",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SEND_AND_CALL",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "origin",
          "type": "tuple"
        }
      ],
      "name": "allowInitializePath",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "approvalRequired",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "_msgType",
          "type": "uint16"
        },
        {
          "internalType": "bytes",
          "name": "_extraOptions",
          "type": "bytes"
        }
      ],
      "name": "combineOptions",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "srcEid",
          "type": "uint32"
        }
      ],
      "name": "credit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minAmountLD",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        }
      ],
      "name": "debit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimalConversionRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endpoint",
      "outputs": [
        {
          "internalType": "contract ILayerZeroEndpointV2",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "msgType",
          "type": "uint16"
        }
      ],
      "name": "enforcedOptions",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "enforcedOption",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "isComposeMsgSender",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_peer",
          "type": "bytes32"
        }
      ],
      "name": "isPeer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_guid",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_executor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "lzReceive",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "uint32",
                  "name": "srcEid",
                  "type": "uint32"
                },
                {
                  "internalType": "bytes32",
                  "name": "sender",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint64",
                  "name": "nonce",
                  "type": "uint64"
                }
              ],
              "internalType": "struct Origin",
              "name": "origin",
              "type": "tuple"
            },
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "guid",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "executor",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "message",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "extraData",
              "type": "bytes"
            }
          ],
          "internalType": "struct InboundPacket[]",
          "name": "_packets",
          "type": "tuple[]"
        }
      ],
      "name": "lzReceiveAndRevert",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "srcEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "sender",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            }
          ],
          "internalType": "struct Origin",
          "name": "_origin",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "_guid",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "_executor",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_extraData",
          "type": "bytes"
        }
      ],
      "name": "lzReceiveSimulate",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "msgInspector",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nextNonce",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oApp",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oAppVersion",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "senderVersion",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "receiverVersion",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oftVersion",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        },
        {
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        }
      ],
      "name": "peers",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "peer",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "preCrime",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        }
      ],
      "name": "quoteOFT",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxAmountLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTLimit",
          "name": "oftLimit",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "int256",
              "name": "feeAmountLD",
              "type": "int256"
            },
            {
              "internalType": "string",
              "name": "description",
              "type": "string"
            }
          ],
          "internalType": "struct OFTFeeDetail[]",
          "name": "oftFeeDetails",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "amountSentLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountReceivedLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTReceipt",
          "name": "oftReceipt",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "_payInLzToken",
          "type": "bool"
        }
      ],
      "name": "quoteSend",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "nativeFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lzTokenFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct MessagingFee",
          "name": "msgFee",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "dstEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes32",
              "name": "to",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "amountLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minAmountLD",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "extraOptions",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "composeMsg",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "oftCmd",
              "type": "bytes"
            }
          ],
          "internalType": "struct SendParam",
          "name": "_sendParam",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "nativeFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lzTokenFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct MessagingFee",
          "name": "_fee",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_refundAddress",
          "type": "address"
        }
      ],
      "name": "send",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "guid",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "nonce",
              "type": "uint64"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "nativeFee",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "lzTokenFee",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MessagingFee",
              "name": "fee",
              "type": "tuple"
            }
          ],
          "internalType": "struct MessagingReceipt",
          "name": "msgReceipt",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "amountSentLD",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountReceivedLD",
              "type": "uint256"
            }
          ],
          "internalType": "struct OFTReceipt",
          "name": "oftReceipt",
          "type": "tuple"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        }
      ],
      "name": "setDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "eid",
              "type": "uint32"
            },
            {
              "internalType": "uint16",
              "name": "msgType",
              "type": "uint16"
            },
            {
              "internalType": "bytes",
              "name": "options",
              "type": "bytes"
            }
          ],
          "internalType": "struct EnforcedOptionParam[]",
          "name": "_enforcedOptions",
          "type": "tuple[]"
        }
      ],
      "name": "setEnforcedOptions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_msgInspector",
          "type": "address"
        }
      ],
      "name": "setMsgInspector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "_peer",
          "type": "bytes32"
        }
      ],
      "name": "setPeer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_preCrime",
          "type": "address"
        }
      ],
      "name": "setPreCrime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sharedDecimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e060405234801561001057600080fd5b506040516137f93803806137f983398101604081905261002f91610243565b828282828282826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100979190610286565b828281818181806001600160a01b0381166100cc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100d5816101d2565b506001600160a01b03808316608052811661010357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b15801561014a57600080fd5b505af115801561015e573d6000803e3d6000fd5b505050505050505061017461022260201b60201c565b60ff168360ff16101561019a576040516301e9714b60e41b815260040160405180910390fd5b6101a56006846102c6565b6101b090600a6103cc565b60a0525050506001600160a01b0390921660c052506103db9650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b80516001600160a01b038116811461023e57600080fd5b919050565b60008060006060848603121561025857600080fd5b61026184610227565b925061026f60208501610227565b915061027d60408501610227565b90509250925092565b60006020828403121561029857600080fd5b815160ff811681146102a957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156102df576102df6102b0565b92915050565b6001815b600184111561032057808504811115610304576103046102b0565b600184161561031257908102905b60019390931c9280026102e9565b935093915050565b600082610337575060016102df565b81610344575060006102df565b816001811461035a576002811461036457610380565b60019150506102df565b60ff841115610375576103756102b0565b50506001821b6102df565b5060208310610133831016604e8410600b84101617156103a3575081810a6102df565b6103b060001984846102e5565b80600019048211156103c4576103c46102b0565b029392505050565b60006102a960ff841683610328565b60805160a05160c05161339b61045e6000396000818161073e015281816117de01526118b101526000818161058a01528181611b2d01528181611ba20152611c5501526000818161047e0152818161092f015281816110d6015281816113f7015281816116ea01528181611e1101528181611fdf01526120d8015261339b6000f3fe6080604052600436106102345760003560e01c806382413eac11610138578063bc70b354116100b0578063d045a0dc1161007f578063f2fde38b11610064578063f2fde38b1461070f578063fc0c546a1461072f578063ff7bd03d1461076257600080fd5b8063d045a0dc146106dc578063d4243885146106ef57600080fd5b8063bc70b35414610668578063bd815db014610688578063c7c7f5b31461069b578063ca5eb5e1146106bc57600080fd5b806398ae8aab11610107578063b731ea0a116100ec578063b731ea0a146105ee578063b98bd0701461061b578063bb0b6a531461063b57600080fd5b806398ae8aab146105ba5780639f68b964146105da57600080fd5b806382413eac14610511578063857749b0146105315780638da5cb5b1461054d578063963efcaa1461057857600080fd5b80633b6f743b116101cb5780635a0dfe4d1161019a5780636fc1b31e1161017f5780636fc1b31e146104a0578063715018a6146104c05780637d25a05e146104d557600080fd5b80635a0dfe4d146104255780635e280f111461046c57600080fd5b80633b6f743b146103985780634dba701b146103c557806352ae2879146103e55780635535d461146103f857600080fd5b8063156a0d0f11610207578063156a0d0f1461030057806317442b70146103415780631f5e1334146103635780633400288b1461037857600080fd5b80630d35b41514610239578063111ecdad1461027157806313137d65146102c3578063134d4f25146102d8575b600080fd5b34801561024557600080fd5b5061025961025436600461215d565b610782565b60405161026893929190612200565b60405180910390f35b34801561027d57600080fd5b5060045461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b6102d66102d1366004612338565b61092d565b005b3480156102e457600080fd5b506102ed600281565b60405161ffff9091168152602001610268565b34801561030c57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526001602082015201610268565b34801561034d57600080fd5b5060408051600181526002602082015201610268565b34801561036f57600080fd5b506102ed600181565b34801561038457600080fd5b506102d66103933660046123f4565b610a2c565b3480156103a457600080fd5b506103b86103b336600461242c565b610a42565b604051610268919061247e565b3480156103d157600080fd5b506102d66103e0366004612495565b610aab565b3480156103f157600080fd5b503061029e565b34801561040457600080fd5b506104186104133660046124e5565b610af9565b6040516102689190612518565b34801561043157600080fd5b5061045c6104403660046123f4565b63ffffffff919091166000908152600160205260409020541490565b6040519015158152602001610268565b34801561047857600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b506102d66104bb36600461252b565b610b9e565b3480156104cc57600080fd5b506102d6610c20565b3480156104e157600080fd5b506104f86104f03660046123f4565b600092915050565b60405167ffffffffffffffff9091168152602001610268565b34801561051d57600080fd5b5061045c61052c366004612548565b610c34565b34801561053d57600080fd5b5060405160068152602001610268565b34801561055957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661029e565b34801561058457600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610268565b3480156105c657600080fd5b506102d66105d53660046125af565b610c56565b3480156105e657600080fd5b50600161045c565b3480156105fa57600080fd5b5060025461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062757600080fd5b506102d661063636600461263c565b610cac565b34801561064757600080fd5b506105ac61065636600461267e565b60016020526000908152604090205481565b34801561067457600080fd5b50610418610683366004612699565b610cc6565b6102d661069636600461263c565b610e87565b6106ae6106a93660046126fa565b611055565b604051610268929190612786565b3480156106c857600080fd5b506102d66106d736600461252b565b611089565b6102d66106ea366004612338565b611135565b3480156106fb57600080fd5b506102d661070a36600461252b565b61117d565b34801561071b57600080fd5b506102d661072a36600461252b565b6111f8565b34801561073b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061029e565b34801561076e57600080fd5b5061045c61077d3660046127d9565b61125c565b604080518082019091526000808252602082015260606107b5604051806040016040528060008152602001600081525090565b6000803073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082791906127f5565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190612812565b604080518082018252848152602080820184905282516000808252918101909352909750919250906108ea565b6040805180820190915260008152606060208201528152602001906001900390816108c25790505b50935060008061090f604089013560608a013561090a60208c018c61267e565b611292565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109a3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109bd906109b8908a61267e565b6112e7565b14610a14576109cf602088018861267e565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161099a565b610a238787878787878761133c565b50505050505050565b610a346114d6565b610a3e8282611529565b5050565b60408051808201909152600080825260208201526000610a726040850135606086013561090a602088018861267e565b915050600080610a82868461157e565b9092509050610a9f610a97602088018861267e565b8383886116d4565b93505050505b92915050565b6000610ab88484846117c2565b90507faa59a58ddf85cd3886905c545ad095a38aa8b22ddc6e9565293f7894b9a805c681604051610aeb91815260200190565b60405180910390a150505050565b600360209081526000928352604080842090915290825290208054610b1d9061285a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b499061285a565b8015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b505050505081565b610ba66114d6565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610c286114d6565b610c32600061180f565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b600080610c6586868686611884565b60408051838152602081018390529294509092507f98ff8e8df1b96c632e1c76d797690d1e8bc7379f4e46dd61f3105b952d405fb7910160405180910390a1505050505050565b610cb46114d6565b610a3e610cc18284612988565b6118e2565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610cfa9061285a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d269061285a565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b505050505090508051600003610dc35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610c4e9350505050565b6000839003610dd3579050610c4e565b60028310610e5157610e1a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119e992505050565b80610e288460028188612ab4565b604051602001610e3a93929190612ade565b604051602081830303815290604052915050610c4e565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a929190612b4f565b60005b81811015610f905736838383818110610ea557610ea5612b63565b9050602002810190610eb79190612b92565b9050610eea610ec9602083018361267e565b602083013563ffffffff919091166000908152600160205260409020541490565b610ef45750610f88565b3063d045a0dc60c08301358360a0810135610f13610100830183612bd0565b610f24610100890160e08a0161252b565b610f326101208a018a612bd0565b6040518963ffffffff1660e01b8152600401610f549796959493929190612c4b565b6000604051808303818588803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505050505b600101610e8a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526110229190810190612cdf565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161099a9190612518565b61105d6120fd565b604080518082019091526000808252602082015261107c858585611a2e565b915091505b935093915050565b6110916114d6565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b5050505050565b33301461116e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2387878787878787610a14565b6111856114d6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610c15565b6112006114d6565b73ffffffffffffffffffffffffffffffffffffffff8116611250576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161099a565b6112598161180f565b50565b6000602082018035906001908390611274908661267e565b63ffffffff1681526020810191909152604001600020541492915050565b60008061129e85611b29565b915081905083811015611081576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161099a565b63ffffffff811660009081526001602052604081205480610aa5576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161099a565b600061134e61134b8787611b60565b90565b9050600061137a826113686113638a8a611b78565b611b9b565b61137560208d018d61267e565b6117c2565b905060288611156114675760006113b761139a60608c0160408d01612d4d565b6113a760208d018d61267e565b846113b28c8c611bd1565b611c1c565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114339086908d906000908790600401612d6a565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6114ad60208d018d61267e565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c32576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161099a565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115db856020013561159486611c4e565b6115a160a0890189612bd0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c7a92505050565b90935090506000816115ee5760016115f1565b60025b9050611611611603602088018861267e565b8261068360808a018a612bd0565b60045490935073ffffffffffffffffffffffffffffffffffffffff1680156116ca576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb906116879088908890600401612db3565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612dd8565b505b5050509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611744896112e7565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611779929190612df5565b6040805180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190612eca565b95945050505050565b600061180573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611d0c565b50815b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080611892858585611292565b90925090506118d973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016873085611d92565b94509492505050565b60005b81518110156119b95761191482828151811061190357611903612b63565b6020026020010151604001516119e9565b81818151811061192657611926612b63565b6020026020010151604001516003600084848151811061194857611948612b63565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061198257611982612b63565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119b09190612f2d565b506001016118e5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610c159190613046565b600281015161ffff8116600314610a3e57816040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a9190612518565b611a366120fd565b6040805180820190915260008082526020820152600080611a6d33604089013560608a0135611a6860208c018c61267e565b611884565b91509150600080611a7e898461157e565b9092509050611aaa611a9360208b018b61267e565b8383611aa4368d90038d018d6130f4565b8b611dde565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611af8908d018d61267e565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b568184613127565b610aa59190613162565b6000611b6f6020828486612ab4565b611808916131a0565b6000611b88602860208486612ab4565b611b91916131dc565b60c01c9392505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613162565b6060611be08260288186612ab4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611c359493929190613242565b6040516020818303038152906040529050949350505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000083613127565b8051606090151580611cdb578484604051602001611cc792919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611d02565b84843385604051602001611cf294939291906132c0565b6040516020818303038152906040525b9150935093915050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611d8d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ef6565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611dd89186918216906323b872dd90608401611d46565b50505050565b611de66120fd565b6000611df58460000151611f9a565b602085015190915015611e0f57611e0f8460200151611fdb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611e6c8c6112e7565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ea8929190612df5565b60806040518083038185885af1158015611ec6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eeb9190613319565b979650505050505050565b600080602060008451602086016000885af180611f19576040513d6000823e3d81fd5b50506000513d91508115611f31578060011415611f4b565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611dd8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161099a565b6000813414611fd7576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161099a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206c91906127f5565b905073ffffffffffffffffffffffffffffffffffffffff81166120bb576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a3e73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611d92565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612140604051806040016040528060008152602001600081525090565b905290565b600060e0828403121561215757600080fd5b50919050565b60006020828403121561216f57600080fd5b813567ffffffffffffffff81111561218657600080fd5b610c4e84828501612145565b60005b838110156121ad578181015183820152602001612195565b50506000910152565b600081518084526121ce816020860160208601612192565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b8281101561229f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40878603018452815180518652602081015190506040602087015261228960408701826121b6565b9550506020938401939190910190600101612239565b5050855160608601525050602084015160808401529050610c4e565b60006060828403121561215757600080fd5b60008083601f8401126122df57600080fd5b50813567ffffffffffffffff8111156122f757600080fd5b60208301915083602082850101111561230f57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125957600080fd5b600080600080600080600060e0888a03121561235357600080fd5b61235d89896122bb565b965060608801359550608088013567ffffffffffffffff81111561238057600080fd5b61238c8a828b016122cd565b90965094505060a08801356123a081612316565b925060c088013567ffffffffffffffff8111156123bc57600080fd5b6123c88a828b016122cd565b989b979a50959850939692959293505050565b803563ffffffff811681146123ef57600080fd5b919050565b6000806040838503121561240757600080fd5b612410836123db565b946020939093013593505050565b801515811461125957600080fd5b6000806040838503121561243f57600080fd5b823567ffffffffffffffff81111561245657600080fd5b61246285828601612145565b92505060208301356124738161241e565b809150509250929050565b815181526020808301519082015260408101610aa5565b6000806000606084860312156124aa57600080fd5b83356124b581612316565b9250602084013591506124ca604085016123db565b90509250925092565b803561ffff811681146123ef57600080fd5b600080604083850312156124f857600080fd5b612501836123db565b915061250f602084016124d3565b90509250929050565b60208152600061180860208301846121b6565b60006020828403121561253d57600080fd5b813561180881612316565b60008060008060a0858703121561255e57600080fd5b61256886866122bb565b9350606085013567ffffffffffffffff81111561258457600080fd5b612590878288016122cd565b90945092505060808501356125a481612316565b939692955090935050565b600080600080608085870312156125c557600080fd5b84356125d081612316565b935060208501359250604085013591506125ec606086016123db565b905092959194509250565b60008083601f84011261260957600080fd5b50813567ffffffffffffffff81111561262157600080fd5b6020830191508360208260051b850101111561230f57600080fd5b6000806020838503121561264f57600080fd5b823567ffffffffffffffff81111561266657600080fd5b612672858286016125f7565b90969095509350505050565b60006020828403121561269057600080fd5b611808826123db565b600080600080606085870312156126af57600080fd5b6126b8856123db565b93506126c6602086016124d3565b9250604085013567ffffffffffffffff8111156126e257600080fd5b6126ee878288016122cd565b95989497509550505050565b6000806000838503608081121561271057600080fd5b843567ffffffffffffffff81111561272757600080fd5b61273387828801612145565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561276657600080fd5b50602084019150606084013561277b81612316565b809150509250925092565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516127c2604084018280518252602090810151910152565b5082516080830152602083015160a0830152611808565b6000606082840312156127eb57600080fd5b61180883836122bb565b60006020828403121561280757600080fd5b815161180881612316565b60006020828403121561282457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061286e57607f821691505b602082108103612157577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6040516060810167ffffffffffffffff811182821017156128ca576128ca61282b565b60405290565b6040805190810167ffffffffffffffff811182821017156128ca576128ca61282b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293a5761293a61282b565b604052919050565b600067ffffffffffffffff82111561295c5761295c61282b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff8311156129a2576129a261282b565b8260051b6129b2602082016128f3565b848152908301906020810190368311156129cb57600080fd5b845b83811015612aaa57803567ffffffffffffffff8111156129ec57600080fd5b860160603682900312156129ff57600080fd5b612a076128a7565b612a10826123db565b8152612a1e602083016124d3565b6020820152604082013567ffffffffffffffff811115612a3d57600080fd5b919091019036601f830112612a5157600080fd5b8135612a64612a5f82612942565b6128f3565b818152366020838601011115612a7957600080fd5b81602085016020830137600060208383010152806040840152505080855250506020830192506020810190506129cd565b5095945050505050565b60008085851115612ac457600080fd5b83861115612ad157600080fd5b5050820193919092039150565b60008451612af0818460208901612192565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000610c4e602083018486612b06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612bc657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c0557600080fd5b83018035915067ffffffffffffffff821115612c2057600080fd5b60200191503681900382131561230f57600080fd5b67ffffffffffffffff8116811461125957600080fd5b63ffffffff612c59896123db565b1681526020888101359082015260006040890135612c7681612c35565b67ffffffffffffffff811660408401525087606083015260e06080830152612ca260e083018789612b06565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612cd1818587612b06565b9a9950505050505050505050565b600060208284031215612cf157600080fd5b815167ffffffffffffffff811115612d0857600080fd5b8201601f81018413612d1957600080fd5b8051612d27612a5f82612942565b818152856020838501011115612d3c57600080fd5b6117b9826020830160208601612192565b600060208284031215612d5f57600080fd5b813561180881612c35565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612da960808301846121b6565b9695505050505050565b604081526000612dc660408301856121b6565b82810360208401526117b981856121b6565b600060208284031215612dea57600080fd5b81516118088161241e565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e2b60e08401826121b6565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612e6682826121b6565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612eab57600080fd5b612eb36128d0565b825181526020928301519281019290925250919050565b600060408284031215612edc57600080fd5b6118088383612e99565b601f821115611d8d57806000526020600020601f840160051c81016020851015612f0d5750805b601f840160051c820191505b8181101561112e5760008155600101612f19565b815167ffffffffffffffff811115612f4757612f4761282b565b612f5b81612f55845461285a565b84612ee6565b6020601f821160018114612fad5760008315612f775750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561112e565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612ffb5787850151825560209485019460019092019101612fdb565b508482101561303757868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156130e8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff602082015116602087015260408101519050606060408701526130d260608701826121b6565b955050602093840193919091019060010161306e565b50929695505050505050565b6000604082840312801561310757600080fd5b506131106128d0565b823581526020928301359281019290925250919050565b60008261315d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80356020831015610aa5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff000000000000000000000000000000000000000000000000811690600884101561323b577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516132b081602c850160208701612192565b91909101602c0195945050505050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251613309816048850160208701612192565b9190910160480195945050505050565b6000608082840312801561332c57600080fd5b506133356128a7565b82518152602083015161334781612c35565b60208201526133598460408501612e99565b6040820152939250505056fea2646970667358221220d9f4ddd6085a1ae458344ffe3bd9c92769de1f3a74bcad268227c0dacf1fab8664736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106102345760003560e01c806382413eac11610138578063bc70b354116100b0578063d045a0dc1161007f578063f2fde38b11610064578063f2fde38b1461070f578063fc0c546a1461072f578063ff7bd03d1461076257600080fd5b8063d045a0dc146106dc578063d4243885146106ef57600080fd5b8063bc70b35414610668578063bd815db014610688578063c7c7f5b31461069b578063ca5eb5e1146106bc57600080fd5b806398ae8aab11610107578063b731ea0a116100ec578063b731ea0a146105ee578063b98bd0701461061b578063bb0b6a531461063b57600080fd5b806398ae8aab146105ba5780639f68b964146105da57600080fd5b806382413eac14610511578063857749b0146105315780638da5cb5b1461054d578063963efcaa1461057857600080fd5b80633b6f743b116101cb5780635a0dfe4d1161019a5780636fc1b31e1161017f5780636fc1b31e146104a0578063715018a6146104c05780637d25a05e146104d557600080fd5b80635a0dfe4d146104255780635e280f111461046c57600080fd5b80633b6f743b146103985780634dba701b146103c557806352ae2879146103e55780635535d461146103f857600080fd5b8063156a0d0f11610207578063156a0d0f1461030057806317442b70146103415780631f5e1334146103635780633400288b1461037857600080fd5b80630d35b41514610239578063111ecdad1461027157806313137d65146102c3578063134d4f25146102d8575b600080fd5b34801561024557600080fd5b5061025961025436600461215d565b610782565b60405161026893929190612200565b60405180910390f35b34801561027d57600080fd5b5060045461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b6102d66102d1366004612338565b61092d565b005b3480156102e457600080fd5b506102ed600281565b60405161ffff9091168152602001610268565b34801561030c57600080fd5b50604080517f02e49c2c0000000000000000000000000000000000000000000000000000000081526001602082015201610268565b34801561034d57600080fd5b5060408051600181526002602082015201610268565b34801561036f57600080fd5b506102ed600181565b34801561038457600080fd5b506102d66103933660046123f4565b610a2c565b3480156103a457600080fd5b506103b86103b336600461242c565b610a42565b604051610268919061247e565b3480156103d157600080fd5b506102d66103e0366004612495565b610aab565b3480156103f157600080fd5b503061029e565b34801561040457600080fd5b506104186104133660046124e5565b610af9565b6040516102689190612518565b34801561043157600080fd5b5061045c6104403660046123f4565b63ffffffff919091166000908152600160205260409020541490565b6040519015158152602001610268565b34801561047857600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b506102d66104bb36600461252b565b610b9e565b3480156104cc57600080fd5b506102d6610c20565b3480156104e157600080fd5b506104f86104f03660046123f4565b600092915050565b60405167ffffffffffffffff9091168152602001610268565b34801561051d57600080fd5b5061045c61052c366004612548565b610c34565b34801561053d57600080fd5b5060405160068152602001610268565b34801561055957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661029e565b34801561058457600080fd5b506105ac7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610268565b3480156105c657600080fd5b506102d66105d53660046125af565b610c56565b3480156105e657600080fd5b50600161045c565b3480156105fa57600080fd5b5060025461029e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062757600080fd5b506102d661063636600461263c565b610cac565b34801561064757600080fd5b506105ac61065636600461267e565b60016020526000908152604090205481565b34801561067457600080fd5b50610418610683366004612699565b610cc6565b6102d661069636600461263c565b610e87565b6106ae6106a93660046126fa565b611055565b604051610268929190612786565b3480156106c857600080fd5b506102d66106d736600461252b565b611089565b6102d66106ea366004612338565b611135565b3480156106fb57600080fd5b506102d661070a36600461252b565b61117d565b34801561071b57600080fd5b506102d661072a36600461252b565b6111f8565b34801561073b57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061029e565b34801561076e57600080fd5b5061045c61077d3660046127d9565b61125c565b604080518082019091526000808252602082015260606107b5604051806040016040528060008152602001600081525090565b6000803073ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082791906127f5565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190612812565b604080518082018252848152602080820184905282516000808252918101909352909750919250906108ea565b6040805180820190915260008152606060208201528152602001906001900390816108c25790505b50935060008061090f604089013560608a013561090a60208c018c61267e565b611292565b60408051808201909152918252602082015296989597505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146109a3576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906109bd906109b8908a61267e565b6112e7565b14610a14576109cf602088018861267e565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526020880135602482015260440161099a565b610a238787878787878761133c565b50505050505050565b610a346114d6565b610a3e8282611529565b5050565b60408051808201909152600080825260208201526000610a726040850135606086013561090a602088018861267e565b915050600080610a82868461157e565b9092509050610a9f610a97602088018861267e565b8383886116d4565b93505050505b92915050565b6000610ab88484846117c2565b90507faa59a58ddf85cd3886905c545ad095a38aa8b22ddc6e9565293f7894b9a805c681604051610aeb91815260200190565b60405180910390a150505050565b600360209081526000928352604080842090915290825290208054610b1d9061285a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b499061285a565b8015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b505050505081565b610ba66114d6565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610c286114d6565b610c32600061180f565b565b73ffffffffffffffffffffffffffffffffffffffff811630145b949350505050565b600080610c6586868686611884565b60408051838152602081018390529294509092507f98ff8e8df1b96c632e1c76d797690d1e8bc7379f4e46dd61f3105b952d405fb7910160405180910390a1505050505050565b610cb46114d6565b610a3e610cc18284612988565b6118e2565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610cfa9061285a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d269061285a565b8015610d735780601f10610d4857610100808354040283529160200191610d73565b820191906000526020600020905b815481529060010190602001808311610d5657829003601f168201915b505050505090508051600003610dc35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610c4e9350505050565b6000839003610dd3579050610c4e565b60028310610e5157610e1a84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119e992505050565b80610e288460028188612ab4565b604051602001610e3a93929190612ade565b604051602081830303815290604052915050610c4e565b83836040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a929190612b4f565b60005b81811015610f905736838383818110610ea557610ea5612b63565b9050602002810190610eb79190612b92565b9050610eea610ec9602083018361267e565b602083013563ffffffff919091166000908152600160205260409020541490565b610ef45750610f88565b3063d045a0dc60c08301358360a0810135610f13610100830183612bd0565b610f24610100890160e08a0161252b565b610f326101208a018a612bd0565b6040518963ffffffff1660e01b8152600401610f549796959493929190612c4b565b6000604051808303818588803b158015610f6d57600080fd5b505af1158015610f81573d6000803e3d6000fd5b5050505050505b600101610e8a565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610fdc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526110229190810190612cdf565b6040517f8351eea700000000000000000000000000000000000000000000000000000000815260040161099a9190612518565b61105d6120fd565b604080518082019091526000808252602082015261107c858585611a2e565b915091505b935093915050565b6110916114d6565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111a57600080fd5b505af115801561112e573d6000803e3d6000fd5b5050505050565b33301461116e576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a2387878787878787610a14565b6111856114d6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610c15565b6112006114d6565b73ffffffffffffffffffffffffffffffffffffffff8116611250576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161099a565b6112598161180f565b50565b6000602082018035906001908390611274908661267e565b63ffffffff1681526020810191909152604001600020541492915050565b60008061129e85611b29565b915081905083811015611081576040517f71c4efed000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161099a565b63ffffffff811660009081526001602052604081205480610aa5576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff8416600482015260240161099a565b600061134e61134b8787611b60565b90565b9050600061137a826113686113638a8a611b78565b611b9b565b61137560208d018d61267e565b6117c2565b905060288611156114675760006113b761139a60608c0160408d01612d4d565b6113a760208d018d61267e565b846113b28c8c611bd1565b611c1c565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114339086908d906000908790600401612d6a565b600060405180830381600087803b15801561144d57600080fd5b505af1158015611461573d6000803e3d6000fd5b50505050505b73ffffffffffffffffffffffffffffffffffffffff8216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6114ad60208d018d61267e565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c32576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161099a565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115db856020013561159486611c4e565b6115a160a0890189612bd0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c7a92505050565b90935090506000816115ee5760016115f1565b60025b9050611611611603602088018861267e565b8261068360808a018a612bd0565b60045490935073ffffffffffffffffffffffffffffffffffffffff1680156116ca576040517f043a78eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063043a78eb906116879088908890600401612db3565b602060405180830381865afa1580156116a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c89190612dd8565b505b5050509250929050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611744896112e7565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611779929190612df5565b6040805180830381865afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190612eca565b95945050505050565b600061180573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168585611d0c565b50815b9392505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080611892858585611292565b90925090506118d973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016873085611d92565b94509492505050565b60005b81518110156119b95761191482828151811061190357611903612b63565b6020026020010151604001516119e9565b81818151811061192657611926612b63565b6020026020010151604001516003600084848151811061194857611948612b63565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061198257611982612b63565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119b09190612f2d565b506001016118e5565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610c159190613046565b600281015161ffff8116600314610a3e57816040517f9a6d49cd00000000000000000000000000000000000000000000000000000000815260040161099a9190612518565b611a366120fd565b6040805180820190915260008082526020820152600080611a6d33604089013560608a0135611a6860208c018c61267e565b611884565b91509150600080611a7e898461157e565b9092509050611aaa611a9360208b018b61267e565b8383611aa4368d90038d018d6130f4565b8b611dde565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611af8908d018d61267e565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b568184613127565b610aa59190613162565b6000611b6f6020828486612ab4565b611808916131a0565b6000611b88602860208486612ab4565b611b91916131dc565b60c01c9392505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613162565b6060611be08260288186612ab4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611c359493929190613242565b6040516020818303038152906040529050949350505050565b6000610aa57f000000000000000000000000000000000000000000000000000000000000000083613127565b8051606090151580611cdb578484604051602001611cc792919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611d02565b84843385604051602001611cf294939291906132c0565b6040516020818303038152906040525b9150935093915050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052611d8d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611ef6565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611dd89186918216906323b872dd90608401611d46565b50505050565b611de66120fd565b6000611df58460000151611f9a565b602085015190915015611e0f57611e0f8460200151611fdb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611e6c8c6112e7565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ea8929190612df5565b60806040518083038185885af1158015611ec6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eeb9190613319565b979650505050505050565b600080602060008451602086016000885af180611f19576040513d6000823e3d81fd5b50506000513d91508115611f31578060011415611f4b565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611dd8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161099a565b6000813414611fd7576040517f9f70412000000000000000000000000000000000000000000000000000000000815234600482015260240161099a565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206c91906127f5565b905073ffffffffffffffffffffffffffffffffffffffff81166120bb576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a3e73ffffffffffffffffffffffffffffffffffffffff8216337f000000000000000000000000000000000000000000000000000000000000000085611d92565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612140604051806040016040528060008152602001600081525090565b905290565b600060e0828403121561215757600080fd5b50919050565b60006020828403121561216f57600080fd5b813567ffffffffffffffff81111561218657600080fd5b610c4e84828501612145565b60005b838110156121ad578181015183820152602001612195565b50506000910152565b600081518084526121ce816020860160208601612192565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b8281101561229f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40878603018452815180518652602081015190506040602087015261228960408701826121b6565b9550506020938401939190910190600101612239565b5050855160608601525050602084015160808401529050610c4e565b60006060828403121561215757600080fd5b60008083601f8401126122df57600080fd5b50813567ffffffffffffffff8111156122f757600080fd5b60208301915083602082850101111561230f57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461125957600080fd5b600080600080600080600060e0888a03121561235357600080fd5b61235d89896122bb565b965060608801359550608088013567ffffffffffffffff81111561238057600080fd5b61238c8a828b016122cd565b90965094505060a08801356123a081612316565b925060c088013567ffffffffffffffff8111156123bc57600080fd5b6123c88a828b016122cd565b989b979a50959850939692959293505050565b803563ffffffff811681146123ef57600080fd5b919050565b6000806040838503121561240757600080fd5b612410836123db565b946020939093013593505050565b801515811461125957600080fd5b6000806040838503121561243f57600080fd5b823567ffffffffffffffff81111561245657600080fd5b61246285828601612145565b92505060208301356124738161241e565b809150509250929050565b815181526020808301519082015260408101610aa5565b6000806000606084860312156124aa57600080fd5b83356124b581612316565b9250602084013591506124ca604085016123db565b90509250925092565b803561ffff811681146123ef57600080fd5b600080604083850312156124f857600080fd5b612501836123db565b915061250f602084016124d3565b90509250929050565b60208152600061180860208301846121b6565b60006020828403121561253d57600080fd5b813561180881612316565b60008060008060a0858703121561255e57600080fd5b61256886866122bb565b9350606085013567ffffffffffffffff81111561258457600080fd5b612590878288016122cd565b90945092505060808501356125a481612316565b939692955090935050565b600080600080608085870312156125c557600080fd5b84356125d081612316565b935060208501359250604085013591506125ec606086016123db565b905092959194509250565b60008083601f84011261260957600080fd5b50813567ffffffffffffffff81111561262157600080fd5b6020830191508360208260051b850101111561230f57600080fd5b6000806020838503121561264f57600080fd5b823567ffffffffffffffff81111561266657600080fd5b612672858286016125f7565b90969095509350505050565b60006020828403121561269057600080fd5b611808826123db565b600080600080606085870312156126af57600080fd5b6126b8856123db565b93506126c6602086016124d3565b9250604085013567ffffffffffffffff8111156126e257600080fd5b6126ee878288016122cd565b95989497509550505050565b6000806000838503608081121561271057600080fd5b843567ffffffffffffffff81111561272757600080fd5b61273387828801612145565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561276657600080fd5b50602084019150606084013561277b81612316565b809150509250925092565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516127c2604084018280518252602090810151910152565b5082516080830152602083015160a0830152611808565b6000606082840312156127eb57600080fd5b61180883836122bb565b60006020828403121561280757600080fd5b815161180881612316565b60006020828403121561282457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600181811c9082168061286e57607f821691505b602082108103612157577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6040516060810167ffffffffffffffff811182821017156128ca576128ca61282b565b60405290565b6040805190810167ffffffffffffffff811182821017156128ca576128ca61282b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293a5761293a61282b565b604052919050565b600067ffffffffffffffff82111561295c5761295c61282b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600067ffffffffffffffff8311156129a2576129a261282b565b8260051b6129b2602082016128f3565b848152908301906020810190368311156129cb57600080fd5b845b83811015612aaa57803567ffffffffffffffff8111156129ec57600080fd5b860160603682900312156129ff57600080fd5b612a076128a7565b612a10826123db565b8152612a1e602083016124d3565b6020820152604082013567ffffffffffffffff811115612a3d57600080fd5b919091019036601f830112612a5157600080fd5b8135612a64612a5f82612942565b6128f3565b818152366020838601011115612a7957600080fd5b81602085016020830137600060208383010152806040840152505080855250506020830192506020810190506129cd565b5095945050505050565b60008085851115612ac457600080fd5b83861115612ad157600080fd5b5050820193919092039150565b60008451612af0818460208901612192565b8201838582376000930192835250909392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000610c4e602083018486612b06565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612bc657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c0557600080fd5b83018035915067ffffffffffffffff821115612c2057600080fd5b60200191503681900382131561230f57600080fd5b67ffffffffffffffff8116811461125957600080fd5b63ffffffff612c59896123db565b1681526020888101359082015260006040890135612c7681612c35565b67ffffffffffffffff811660408401525087606083015260e06080830152612ca260e083018789612b06565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612cd1818587612b06565b9a9950505050505050505050565b600060208284031215612cf157600080fd5b815167ffffffffffffffff811115612d0857600080fd5b8201601f81018413612d1957600080fd5b8051612d27612a5f82612942565b818152856020838501011115612d3c57600080fd5b6117b9826020830160208601612192565b600060208284031215612d5f57600080fd5b813561180881612c35565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015261ffff83166040820152608060608201526000612da960808301846121b6565b9695505050505050565b604081526000612dc660408301856121b6565b82810360208401526117b981856121b6565b600060208284031215612dea57600080fd5b81516118088161241e565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e2b60e08401826121b6565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612e6682826121b6565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612eab57600080fd5b612eb36128d0565b825181526020928301519281019290925250919050565b600060408284031215612edc57600080fd5b6118088383612e99565b601f821115611d8d57806000526020600020601f840160051c81016020851015612f0d5750805b601f840160051c820191505b8181101561112e5760008155600101612f19565b815167ffffffffffffffff811115612f4757612f4761282b565b612f5b81612f55845461285a565b84612ee6565b6020601f821160018114612fad5760008315612f775750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17845561112e565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015612ffb5787850151825560209485019460019092019101612fdb565b508482101561303757868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156130e8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815163ffffffff815116865261ffff602082015116602087015260408101519050606060408701526130d260608701826121b6565b955050602093840193919091019060010161306e565b50929695505050505050565b6000604082840312801561310757600080fd5b506131106128d0565b823581526020928301359281019290925250919050565b60008261315d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610aa5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80356020831015610aa5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80357fffffffffffffffff000000000000000000000000000000000000000000000000811690600884101561323b577fffffffffffffffff000000000000000000000000000000000000000000000000808560080360031b1b82161691505b5092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516132b081602c850160208701612192565b91909101602c0195945050505050565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16602082015282602882015260008251613309816048850160208701612192565b9190910160480195945050505050565b6000608082840312801561332c57600080fd5b506133356128a7565b82518152602083015161334781612c35565b60208201526133598460408501612e99565b6040820152939250505056fea2646970667358221220d9f4ddd6085a1ae458344ffe3bd9c92769de1f3a74bcad268227c0dacf1fab8664736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
