{
  "_format": "hh-sol-artifact-1",
  "contractName": "RiskStewardReceiver",
  "sourceName": "contracts/RiskSteward/RiskStewardReceiver.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "riskOracle_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "endpoint_",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "layerZeroLzEid_",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ConfigNotActive",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ConfigStatusUnchanged",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ExecutorStatusUnchanged",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDebounce",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDelegate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEndpointCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidLayerZeroEid",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidLzSendCaller",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "optionType",
          "type": "uint16"
        }
      ],
      "name": "InvalidOptionType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidRegisteredUpdate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTimelock",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateToResend",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidUpdateType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LzTokenUnavailable",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        }
      ],
      "name": "NoPeer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotAnExecutor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "msgValue",
          "type": "uint256"
        }
      ],
      "name": "NotEnoughNative",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "eid",
          "type": "uint32"
        },
        {
          "internalType": "bytes32",
          "name": "sender",
          "type": "bytes32"
        }
      ],
      "name": "OnlyPeer",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PauseStatusUnchanged",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "PausedError",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "RegisteredUpdateTypeExist",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RenounceOwnershipNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TransferFailed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnsupportedUpdateType",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateAlreadyResolved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateIsExpired",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateNotFound",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateNotUnlocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateTooFrequent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UpdateWillExpireBeforeUnlock",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "updateTypeHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "previousActive",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "name": "ConfigActiveUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "previousApproved",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ExecutorStatusUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bool",
          "name": "previousPaused",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "paused",
          "type": "bool"
        }
      ],
      "name": "PauseStatusUpdated",
      "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": true,
          "internalType": "bytes32",
          "name": "updateTypeHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousRiskSteward",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "riskSteward",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousDebounce",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "debounce",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousTimelock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "timelock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "previousActive",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "name": "RiskParameterConfigUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "SweepNative",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "UpdateExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "UpdateExpired",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "unlockTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "UpdateRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "UpdateRejected",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "destLzEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "UpdateResentToDestination",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "destLzEid",
          "type": "uint32"
        },
        {
          "indexed": true,
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "UpdateSentToDestination",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "LAYER_ZERO_EID",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RISK_ORACLE",
      "outputs": [
        {
          "internalType": "contract IRiskOracle",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "UPDATE_EXPIRATION_TIME",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endpoint",
      "outputs": [
        {
          "internalType": "contract ILayerZeroEndpointV2",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "executeRegisteredUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "comptroller",
          "type": "address"
        }
      ],
      "name": "getExecutableUpdates",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "executableUpdates",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "getLastProcessedUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "getLastRegisteredUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        }
      ],
      "name": "getRiskParameterConfig",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "active",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "debounce",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "timelock",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "riskSteward",
              "type": "address"
            }
          ],
          "internalType": "struct IRiskStewardReceiver.RiskParamConfig",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "acm_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "delegate_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "isUpdateExecutable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "lastProcessedUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "market",
          "type": "address"
        }
      ],
      "name": "lastRegisteredUpdate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "dstEid",
          "type": "uint32"
        },
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "update",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "options",
          "type": "bytes"
        },
        {
          "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": "lzSend",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oAppVersion",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "senderVersion",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "receiverVersion",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_eid",
          "type": "uint32"
        }
      ],
      "name": "peers",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "processUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "referenceId",
              "type": "string"
            },
            {
              "internalType": "uint256",
              "name": "updateId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "market",
              "type": "address"
            },
            {
              "internalType": "string",
              "name": "updateType",
              "type": "string"
            },
            {
              "internalType": "bytes32",
              "name": "updateTypeKey",
              "type": "bytes32"
            },
            {
              "internalType": "bytes",
              "name": "newValue",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "previousValue",
              "type": "bytes"
            },
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "publisher",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "poolId",
              "type": "uint96"
            },
            {
              "internalType": "uint32",
              "name": "destLzEid",
              "type": "uint32"
            },
            {
              "internalType": "bytes",
              "name": "additionalData",
              "type": "bytes"
            }
          ],
          "internalType": "struct RiskParameterUpdate",
          "name": "update",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "options",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "payInLzToken",
          "type": "bool"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "nativeFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lzTokenFee",
              "type": "uint256"
            }
          ],
          "internalType": "struct MessagingFee",
          "name": "fee",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "rejectUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "options",
          "type": "bytes"
        }
      ],
      "name": "resendRemoteUpdate",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "riskParameterConfigs",
      "outputs": [
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "debounce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timelock",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "riskSteward",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "active",
          "type": "bool"
        }
      ],
      "name": "setConfigActive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_delegate",
          "type": "address"
        }
      ],
      "name": "setDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "paused_",
          "type": "bool"
        }
      ],
      "name": "setPaused",
      "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": "string",
          "name": "updateType",
          "type": "string"
        },
        {
          "internalType": "address",
          "name": "riskSteward",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "debounce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "timelock",
          "type": "uint256"
        }
      ],
      "name": "setRiskParameterConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setWhitelistedExecutor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "sweepNative",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        }
      ],
      "name": "updates",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "updateId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "unlockTime",
          "type": "uint256"
        },
        {
          "internalType": "enum IRiskStewardReceiver.UpdateStatus",
          "name": "status",
          "type": "uint8"
        },
        {
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "executedAt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "whitelistedExecutors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60e060405234801561001057600080fd5b50604051614e0b380380614e0b83398101604081905261002f916101a0565b6001600160a01b03821660805261004461009a565b61004d8361015a565b6100568261015a565b8063ffffffff1660000361007d576040516349961c7360e11b815260040160405180910390fd5b6001600160a01b0390921660c0525063ffffffff1660a0526101f0565b600054610100900460ff16156101065760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610158576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b038116610181576040516342bcdf7f60e11b815260040160405180910390fd5b50565b80516001600160a01b038116811461019b57600080fd5b919050565b6000806000606084860312156101b557600080fd5b6101be84610184565b92506101cc60208501610184565b9150604084015163ffffffff811681146101e557600080fd5b809150509250925092565b60805160a05160c051614b986102736000396000818161060c01528181611033015281816113f301528181611d81015281816122b001528181612576015261272601526000818161048301526110d801526000818161053e01528181611a2f01528181611e6b0152818161217a01528181612ff601526130c80152614b986000f3fe6080604052600436106102895760003560e01c8063715018a611610153578063bb0b6a53116100cb578063f2fde38b1161007f578063f75875ad11610064578063f75875ad14610890578063f8ce6ac2146108b0578063fe2b3502146108d057600080fd5b8063f2fde38b14610843578063f63106e41461086357600080fd5b8063c3e10deb116100b0578063c3e10deb146107e5578063ca5eb5e114610805578063e30c39781461082557600080fd5b8063bb0b6a5314610773578063c2a23c84146107c557600080fd5b80638da5cb5b11610122578063af9e0fd311610107578063af9e0fd314610674578063b4a0bdf3146106ee578063b4c2f7271461070c57600080fd5b80638da5cb5b14610641578063ab803a761461065f57600080fd5b8063715018a6146105d057806379ba5097146105e55780637dd8f522146105fa57806385a7602f1461062e57600080fd5b80633aed7f3111610201578063595bd377116101b55780635e280f111161019a5780635e280f111461052c57806362656e631461057857806365bd691c1461059857600080fd5b8063595bd377146104f25780635c975abb1461051257600080fd5b8063485cc955116101e6578063485cc955146104515780634c21344914610471578063513602e8146104ba57600080fd5b80633aed7f3114610411578063438653fe1461043157600080fd5b80631d1c362011610258578063282071411161023d578063282071411461036357806333bde2ca146103c15780633400288b146103f157600080fd5b80631d1c362014610311578063233dd0da1461033e57600080fd5b806305687c19146102955780630e32cb86146102aa57806316c38b3c146102ca57806317442b70146102ea57600080fd5b3661029057005b600080fd5b6102a86102a3366004613cf6565b610900565b005b3480156102b657600080fd5b506102a86102c5366004613dcd565b610973565b3480156102d657600080fd5b506102a86102e5366004613df8565b610987565b3480156102f657600080fd5b50604080516001815260006020820152015b60405180910390f35b34801561031d57600080fd5b5061033161032c366004613e15565b610a5f565b6040516103089190613e8d565b34801561034a57600080fd5b506103556202a30081565b604051908152602001610308565b34801561036f57600080fd5b5061038361037e366004613eed565b610ab1565b604051610308919081511515815260208083015190820152604080830151908201526060918201516001600160a01b03169181019190915260800190565b3480156103cd57600080fd5b506103e16103dc366004613f2f565b610b44565b6040519015158152602001610308565b3480156103fd57600080fd5b506102a861040c366004613f48565b610b4f565b34801561041d57600080fd5b506102a861042c366004613f74565b610bce565b34801561043d57600080fd5b506102a861044c366004613fad565b610cb7565b34801561045d57600080fd5b506102a861046c366004613ff9565b610e16565b34801561047d57600080fd5b506104a57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610308565b3480156104c657600080fd5b506103556104d5366004614027565b60cc60209081526000928352604080842090915290825290205481565b3480156104fe57600080fd5b5061035561050d36600461404c565b610f7d565b34801561051e57600080fd5b5060c9546103e19060ff1681565b34801561053857600080fd5b506105607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610308565b34801561058457600080fd5b506102a8610593366004613f2f565b610fc4565b3480156105a457600080fd5b506103556105b3366004614027565b60cd60209081526000928352604080842090915290825290205481565b3480156105dc57600080fd5b506102a861125b565b3480156105f157600080fd5b506102a861128d565b34801561060657600080fd5b506105607f000000000000000000000000000000000000000000000000000000000000000081565b6102a861063c366004614098565b611318565b34801561064d57600080fd5b506033546001600160a01b0316610560565b34801561066b57600080fd5b506102a8611572565b34801561068057600080fd5b506106c361068f366004613f2f565b60ca60205260009081526040902080546001820154600283015460039093015460ff9092169290916001600160a01b031684565b6040805194151585526020850193909352918301526001600160a01b03166060820152608001610308565b3480156106fa57600080fd5b506097546001600160a01b0316610560565b34801561071857600080fd5b50610762610727366004613f2f565b60cb6020526000908152604090208054600182015460028301546003909301549192909160ff82169161010090046001600160a01b03169085565b604051610308959493929190614113565b34801561077f57600080fd5b5061035561078e36600461417d565b63ffffffff1660009081527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602052604090205490565b3480156107d157600080fd5b506102a86107e036600461419a565b611671565b3480156107f157600080fd5b506102a8610800366004613f2f565b611908565b34801561081157600080fd5b506102a8610820366004613dcd565b6119ef565b34801561083157600080fd5b506065546001600160a01b0316610560565b34801561084f57600080fd5b506102a861085e366004613dcd565b611a8e565b34801561086f57600080fd5b5061088361087e36600461404c565b611a9f565b6040516103089190614201565b34801561089c57600080fd5b506103556108ab36600461404c565b611cb1565b3480156108bc57600080fd5b506102a86108cb366004613f2f565b611cf8565b3480156108dc57600080fd5b506103e16108eb366004613dcd565b60ce6020526000908152604090205460ff1681565b333014610939576040517f22d1fc8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008460405160200161094c9190614394565b604051602081830303815290604052905061096a8682868686611e38565b50505050505050565b61097b611f43565b61098481611f9f565b50565b6109c56040518060400160405280600f81526020017f73657450617573656428626f6f6c290000000000000000000000000000000000815250612094565b60c95481151560ff909116151503610a09576040517f3f855e3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c9546040805160ff9092161515825282151560208301527f91691e0294d292cac1a26c64dd4130c61d6690edeac415bc1fb307d64d3732a1910160405180910390a160c9805460ff1916911515919091179055565b6040805180820190915260008082526020820152600084604051602001610a869190614394565b6040516020818303038152906040529050610aa8856101400151828686612164565b95945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008383604051610ae79291906143a7565b60408051918290038220600090815260ca602090815290829020608084018352805460ff1615158452600181015491840191909152600281015491830191909152600301546001600160a01b031660608201529150505b92915050565b6000610b3e82612247565b610b57611f43565b63ffffffff821660008181527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602081815260409283902085905582519384528301849052917f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a1505050565b610bef604051806060016040528060248152602001614b0960249139612094565b610bf882612386565b6001600160a01b038216600090815260ce602052604090205460ff1681151581151503610c51576040517f8eee990d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600081815260ce6020908152604091829020805460ff191686151590811790915582518515158152918201527f10c0e7519c24c8e42dbd4d2405e9976e893c51df86614145b2758289f197ec3b910160405180910390a2505050565b610cf56040518060400160405280601c81526020017f736574436f6e66696741637469766528737472696e672c626f6f6c2900000000815250612094565b60008383604051610d079291906143a7565b6040805191829003909120600081815260ca60205291909120600301549091506001600160a01b0316610d66576040517f80919d7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260ca602052604090205460ff1682151581151503610db5576040517f01e852dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260ca602052604090819020805460ff19168515151790555182907fcba816b2fc5cd49700523a79b6e6c7dda19292fbb932cca77f7bccb1e500479290610e079088908890869089906143e2565b60405180910390a25050505050565b600054610100900460ff1615808015610e365750600054600160ff909116105b80610e505750303b158015610e50575060005460ff166001145b610ec75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610f0757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f10836123c6565b610f1982612454565b8015610f7857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610bc1565b505050565b6000808484604051610f909291906143a7565b6040805191829003909120600090815260cd60209081528282206001600160a01b0387168352905220549150509392505050565b60c95460ff1615611001576040517feced32bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611082573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110aa9190810190614474565b6080810151600090815260ca602052604081206101408301519293509163ffffffff161580159061110c57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1683610140015163ffffffff1614155b90508061111c5761111c836124da565b611127838383612684565b60038201546001600160a01b03166000826111c7576040517f42b7cfbd0000000000000000000000000000000000000000000000000000000081526001600160a01b038316906342b7cfbd90611181908890600401614394565b602060405180830381865afa15801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c291906145db565b6111ca565b60005b60408051608081018252865460ff16151581526001870154602082015260028701549181019190915260038601546001600160a01b0316606082015290915061121d90869083806112185750855b612933565b82156112435761123e85604051806020016040528060008152506000612a86565b611253565b8015611253576112538583612c98565b505050505050565b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60655433906001600160a01b0316811461130f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610ebe565b61098481612db6565b33600090815260ce602052604090205460ff16611361576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260cb602052604090206005600282015460ff16600581111561138a5761138a6140e4565b146113c1576040517f9aafae6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611442573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146a9190810190614474565b9050426202a3008260e001516114809190614627565b10156114b8576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114fa8185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250349250612a86915050565b80604001516001600160a01b0316816060015160405161151a919061463a565b604051809103902082610140015163ffffffff167f315a04917a98179e57c69a0b2808641e45e218e5402d9d3c7da753ea76c70322846020015160405161156391815260200190565b60405180910390a45050505050565b61157a611f43565b4780156109845760006115956033546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146115df576040519150601f19603f3d011682016040523d82523d6000602084013e6115e4565b606091505b505090508061161f576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b03166001600160a01b03167f0a1dd7c5bdc40ecbdefc1bfda22f1dfb98c8fc3e3940aab73ad7fba37720d0a08360405161166591815260200190565b60405180910390a25050565b611692604051806060016040528060368152602001614b2d60369139612094565b61169b83612386565b8315806116a85750604084115b156116de576040517e64280000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611718576040517ff6ea4e0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6202a3008110611754576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085856040516117669291906143a7565b60405180910390209050600060ca60008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060800160405280600115158152602001858152602001848152602001866001600160a01b031681525060ca600084815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050846001600160a01b031681606001516001600160a01b0316837fed1dcf396500587db779d729bcafd22d1cc4827708623e27189eb6687a6962448a8a86602001518a88604001518b8a6000015160016040516118f7989796959493929190614656565b60405180910390a450505050505050565b33600090815260ce602052604090205460ff16611951576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604090206001600282015460ff16600581111561197a5761197a6140e4565b146119b1576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101805460ff1916600317905560405182907f0a4273908b9362e571cacd5610879e3dfd7ddc7c9b3ce1d7ea7ea8b41869116490600090a25050565b6119f7611f43565b6040517fca5eb5e10000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015611a7357600080fd5b505af1158015611a87573d6000803e3d6000fd5b5050505050565b611a96611f43565b61098481612dbf565b606060008484604051611ab39291906143a7565b604051809103902090506000836001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611afd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2591908101906146a0565b805190915060008167ffffffffffffffff811115611b4557611b45613a3a565b604051908082528060200260200182016040528015611b6e578160200160208202803683370190505b5090506000805b83811015611c1457600086815260cd6020526040812086518290889085908110611ba157611ba1614752565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050611bd581612247565b611bdf5750611c0c565b80848481518110611bf257611bf2614752565b602090810291909101015282611c0781614781565b935050505b600101611b75565b508067ffffffffffffffff811115611c2e57611c2e613a3a565b604051908082528060200260200182016040528015611c57578160200160208202803683370190505b50955060005b81811015611ca457828181518110611c7757611c77614752565b6020026020010151878281518110611c9157611c91614752565b6020908102919091010152600101611c5d565b5050505050509392505050565b6000808484604051611cc49291906143a7565b6040805191829003909120600090815260cc60209081528282206001600160a01b0387168352905220549150509392505050565b33600090815260ce602052604090205460ff16611d41576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604080822090517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018490529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df89190810190614474565b6080810151600090815260ca60205260409020909150611e19838383612e48565b6003810154611e329083906001600160a01b0316612c98565b50505050565b611e406139d0565b6000611e4f8460000151612fb1565b602085015190915015611e6957611e698460200151612ff2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611eb98c6130ed565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ef59291906147b9565b60806040518083038185885af1158015611f13573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f389190614880565b979650505050505050565b6033546001600160a01b03163314611f9d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ebe565b565b6001600160a01b03811661201b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ebe565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906120e090339086906004016148f2565b602060405180830381865afa1580156120fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212191906145db565b905080612160573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610ebe93929190614914565b5050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016121c7896130ed565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016121fc9291906147b9565b6040805180830381865afa158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c9190614940565b90505b949350505050565b600081815260cb602052604081206001600282015460ff166005811115612270576122706140e4565b1461227e5750600092915050565b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa1580156122ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123279190810190614474565b6080810151600090815260ca6020526040902080549192509060ff1661235257506000949350505050565b426202a3008360e001516123669190614627565b101561237757506000949350505050565b50506001015442101592915050565b6001600160a01b038116610984576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff166124435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b61244b61316a565b610984816131ef565b600054610100900460ff166124d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b6109848161326c565b6080810151600090815260cd60209081526040808320818501516001600160a01b0316845290915281205490819003612511575050565b600081815260cb602052604090206001600282015460ff16600581111561253a5761253a6140e4565b1461254457505050565b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa1580156125c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ed9190810190614474565b90506000426202a3008360e001516126059190614627565b109050801561264f5760028301805460ff1916600417905560405184907f204a9e3c713ee1071c1d59b7caa015e0d7a583ebde2caf4cf34bb9d5d626cabb90600090a25050505050565b6040517fedba5e0700000000000000000000000000000000000000000000000000000000815260048101859052602401610ebe565b602083810151600090815260cb909152604081206002015460ff1660058111156126b0576126b06140e4565b146126e7576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815460ff16612722576040517fdea2a21200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166334496b5a856060015186604001516040518363ffffffff1660e01b815260040161277a92919061495c565b602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb9190614987565b9050836020015181146127fa576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e08401514290600090612812906202a30090614627565b90508181101561284e576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600285015461285d9083614627565b811015612896576040517f31289af400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83611253576080860151600090815260cc60209081526040808320818a01516001600160a01b0316845282528083205480845260cb9092529091206003015480158015906128f25750838760010154826128f09190614627565b115b15612929576040517f53f7a6ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050565b602083015160008261295357604084015161294e9042614627565b612955565b425b6040805160a081018252848152602080820184815260018385018181526000606086018190526080860181905289815260cb90945294909220835181559051818301559251600284018054959650929490929160ff19909116908360058111156129c1576129c16140e4565b02179055506060828101516002830180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384160217905560809384015160039093019290925591870151600090815260cd60209081526040808320818b0180518616855292529182902086905551928801519051929091169184917f1a61d230e613ab7202720dc7c24765ae456c59f31401ae23e29a5397829af5ec91612a779186916149a0565b60405180910390a35050505050565b60008251600014612a975782612ae8565b612ae8620f42406000612ae1604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b91906132f2565b9050612b07604051806040016040528060008152602001600081525090565b82600003612b2257612b1b85836000610a5f565b9050612b38565b5060408051808201909152828152600060208201525b80516101408601516040517f05687c1900000000000000000000000000000000000000000000000000000000815230926305687c19929091612b8591908a908890889088906004016149b9565b6000604051808303818588803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b5050505060208681018051600090815260cb8352604080822060028101805461010033027fffffffffffffffffffffff00000000000000000000000000000000000000000090911617600517905542600382015560808b0151935184845260cc8652828420838d0180516001600160a01b039081168752919097529383902055935160608b0151915194955092939290911691612c4f919061463a565b604051809103902088610140015163ffffffff167f7e5ab31b9063f36db8513c1ec8170e50aaad7cff84901c17758cc09ba40f38a38a602001516040516118f791815260200190565b602082810151600081815260cb83526040808220600280820180547fffffffffffffffffffffff00000000000000000000000000000000000000000016336101000217909117905542600382018190556080880151845260cc8652828420838901516001600160a01b03908116865296529282902084905590517fbf63783900000000000000000000000000000000000000000000000000000000815292939192909185169063bf63783990612d52908890600401614394565b600060405180830381600087803b158015612d6c57600080fd5b505af1158015612d80573d6000803e3d6000fd5b50506040518592507f88dcce5c07c8daf9e03fa70df64b98c8598df462a55510b7a987dadbf84db1099150600090a25050505050565b61098481613373565b612dc7611f43565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155612e106033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b805460ff16612e83576040517fdea2a21200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600284015460ff166005811115612e9e57612e9e6140e4565b03612ed5576040517f9c58a61900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600284015460ff166005811115612ef057612ef06140e4565b14612f27576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426202a3008360e00151612f3b9190614627565b1015612f73576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260010154421015610f78576040517f05f5f49800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414612fee576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610ebe565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130769190614a1d565b90506001600160a01b0381166130b8576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121606001600160a01b038216337f0000000000000000000000000000000000000000000000000000000000000000856133a4565b63ffffffff811660009081527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f9006020819052604082205480613163576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152602401610ebe565b9392505050565b600054610100900460ff166131e75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b611f9d61342c565b600054610100900460ff1661097b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b600054610100900460ff166132e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b610984816134b2565b606083600361330282600061356f565b61ffff161461334f5761331681600061356f565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610ebe565b600061335b85856135d5565b905061336986600183613686565b9695505050505050565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610984816136f1565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611e3290859061375b565b600054610100900460ff166134a95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b611f9d33612db6565b600054610100900460ff1661352f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b6001600160a01b0381166119f7576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061357c826002614627565b835110156135cc5760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610ebe565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561363e57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613163565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b1660208201526030016040516020818303038152906040529392505050565b606083600361369682600061356f565b61ffff16146136aa5761331681600061356f565b8460016136b78551613843565b6136c2906001614a3a565b86866040516020016136d8959493929190614a5c565b6040516020818303038152906040529150509392505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006137b0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138bd9092919063ffffffff16565b90508051600014806137d15750808060200190518101906137d191906145db565b610f785760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ebe565b600061ffff821115612fee5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610ebe565b606061223f848460008585600080866001600160a01b031685876040516138e4919061463a565b60006040518083038185875af1925050503d8060008114613921576040519150601f19603f3d011682016040523d82523d6000602084013e613926565b606091505b5091509150611f3887838387606083156139a157825160000361399a576001600160a01b0385163b61399a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ebe565b508161223f565b61223f83838151156139b65781518083602001fd5b8060405162461bcd60e51b8152600401610ebe9190614af5565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613a13604051806040016040528060008152602001600081525090565b905290565b63ffffffff8116811461098457600080fd5b8035613a3581613a18565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613a8d57613a8d613a3a565b60405290565b6040805190810167ffffffffffffffff81118282101715613a8d57613a8d613a3a565b604051601f8201601f1916810167ffffffffffffffff81118282101715613adf57613adf613a3a565b604052919050565b600067ffffffffffffffff821115613b0157613b01613a3a565b50601f01601f191660200190565b600082601f830112613b2057600080fd5b8135613b33613b2e82613ae7565b613ab6565b818152846020838601011115613b4857600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461098457600080fd5b8035613a3581613b65565b6bffffffffffffffffffffffff8116811461098457600080fd5b8035613a3581613b85565b60006101808284031215613bbd57600080fd5b613bc5613a69565b9050813567ffffffffffffffff80821115613bdf57600080fd5b613beb85838601613b0f565b835260208401356020840152613c0360408501613b7a565b60408401526060840135915080821115613c1c57600080fd5b613c2885838601613b0f565b60608401526080840135608084015260a0840135915080821115613c4b57600080fd5b613c5785838601613b0f565b60a084015260c0840135915080821115613c7057600080fd5b613c7c85838601613b0f565b60c084015260e084013560e08401526101009150613c9b828501613b7a565b828401526101209150613caf828501613b9f565b828401526101409150613cc3828501613a2a565b8284015261016091508184013581811115613cdd57600080fd5b613ce986828701613b0f565b8385015250505092915050565b600080600080600085870360c0811215613d0f57600080fd5b8635613d1a81613a18565b9550602087013567ffffffffffffffff80821115613d3757600080fd5b613d438a838b01613baa565b96506040890135915080821115613d5957600080fd5b50613d6689828a01613b0f565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082011215613d9957600080fd5b50613da2613a93565b60608701358152608087013560208201529150613dc160a08701613b7a565b90509295509295909350565b600060208284031215613ddf57600080fd5b813561316381613b65565b801515811461098457600080fd5b600060208284031215613e0a57600080fd5b813561316381613dea565b600080600060608486031215613e2a57600080fd5b833567ffffffffffffffff80821115613e4257600080fd5b613e4e87838801613baa565b94506020860135915080821115613e6457600080fd5b50613e7186828701613b0f565b9250506040840135613e8281613dea565b809150509250925092565b815181526020808301519082015260408101610b3e565b60008083601f840112613eb657600080fd5b50813567ffffffffffffffff811115613ece57600080fd5b602083019150836020828501011115613ee657600080fd5b9250929050565b60008060208385031215613f0057600080fd5b823567ffffffffffffffff811115613f1757600080fd5b613f2385828601613ea4565b90969095509350505050565b600060208284031215613f4157600080fd5b5035919050565b60008060408385031215613f5b57600080fd5b8235613f6681613a18565b946020939093013593505050565b60008060408385031215613f8757600080fd5b8235613f9281613b65565b91506020830135613fa281613dea565b809150509250929050565b600080600060408486031215613fc257600080fd5b833567ffffffffffffffff811115613fd957600080fd5b613fe586828701613ea4565b9094509250506020840135613e8281613dea565b6000806040838503121561400c57600080fd5b823561401781613b65565b91506020830135613fa281613b65565b6000806040838503121561403a57600080fd5b823591506020830135613fa281613b65565b60008060006040848603121561406157600080fd5b833567ffffffffffffffff81111561407857600080fd5b61408486828701613ea4565b9094509250506020840135613e8281613b65565b6000806000604084860312156140ad57600080fd5b83359250602084013567ffffffffffffffff8111156140cb57600080fd5b6140d786828701613ea4565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8581526020810185905260a0810160068510614158577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8460408301526001600160a01b03841660608301528260808301529695505050505050565b60006020828403121561418f57600080fd5b813561316381613a18565b6000806000806000608086880312156141b257600080fd5b853567ffffffffffffffff8111156141c957600080fd5b6141d588828901613ea4565b90965094505060208601356141e981613b65565b94979396509394604081013594506060013592915050565b6020808252825182820181905260009190848201906040850190845b818110156142395783518352928401929184019160010161421d565b50909695505050505050565b60005b83811015614260578181015183820152602001614248565b50506000910152565b60008151808452614281816020860160208601614245565b601f01601f19169290920160200192915050565b600061018082518185526142ab82860182614269565b9150506020830151602085015260408301516142d260408601826001600160a01b03169052565b50606083015184820360608601526142ea8282614269565b9150506080830151608085015260a083015184820360a086015261430e8282614269565b91505060c083015184820360c08601526143288282614269565b91505060e083015160e085015261010080840151614350828701826001600160a01b03169052565b5050610120838101516bffffffffffffffffffffffff16908501526101408084015163ffffffff169085015261016080840151858303828701526133698382614269565b6020815260006131636020830184614295565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6060815260006143f66060830186886143b7565b93151560208301525090151560409091015292915050565b600082601f83011261441f57600080fd5b815161442d613b2e82613ae7565b81815284602083860101111561444257600080fd5b61223f826020830160208701614245565b8051613a3581613b65565b8051613a3581613b85565b8051613a3581613a18565b60006020828403121561448657600080fd5b815167ffffffffffffffff8082111561449e57600080fd5b9083019061018082860312156144b357600080fd5b6144bb613a69565b8251828111156144ca57600080fd5b6144d68782860161440e565b825250602083015160208201526144ef60408401614453565b604082015260608301518281111561450657600080fd5b6145128782860161440e565b6060830152506080830151608082015260a08301518281111561453457600080fd5b6145408782860161440e565b60a08301525060c08301518281111561455857600080fd5b6145648782860161440e565b60c08301525060e083015160e0820152610100614582818501614453565b9082015261012061459484820161445e565b908201526101406145a6848201614469565b9082015261016083810151838111156145be57600080fd5b6145ca8882870161440e565b918301919091525095945050505050565b6000602082840312156145ed57600080fd5b815161316381613dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b3e57610b3e6145f8565b6000825161464c818460208701614245565b9190910192915050565b60e08152600061466a60e083018a8c6143b7565b602083019890985250604081019590955260608501939093526080840191909152151560a0830152151560c09091015292915050565b600060208083850312156146b357600080fd5b825167ffffffffffffffff808211156146cb57600080fd5b818501915085601f8301126146df57600080fd5b8151818111156146f1576146f1613a3a565b8060051b9150614702848301613ab6565b818152918301840191848101908884111561471c57600080fd5b938501935b83851015614746578451925061473683613b65565b8282529385019390850190614721565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b2576147b26145f8565b5060010190565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526147ef60e0840182614269565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a085015261482a8282614269565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561486257600080fd5b61486a613a93565b9050815181526020820151602082015292915050565b60006080828403121561489257600080fd5b6040516060810167ffffffffffffffff82821081831117156148b6576148b6613a3a565b81604052845183526020850151915080821682146148d357600080fd5b5060208201526148e68460408501614850565b60408201529392505050565b6001600160a01b038316815260406020820152600061223f6040830184614269565b60006001600160a01b0380861683528085166020840152506060604083015261223c6060830184614269565b60006040828403121561495257600080fd5b6131638383614850565b60408152600061496f6040830185614269565b90506001600160a01b03831660208301529392505050565b60006020828403121561499957600080fd5b5051919050565b82815260406020820152600061223f6040830184614269565b63ffffffff8616815260c0602082015260006149d860c0830187614295565b82810360408401526149ea8187614269565b85516060850152602086015160808501529150614a049050565b6001600160a01b03831660a08301529695505050505050565b600060208284031215614a2f57600080fd5b815161316381613b65565b61ffff818116838216019080821115614a5557614a556145f8565b5092915050565b60008651614a6e818460208b01614245565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351614ae6816004840160208801614245565b01600401979650505050505050565b602081526000613163602083018461426956fe73657457686974656c69737465644578656375746f7228616464726573732c626f6f6c297365745269736b506172616d65746572436f6e66696728737472696e672c616464726573732c75696e743235362c75696e7432353629a26469706673582212209ddf05a66c58460faddfdee8edd07fb29417d9bc42218aadd277dc6e5bce9fac64736f6c63430008190033",
  "deployedBytecode": "0x6080604052600436106102895760003560e01c8063715018a611610153578063bb0b6a53116100cb578063f2fde38b1161007f578063f75875ad11610064578063f75875ad14610890578063f8ce6ac2146108b0578063fe2b3502146108d057600080fd5b8063f2fde38b14610843578063f63106e41461086357600080fd5b8063c3e10deb116100b0578063c3e10deb146107e5578063ca5eb5e114610805578063e30c39781461082557600080fd5b8063bb0b6a5314610773578063c2a23c84146107c557600080fd5b80638da5cb5b11610122578063af9e0fd311610107578063af9e0fd314610674578063b4a0bdf3146106ee578063b4c2f7271461070c57600080fd5b80638da5cb5b14610641578063ab803a761461065f57600080fd5b8063715018a6146105d057806379ba5097146105e55780637dd8f522146105fa57806385a7602f1461062e57600080fd5b80633aed7f3111610201578063595bd377116101b55780635e280f111161019a5780635e280f111461052c57806362656e631461057857806365bd691c1461059857600080fd5b8063595bd377146104f25780635c975abb1461051257600080fd5b8063485cc955116101e6578063485cc955146104515780634c21344914610471578063513602e8146104ba57600080fd5b80633aed7f3114610411578063438653fe1461043157600080fd5b80631d1c362011610258578063282071411161023d578063282071411461036357806333bde2ca146103c15780633400288b146103f157600080fd5b80631d1c362014610311578063233dd0da1461033e57600080fd5b806305687c19146102955780630e32cb86146102aa57806316c38b3c146102ca57806317442b70146102ea57600080fd5b3661029057005b600080fd5b6102a86102a3366004613cf6565b610900565b005b3480156102b657600080fd5b506102a86102c5366004613dcd565b610973565b3480156102d657600080fd5b506102a86102e5366004613df8565b610987565b3480156102f657600080fd5b50604080516001815260006020820152015b60405180910390f35b34801561031d57600080fd5b5061033161032c366004613e15565b610a5f565b6040516103089190613e8d565b34801561034a57600080fd5b506103556202a30081565b604051908152602001610308565b34801561036f57600080fd5b5061038361037e366004613eed565b610ab1565b604051610308919081511515815260208083015190820152604080830151908201526060918201516001600160a01b03169181019190915260800190565b3480156103cd57600080fd5b506103e16103dc366004613f2f565b610b44565b6040519015158152602001610308565b3480156103fd57600080fd5b506102a861040c366004613f48565b610b4f565b34801561041d57600080fd5b506102a861042c366004613f74565b610bce565b34801561043d57600080fd5b506102a861044c366004613fad565b610cb7565b34801561045d57600080fd5b506102a861046c366004613ff9565b610e16565b34801561047d57600080fd5b506104a57f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610308565b3480156104c657600080fd5b506103556104d5366004614027565b60cc60209081526000928352604080842090915290825290205481565b3480156104fe57600080fd5b5061035561050d36600461404c565b610f7d565b34801561051e57600080fd5b5060c9546103e19060ff1681565b34801561053857600080fd5b506105607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610308565b34801561058457600080fd5b506102a8610593366004613f2f565b610fc4565b3480156105a457600080fd5b506103556105b3366004614027565b60cd60209081526000928352604080842090915290825290205481565b3480156105dc57600080fd5b506102a861125b565b3480156105f157600080fd5b506102a861128d565b34801561060657600080fd5b506105607f000000000000000000000000000000000000000000000000000000000000000081565b6102a861063c366004614098565b611318565b34801561064d57600080fd5b506033546001600160a01b0316610560565b34801561066b57600080fd5b506102a8611572565b34801561068057600080fd5b506106c361068f366004613f2f565b60ca60205260009081526040902080546001820154600283015460039093015460ff9092169290916001600160a01b031684565b6040805194151585526020850193909352918301526001600160a01b03166060820152608001610308565b3480156106fa57600080fd5b506097546001600160a01b0316610560565b34801561071857600080fd5b50610762610727366004613f2f565b60cb6020526000908152604090208054600182015460028301546003909301549192909160ff82169161010090046001600160a01b03169085565b604051610308959493929190614113565b34801561077f57600080fd5b5061035561078e36600461417d565b63ffffffff1660009081527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602052604090205490565b3480156107d157600080fd5b506102a86107e036600461419a565b611671565b3480156107f157600080fd5b506102a8610800366004613f2f565b611908565b34801561081157600080fd5b506102a8610820366004613dcd565b6119ef565b34801561083157600080fd5b506065546001600160a01b0316610560565b34801561084f57600080fd5b506102a861085e366004613dcd565b611a8e565b34801561086f57600080fd5b5061088361087e36600461404c565b611a9f565b6040516103089190614201565b34801561089c57600080fd5b506103556108ab36600461404c565b611cb1565b3480156108bc57600080fd5b506102a86108cb366004613f2f565b611cf8565b3480156108dc57600080fd5b506103e16108eb366004613dcd565b60ce6020526000908152604090205460ff1681565b333014610939576040517f22d1fc8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008460405160200161094c9190614394565b604051602081830303815290604052905061096a8682868686611e38565b50505050505050565b61097b611f43565b61098481611f9f565b50565b6109c56040518060400160405280600f81526020017f73657450617573656428626f6f6c290000000000000000000000000000000000815250612094565b60c95481151560ff909116151503610a09576040517f3f855e3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c9546040805160ff9092161515825282151560208301527f91691e0294d292cac1a26c64dd4130c61d6690edeac415bc1fb307d64d3732a1910160405180910390a160c9805460ff1916911515919091179055565b6040805180820190915260008082526020820152600084604051602001610a869190614394565b6040516020818303038152906040529050610aa8856101400151828686612164565b95945050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008383604051610ae79291906143a7565b60408051918290038220600090815260ca602090815290829020608084018352805460ff1615158452600181015491840191909152600281015491830191909152600301546001600160a01b031660608201529150505b92915050565b6000610b3e82612247565b610b57611f43565b63ffffffff821660008181527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900602081815260409283902085905582519384528301849052917f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a1505050565b610bef604051806060016040528060248152602001614b0960249139612094565b610bf882612386565b6001600160a01b038216600090815260ce602052604090205460ff1681151581151503610c51576040517f8eee990d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316600081815260ce6020908152604091829020805460ff191686151590811790915582518515158152918201527f10c0e7519c24c8e42dbd4d2405e9976e893c51df86614145b2758289f197ec3b910160405180910390a2505050565b610cf56040518060400160405280601c81526020017f736574436f6e66696741637469766528737472696e672c626f6f6c2900000000815250612094565b60008383604051610d079291906143a7565b6040805191829003909120600081815260ca60205291909120600301549091506001600160a01b0316610d66576040517f80919d7b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260ca602052604090205460ff1682151581151503610db5576040517f01e852dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260ca602052604090819020805460ff19168515151790555182907fcba816b2fc5cd49700523a79b6e6c7dda19292fbb932cca77f7bccb1e500479290610e079088908890869089906143e2565b60405180910390a25050505050565b600054610100900460ff1615808015610e365750600054600160ff909116105b80610e505750303b158015610e50575060005460ff166001145b610ec75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610f0757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f10836123c6565b610f1982612454565b8015610f7857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610bc1565b505050565b6000808484604051610f909291906143a7565b6040805191829003909120600090815260cd60209081528282206001600160a01b0387168352905220549150509392505050565b60c95460ff1615611001576040517feced32bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611082573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110aa9190810190614474565b6080810151600090815260ca602052604081206101408301519293509163ffffffff161580159061110c57507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1683610140015163ffffffff1614155b90508061111c5761111c836124da565b611127838383612684565b60038201546001600160a01b03166000826111c7576040517f42b7cfbd0000000000000000000000000000000000000000000000000000000081526001600160a01b038316906342b7cfbd90611181908890600401614394565b602060405180830381865afa15801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c291906145db565b6111ca565b60005b60408051608081018252865460ff16151581526001870154602082015260028701549181019190915260038601546001600160a01b0316606082015290915061121d90869083806112185750855b612933565b82156112435761123e85604051806020016040528060008152506000612a86565b611253565b8015611253576112538583612c98565b505050505050565b6040517f96c553eb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60655433906001600160a01b0316811461130f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610ebe565b61098481612db6565b33600090815260ce602052604090205460ff16611361576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260cb602052604090206005600282015460ff16600581111561138a5761138a6140e4565b146113c1576040517f9aafae6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611442573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261146a9190810190614474565b9050426202a3008260e001516114809190614627565b10156114b8576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114fa8185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250349250612a86915050565b80604001516001600160a01b0316816060015160405161151a919061463a565b604051809103902082610140015163ffffffff167f315a04917a98179e57c69a0b2808641e45e218e5402d9d3c7da753ea76c70322846020015160405161156391815260200190565b60405180910390a45050505050565b61157a611f43565b4780156109845760006115956033546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146115df576040519150601f19603f3d011682016040523d82523d6000602084013e6115e4565b606091505b505090508061161f576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6033546001600160a01b03166001600160a01b03167f0a1dd7c5bdc40ecbdefc1bfda22f1dfb98c8fc3e3940aab73ad7fba37720d0a08360405161166591815260200190565b60405180910390a25050565b611692604051806060016040528060368152602001614b2d60369139612094565b61169b83612386565b8315806116a85750604084115b156116de576040517e64280000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611718576040517ff6ea4e0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6202a3008110611754576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085856040516117669291906143a7565b60405180910390209050600060ca60008381526020019081526020016000206040518060800160405290816000820160009054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152505090506040518060800160405280600115158152602001858152602001848152602001866001600160a01b031681525060ca600084815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101556040820151816002015560608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050846001600160a01b031681606001516001600160a01b0316837fed1dcf396500587db779d729bcafd22d1cc4827708623e27189eb6687a6962448a8a86602001518a88604001518b8a6000015160016040516118f7989796959493929190614656565b60405180910390a450505050505050565b33600090815260ce602052604090205460ff16611951576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604090206001600282015460ff16600581111561197a5761197a6140e4565b146119b1576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101805460ff1916600317905560405182907f0a4273908b9362e571cacd5610879e3dfd7ddc7c9b3ce1d7ea7ea8b41869116490600090a25050565b6119f7611f43565b6040517fca5eb5e10000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015611a7357600080fd5b505af1158015611a87573d6000803e3d6000fd5b5050505050565b611a96611f43565b61098481612dbf565b606060008484604051611ab39291906143a7565b604051809103902090506000836001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611afd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b2591908101906146a0565b805190915060008167ffffffffffffffff811115611b4557611b45613a3a565b604051908082528060200260200182016040528015611b6e578160200160208202803683370190505b5090506000805b83811015611c1457600086815260cd6020526040812086518290889085908110611ba157611ba1614752565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020549050611bd581612247565b611bdf5750611c0c565b80848481518110611bf257611bf2614752565b602090810291909101015282611c0781614781565b935050505b600101611b75565b508067ffffffffffffffff811115611c2e57611c2e613a3a565b604051908082528060200260200182016040528015611c57578160200160208202803683370190505b50955060005b81811015611ca457828181518110611c7757611c77614752565b6020026020010151878281518110611c9157611c91614752565b6020908102919091010152600101611c5d565b5050505050509392505050565b6000808484604051611cc49291906143a7565b6040805191829003909120600090815260cc60209081528282206001600160a01b0387168352905220549150509392505050565b33600090815260ce602052604090205460ff16611d41576040517f341f61ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260cb602052604080822090517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018490529091907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df89190810190614474565b6080810151600090815260ca60205260409020909150611e19838383612e48565b6003810154611e329083906001600160a01b0316612c98565b50505050565b611e406139d0565b6000611e4f8460000151612fb1565b602085015190915015611e6957611e698460200151612ff2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611eb98c6130ed565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ef59291906147b9565b60806040518083038185885af1158015611f13573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f389190614880565b979650505050505050565b6033546001600160a01b03163314611f9d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ebe565b565b6001600160a01b03811661201b5760405162461bcd60e51b815260206004820152602560248201527f696e76616c696420616365737320636f6e74726f6c206d616e6167657220616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ebe565b609780546001600160a01b038381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0910160405180910390a15050565b6097546040517f18c5e8ab0000000000000000000000000000000000000000000000000000000081526000916001600160a01b0316906318c5e8ab906120e090339086906004016148f2565b602060405180830381865afa1580156120fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212191906145db565b905080612160573330836040517f4a3fa293000000000000000000000000000000000000000000000000000000008152600401610ebe93929190614914565b5050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016121c7896130ed565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016121fc9291906147b9565b6040805180830381865afa158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c9190614940565b90505b949350505050565b600081815260cb602052604081206001600282015460ff166005811115612270576122706140e4565b1461227e5750600092915050565b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa1580156122ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123279190810190614474565b6080810151600090815260ca6020526040902080549192509060ff1661235257506000949350505050565b426202a3008360e001516123669190614627565b101561237757506000949350505050565b50506001015442101592915050565b6001600160a01b038116610984576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff166124435760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b61244b61316a565b610984816131ef565b600054610100900460ff166124d15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b6109848161326c565b6080810151600090815260cd60209081526040808320818501516001600160a01b0316845290915281205490819003612511575050565b600081815260cb602052604090206001600282015460ff16600581111561253a5761253a6140e4565b1461254457505050565b6040517f37759b9a000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906337759b9a90602401600060405180830381865afa1580156125c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125ed9190810190614474565b90506000426202a3008360e001516126059190614627565b109050801561264f5760028301805460ff1916600417905560405184907f204a9e3c713ee1071c1d59b7caa015e0d7a583ebde2caf4cf34bb9d5d626cabb90600090a25050505050565b6040517fedba5e0700000000000000000000000000000000000000000000000000000000815260048101859052602401610ebe565b602083810151600090815260cb909152604081206002015460ff1660058111156126b0576126b06140e4565b146126e7576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815460ff16612722576040517fdea2a21200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166334496b5a856060015186604001516040518363ffffffff1660e01b815260040161277a92919061495c565b602060405180830381865afa158015612797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127bb9190614987565b9050836020015181146127fa576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e08401514290600090612812906202a30090614627565b90508181101561284e576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600285015461285d9083614627565b811015612896576040517f31289af400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83611253576080860151600090815260cc60209081526040808320818a01516001600160a01b0316845282528083205480845260cb9092529091206003015480158015906128f25750838760010154826128f09190614627565b115b15612929576040517f53f7a6ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050565b602083015160008261295357604084015161294e9042614627565b612955565b425b6040805160a081018252848152602080820184815260018385018181526000606086018190526080860181905289815260cb90945294909220835181559051818301559251600284018054959650929490929160ff19909116908360058111156129c1576129c16140e4565b02179055506060828101516002830180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b039384160217905560809384015160039093019290925591870151600090815260cd60209081526040808320818b0180518616855292529182902086905551928801519051929091169184917f1a61d230e613ab7202720dc7c24765ae456c59f31401ae23e29a5397829af5ec91612a779186916149a0565b60405180910390a35050505050565b60008251600014612a975782612ae8565b612ae8620f42406000612ae1604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b91906132f2565b9050612b07604051806040016040528060008152602001600081525090565b82600003612b2257612b1b85836000610a5f565b9050612b38565b5060408051808201909152828152600060208201525b80516101408601516040517f05687c1900000000000000000000000000000000000000000000000000000000815230926305687c19929091612b8591908a908890889088906004016149b9565b6000604051808303818588803b158015612b9e57600080fd5b505af1158015612bb2573d6000803e3d6000fd5b5050505060208681018051600090815260cb8352604080822060028101805461010033027fffffffffffffffffffffff00000000000000000000000000000000000000000090911617600517905542600382015560808b0151935184845260cc8652828420838d0180516001600160a01b039081168752919097529383902055935160608b0151915194955092939290911691612c4f919061463a565b604051809103902088610140015163ffffffff167f7e5ab31b9063f36db8513c1ec8170e50aaad7cff84901c17758cc09ba40f38a38a602001516040516118f791815260200190565b602082810151600081815260cb83526040808220600280820180547fffffffffffffffffffffff00000000000000000000000000000000000000000016336101000217909117905542600382018190556080880151845260cc8652828420838901516001600160a01b03908116865296529282902084905590517fbf63783900000000000000000000000000000000000000000000000000000000815292939192909185169063bf63783990612d52908890600401614394565b600060405180830381600087803b158015612d6c57600080fd5b505af1158015612d80573d6000803e3d6000fd5b50506040518592507f88dcce5c07c8daf9e03fa70df64b98c8598df462a55510b7a987dadbf84db1099150600090a25050505050565b61098481613373565b612dc7611f43565b606580546001600160a01b0383167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155612e106033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b805460ff16612e83576040517fdea2a21200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600284015460ff166005811115612e9e57612e9e6140e4565b03612ed5576040517f9c58a61900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600284015460ff166005811115612ef057612ef06140e4565b14612f27576040517fdefe2c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b426202a3008360e00151612f3b9190614627565b1015612f73576040517fc2a16f1400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260010154421015610f78576040517f05f5f49800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813414612fee576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610ebe565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130769190614a1d565b90506001600160a01b0381166130b8576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121606001600160a01b038216337f0000000000000000000000000000000000000000000000000000000000000000856133a4565b63ffffffff811660009081527f72ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f9006020819052604082205480613163576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff85166004820152602401610ebe565b9392505050565b600054610100900460ff166131e75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b611f9d61342c565b600054610100900460ff1661097b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b600054610100900460ff166132e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b610984816134b2565b606083600361330282600061356f565b61ffff161461334f5761331681600061356f565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff9091166004820152602401610ebe565b600061335b85856135d5565b905061336986600183613686565b9695505050505050565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610984816136f1565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052611e3290859061375b565b600054610100900460ff166134a95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b611f9d33612db6565b600054610100900460ff1661352f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ebe565b6001600160a01b0381166119f7576040517fb586360400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061357c826002614627565b835110156135cc5760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610ebe565b50016002015190565b60606fffffffffffffffffffffffffffffffff82161561363e57604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052613163565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b1660208201526030016040516020818303038152906040529392505050565b606083600361369682600061356f565b61ffff16146136aa5761331681600061356f565b8460016136b78551613843565b6136c2906001614a3a565b86866040516020016136d8959493929190614a5c565b6040516020818303038152906040529150509392505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006137b0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166138bd9092919063ffffffff16565b90508051600014806137d15750808060200190518101906137d191906145db565b610f785760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ebe565b600061ffff821115612fee5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f36206269747300000000000000000000000000000000000000000000000000006064820152608401610ebe565b606061223f848460008585600080866001600160a01b031685876040516138e4919061463a565b60006040518083038185875af1925050503d8060008114613921576040519150601f19603f3d011682016040523d82523d6000602084013e613926565b606091505b5091509150611f3887838387606083156139a157825160000361399a576001600160a01b0385163b61399a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ebe565b508161223f565b61223f83838151156139b65781518083602001fd5b8060405162461bcd60e51b8152600401610ebe9190614af5565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001613a13604051806040016040528060008152602001600081525090565b905290565b63ffffffff8116811461098457600080fd5b8035613a3581613a18565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610180810167ffffffffffffffff81118282101715613a8d57613a8d613a3a565b60405290565b6040805190810167ffffffffffffffff81118282101715613a8d57613a8d613a3a565b604051601f8201601f1916810167ffffffffffffffff81118282101715613adf57613adf613a3a565b604052919050565b600067ffffffffffffffff821115613b0157613b01613a3a565b50601f01601f191660200190565b600082601f830112613b2057600080fd5b8135613b33613b2e82613ae7565b613ab6565b818152846020838601011115613b4857600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b038116811461098457600080fd5b8035613a3581613b65565b6bffffffffffffffffffffffff8116811461098457600080fd5b8035613a3581613b85565b60006101808284031215613bbd57600080fd5b613bc5613a69565b9050813567ffffffffffffffff80821115613bdf57600080fd5b613beb85838601613b0f565b835260208401356020840152613c0360408501613b7a565b60408401526060840135915080821115613c1c57600080fd5b613c2885838601613b0f565b60608401526080840135608084015260a0840135915080821115613c4b57600080fd5b613c5785838601613b0f565b60a084015260c0840135915080821115613c7057600080fd5b613c7c85838601613b0f565b60c084015260e084013560e08401526101009150613c9b828501613b7a565b828401526101209150613caf828501613b9f565b828401526101409150613cc3828501613a2a565b8284015261016091508184013581811115613cdd57600080fd5b613ce986828701613b0f565b8385015250505092915050565b600080600080600085870360c0811215613d0f57600080fd5b8635613d1a81613a18565b9550602087013567ffffffffffffffff80821115613d3757600080fd5b613d438a838b01613baa565b96506040890135915080821115613d5957600080fd5b50613d6689828a01613b0f565b94505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082011215613d9957600080fd5b50613da2613a93565b60608701358152608087013560208201529150613dc160a08701613b7a565b90509295509295909350565b600060208284031215613ddf57600080fd5b813561316381613b65565b801515811461098457600080fd5b600060208284031215613e0a57600080fd5b813561316381613dea565b600080600060608486031215613e2a57600080fd5b833567ffffffffffffffff80821115613e4257600080fd5b613e4e87838801613baa565b94506020860135915080821115613e6457600080fd5b50613e7186828701613b0f565b9250506040840135613e8281613dea565b809150509250925092565b815181526020808301519082015260408101610b3e565b60008083601f840112613eb657600080fd5b50813567ffffffffffffffff811115613ece57600080fd5b602083019150836020828501011115613ee657600080fd5b9250929050565b60008060208385031215613f0057600080fd5b823567ffffffffffffffff811115613f1757600080fd5b613f2385828601613ea4565b90969095509350505050565b600060208284031215613f4157600080fd5b5035919050565b60008060408385031215613f5b57600080fd5b8235613f6681613a18565b946020939093013593505050565b60008060408385031215613f8757600080fd5b8235613f9281613b65565b91506020830135613fa281613dea565b809150509250929050565b600080600060408486031215613fc257600080fd5b833567ffffffffffffffff811115613fd957600080fd5b613fe586828701613ea4565b9094509250506020840135613e8281613dea565b6000806040838503121561400c57600080fd5b823561401781613b65565b91506020830135613fa281613b65565b6000806040838503121561403a57600080fd5b823591506020830135613fa281613b65565b60008060006040848603121561406157600080fd5b833567ffffffffffffffff81111561407857600080fd5b61408486828701613ea4565b9094509250506020840135613e8281613b65565b6000806000604084860312156140ad57600080fd5b83359250602084013567ffffffffffffffff8111156140cb57600080fd5b6140d786828701613ea4565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8581526020810185905260a0810160068510614158577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8460408301526001600160a01b03841660608301528260808301529695505050505050565b60006020828403121561418f57600080fd5b813561316381613a18565b6000806000806000608086880312156141b257600080fd5b853567ffffffffffffffff8111156141c957600080fd5b6141d588828901613ea4565b90965094505060208601356141e981613b65565b94979396509394604081013594506060013592915050565b6020808252825182820181905260009190848201906040850190845b818110156142395783518352928401929184019160010161421d565b50909695505050505050565b60005b83811015614260578181015183820152602001614248565b50506000910152565b60008151808452614281816020860160208601614245565b601f01601f19169290920160200192915050565b600061018082518185526142ab82860182614269565b9150506020830151602085015260408301516142d260408601826001600160a01b03169052565b50606083015184820360608601526142ea8282614269565b9150506080830151608085015260a083015184820360a086015261430e8282614269565b91505060c083015184820360c08601526143288282614269565b91505060e083015160e085015261010080840151614350828701826001600160a01b03169052565b5050610120838101516bffffffffffffffffffffffff16908501526101408084015163ffffffff169085015261016080840151858303828701526133698382614269565b6020815260006131636020830184614295565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6060815260006143f66060830186886143b7565b93151560208301525090151560409091015292915050565b600082601f83011261441f57600080fd5b815161442d613b2e82613ae7565b81815284602083860101111561444257600080fd5b61223f826020830160208701614245565b8051613a3581613b65565b8051613a3581613b85565b8051613a3581613a18565b60006020828403121561448657600080fd5b815167ffffffffffffffff8082111561449e57600080fd5b9083019061018082860312156144b357600080fd5b6144bb613a69565b8251828111156144ca57600080fd5b6144d68782860161440e565b825250602083015160208201526144ef60408401614453565b604082015260608301518281111561450657600080fd5b6145128782860161440e565b6060830152506080830151608082015260a08301518281111561453457600080fd5b6145408782860161440e565b60a08301525060c08301518281111561455857600080fd5b6145648782860161440e565b60c08301525060e083015160e0820152610100614582818501614453565b9082015261012061459484820161445e565b908201526101406145a6848201614469565b9082015261016083810151838111156145be57600080fd5b6145ca8882870161440e565b918301919091525095945050505050565b6000602082840312156145ed57600080fd5b815161316381613dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610b3e57610b3e6145f8565b6000825161464c818460208701614245565b9190910192915050565b60e08152600061466a60e083018a8c6143b7565b602083019890985250604081019590955260608501939093526080840191909152151560a0830152151560c09091015292915050565b600060208083850312156146b357600080fd5b825167ffffffffffffffff808211156146cb57600080fd5b818501915085601f8301126146df57600080fd5b8151818111156146f1576146f1613a3a565b8060051b9150614702848301613ab6565b818152918301840191848101908884111561471c57600080fd5b938501935b83851015614746578451925061473683613b65565b8282529385019390850190614721565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147b2576147b26145f8565b5060010190565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526147ef60e0840182614269565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a085015261482a8282614269565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561486257600080fd5b61486a613a93565b9050815181526020820151602082015292915050565b60006080828403121561489257600080fd5b6040516060810167ffffffffffffffff82821081831117156148b6576148b6613a3a565b81604052845183526020850151915080821682146148d357600080fd5b5060208201526148e68460408501614850565b60408201529392505050565b6001600160a01b038316815260406020820152600061223f6040830184614269565b60006001600160a01b0380861683528085166020840152506060604083015261223c6060830184614269565b60006040828403121561495257600080fd5b6131638383614850565b60408152600061496f6040830185614269565b90506001600160a01b03831660208301529392505050565b60006020828403121561499957600080fd5b5051919050565b82815260406020820152600061223f6040830184614269565b63ffffffff8616815260c0602082015260006149d860c0830187614295565b82810360408401526149ea8187614269565b85516060850152602086015160808501529150614a049050565b6001600160a01b03831660a08301529695505050505050565b600060208284031215614a2f57600080fd5b815161316381613b65565b61ffff818116838216019080821115614a5557614a556145f8565b5092915050565b60008651614a6e818460208b01614245565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351614ae6816004840160208801614245565b01600401979650505050505050565b602081526000613163602083018461426956fe73657457686974656c69737465644578656375746f7228616464726573732c626f6f6c297365745269736b506172616d65746572436f6e66696728737472696e672c616464726573732c75696e743235362c75696e7432353629a26469706673582212209ddf05a66c58460faddfdee8edd07fb29417d9bc42218aadd277dc6e5bce9fac64736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
