{
  "contractName": "PAMRegistry",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "GrantedAccess",
      "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": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "RegisteredAsset",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        }
      ],
      "name": "RevokedAccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevActor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newActor",
          "type": "address"
        }
      ],
      "name": "UpdatedActor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newBeneficiary",
          "type": "address"
        }
      ],
      "name": "UpdatedBeneficiary",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevEngine",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newEngine",
          "type": "address"
        }
      ],
      "name": "UpdatedEngine",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedFinalizedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevObligor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newObligor",
          "type": "address"
        }
      ],
      "name": "UpdatedObligor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "statusDate",
          "type": "uint256"
        }
      ],
      "name": "UpdatedState",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "UpdatedTerms",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "approveActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedActors",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getActor",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getAddressValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getBytes32ValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getContractReferenceValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "object",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "object2",
              "type": "bytes32"
            },
            {
              "internalType": "enum ContractReferenceType",
              "name": "_type",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractReferenceRole",
              "name": "role",
              "type": "uint8"
            }
          ],
          "internalType": "struct ContractReference",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getCycleValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getEngine",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getEnumValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getEventAtIndex",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getFinalizedState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForStateAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduleIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getNextUnderlyingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getOwnership",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getPeriodValueForTermsAttribute",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IP",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getSchedule",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getScheduleLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getState",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "getTerms",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUIntValueForTermsAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "attribute",
          "type": "bytes32"
        }
      ],
      "name": "getUintValueForStateAttribute",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRootAccess",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "isEventSettled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        },
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "int256",
          "name": "_payoff",
          "type": "int256"
        }
      ],
      "name": "markEventAsSettled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popNextScheduledEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        }
      ],
      "name": "popPendingEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "pendingEvent",
          "type": "bytes32"
        }
      ],
      "name": "pushPendingEvent",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        },
        {
          "internalType": "bytes32[]",
          "name": "schedule",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "creatorObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "creatorBeneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyObligor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "counterpartyBeneficiary",
              "type": "address"
            }
          ],
          "internalType": "struct AssetOwnership",
          "name": "ownership",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "admin",
          "type": "address"
        }
      ],
      "name": "registerAsset",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes4",
          "name": "methodSignature",
          "type": "bytes4"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeAccess",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "actor",
          "type": "address"
        }
      ],
      "name": "setActor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCounterpartyBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCounterpartyObligor",
          "type": "address"
        }
      ],
      "name": "setCounterpartyObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorBeneficiary",
          "type": "address"
        }
      ],
      "name": "setCreatorBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "newCreatorObligor",
          "type": "address"
        }
      ],
      "name": "setCreatorObligor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "engine",
          "type": "address"
        }
      ],
      "name": "setEngine",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setFinalizedState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractPerformance",
              "name": "contractPerformance",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonPerformingDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "exerciseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "terminationDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lastCouponDay",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "interestScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "notionalScalingMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextPrincipalRedemptionPayment",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseAmount",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "exerciseQuantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "quantity",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "couponAmountFixed",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "marginFactor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "adjustmentFactor",
              "type": "int256"
            }
          ],
          "internalType": "struct State",
          "name": "state",
          "type": "tuple"
        }
      ],
      "name": "setState",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "assetId",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "enum ContractType",
              "name": "contractType",
              "type": "uint8"
            },
            {
              "internalType": "enum Calendar",
              "name": "calendar",
              "type": "uint8"
            },
            {
              "internalType": "enum ContractRole",
              "name": "contractRole",
              "type": "uint8"
            },
            {
              "internalType": "enum DayCountConvention",
              "name": "dayCountConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum BusinessDayConvention",
              "name": "businessDayConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum EndOfMonthConvention",
              "name": "endOfMonthConvention",
              "type": "uint8"
            },
            {
              "internalType": "enum ScalingEffect",
              "name": "scalingEffect",
              "type": "uint8"
            },
            {
              "internalType": "enum PenaltyType",
              "name": "penaltyType",
              "type": "uint8"
            },
            {
              "internalType": "enum FeeBasis",
              "name": "feeBasis",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "currency",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "settlementCurrency",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "marketObjectCodeRateReset",
              "type": "bytes32"
            },
            {
              "internalType": "uint256",
              "name": "contractDealDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "statusDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialExchangeDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturityDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "purchaseDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "capitalizationEndDate",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfInterestPayment",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfRateReset",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfScalingIndex",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "cycleAnchorDateOfFee",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notionalPrincipal",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nominalInterestRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "accruedInterest",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateMultiplier",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "rateSpread",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "nextResetRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "feeAccrued",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "penaltyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "delinquencyRate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "premiumDiscountAtIED",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "priceAtPurchaseDate",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "lifeFloor",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodCap",
              "type": "int256"
            },
            {
              "internalType": "int256",
              "name": "periodFloor",
              "type": "int256"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "gracePeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IP",
              "name": "delinquencyPeriod",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfInterestPayment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfRateReset",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfScalingIndex",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "uint256",
                  "name": "i",
                  "type": "uint256"
                },
                {
                  "internalType": "enum P",
                  "name": "p",
                  "type": "uint8"
                },
                {
                  "internalType": "enum S",
                  "name": "s",
                  "type": "uint8"
                },
                {
                  "internalType": "bool",
                  "name": "isSet",
                  "type": "bool"
                }
              ],
              "internalType": "struct IPS",
              "name": "cycleOfFee",
              "type": "tuple"
            }
          ],
          "internalType": "struct PAMTerms",
          "name": "terms",
          "type": "tuple"
        }
      ],
      "name": "setTerms",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506000620000276001600160e01b036200007716565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200007b565b3390565b615558806200008b6000396000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d9399431116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d939943114610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e13b36fd146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c3b6e7c211610130578063c3b6e7c21461061d578063ccfc347e14610630578063cf5aed1214610643578063d51dc3dc146106635761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e65565b61077a565b005b610339610334366004613e35565b61084f565b604051610346919061531b565b60405180910390f35b61036261035d366004613e35565b610876565b6040516103469190614978565b61032461037d366004613e65565b6108ed565b610362610390366004613e94565b610992565b6103246103a3366004613ee0565b610a31565b6103bb6103b6366004613ee0565b610ae7565b604051610346919061495d565b6103bb6103d6366004613e35565b610b64565b6103626103e9366004613e35565b610b79565b6103246103fc366004613e65565b610b8e565b61033961040f366004613e35565b610c69565b610324610422366004613ee0565b610c88565b61043a610435366004613e35565b610d2d565b6040516103469190614919565b610324610455366004613e65565b610d47565b610324610468366004613e65565b610e0e565b61036261047b366004613e94565b610ee9565b61032461048e366004614041565b610f07565b6104a66104a1366004613e35565b610fcd565b60405161034691906152dd565b6104c66104c1366004613e94565b61106b565b60405161034691906152cf565b61032461110a565b6104ee6104e9366004613e35565b611189565b604051610346929190614a3d565b61036261050a366004613e35565b6111b2565b61032461051d366004614041565b611586565b610362610530366004614065565b61163f565b61053d61164d565b60405161034691906148eb565b610362610558366004613e35565b61165c565b61036261056b366004613e94565b611671565b61058361057e366004613e94565b611692565b60405161034691906152c1565b61053d61059e366004613e35565b611731565b6103626105b1366004613e94565b611750565b6103626105c4366004613e35565b611796565b6105dc6105d7366004613e94565b611869565b604051610346929190614968565b6105fd6105f8366004613e94565b611893565b6040516103469190615280565b610324610618366004613e65565b611932565b61036261062b366004613e35565b6119ca565b6103bb61063e366004613de1565b611bc7565b610656610651366004613e94565b611bdc565b6040516103469190615400565b610362610671366004613e94565b611bfa565b610324610684366004613f5a565b611c40565b610324610697366004613e94565b611d4f565b6103246106aa366004613eb5565b611dbe565b6103626106bd366004614084565b611e5a565b6103246106d0366004613f2d565b611e78565b6106e86106e3366004613e35565b611f78565b6040516103469190614f40565b610324610703366004613de1565b611fd6565b6103bb610716366004613e65565b61202f565b61053d610729366004613e94565b612065565b61065661073c366004613e94565b6120fb565b61053d61074f366004613e35565b612191565b610324610762366004613de1565b6121b1565b610362610775366004613e35565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bb2565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a209061084190849087906148ff565b60405180910390a250505050565b6108576139eb565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bb2565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614e84565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614981565b60405180910390a1505050565b600082815260016020526040808220905163ed7210f360e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163ed7210f3916109d891908690600401614f7b565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e4d565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e35565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a28565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a55565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614ab2565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614981565b610c716139eb565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e35565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a28565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bb2565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb9061084190849087906148ff565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dd8565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614ca0565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614981565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bb2565b610f8c610f7236849003840184614420565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614978565b60405180910390a2505050565b610fd5613a85565b60008281526001602052604090819020905163f21917af60e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163f21917af9161101a9190600401614978565b6107806040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061419a565b611073613bff565b6000838152600160205260409081902090516379e3e37b60e11b815273__$2fd3b21737d5949893536d14ab59010625$__9163f3c7c6f6916110ba91908690600401614f7b565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061417f565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d46565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c22565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614978565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e19565b6112a25760405162461bcd60e51b81526004016107d390614ed8565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a03565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061451d565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906149e0565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e4d565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149a0565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061417f565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149bd565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bb2565b61160b6115f136849003840184614420565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614978565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c49565b600083815260016020526040908190209051630ef392f960e11b815273__$2fd3b21737d5949893536d14ab59010625$__91631de725f2916116e191908690600401614f7b565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614164565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051633d548cbb60e11b815273__$2fd3b21737d5949893536d14ab59010625$__91637aa91976916109d891908690600401614f7b565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c22565b60008381526001602052604090819020905163e810f93360e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163e810f933916118e291908690600401614f7b565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061411a565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614b55565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614981565b60008181526001602081905260408220015482906001600160a01b0316331480611a065750611a06816000356001600160e01b03191633610ae7565b611a225760405162461bcd60e51b81526004016107d390614bb2565b600083815260016020526040812090611a3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611a64575081155b15611a765750600093506108e7915050565b600080611a8284611189565b91509150600080611a9285611189565b9150915084861415611b07578260028801600086601c811115611ab157fe5b601c811115611abc57fe5b8152602081019190915260400160002055600487015460058801541415611aee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611b1d57508215801590611b1d57508083105b80611b4157508083148015611b415750611b368261163f565b611b3f8561163f565b105b15611b84578260028801600086601c811115611b5957fe5b601c811115611b6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611b98575060048701546005880154145b15611bae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61343016565b600082815260016020526040808220905163168bf13960e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163168bf139916109d891908690600401614f7b565b3360009081526002602052604090205460ff16611c6f5760405162461bcd60e51b81526004016107d390614c4c565b611ccd89611c82368a90038a018a614420565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc592505050368990038901896140b2565b8787876134dc565b600089815260016020526040908190209051635276dec160e01b815273__$2fd3b21737d5949893536d14ab59010625$__91635276dec191611d1491908c90600401614f89565b60006040518083038186803b158015611d2c57600080fd5b505af4158015611d40573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bb2565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bb2565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611eb55750611eb5816000356001600160e01b03191633610ae7565b611ed15760405162461bcd60e51b81526004016107d390614bb2565b600083815260016020526040908190209051635276dec160e01b815273__$2fd3b21737d5949893536d14ab59010625$__91635276dec191611f1891908690600401614f89565b60006040518083038186803b158015611f3057600080fd5b505af4158015611f44573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b611f80613c6a565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614d46565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051631501b33960e21b815273__$2fd3b21737d5949893536d14ab59010625$__91635406cce4916120ab91908690600401614f7b565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613dfd565b600082815260016020526040808220905163539dda9160e11b815273__$2fd3b21737d5949893536d14ab59010625$__9163a73bb5229161214191908690600401614f7b565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061451d565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614d46565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b0f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139eb565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139eb565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613661565b61299c826b465f7374617475734461746560a01b836020015160001b613661565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613661565b6129e7826d465f6d617475726974794461746560901b836060015160001b613661565b612a0a826d465f65786572636973654461746560901b836080015160001b613661565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613661565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613661565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613661565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613661565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613661565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613661565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613661565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613661565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613661565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613661565b612bd38269465f7175616e7469747960b01b83610200015160001b613661565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613661565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613661565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613661565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613661565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369716565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369716565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ac16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ac16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ac16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372816565b60405162461bcd60e51b81526004016107d390614d7b565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613661565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613661565b612e33826b6d617475726974794461746560a01b836060015160001b613661565b612e54826b65786572636973654461746560a01b836080015160001b613661565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613661565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613661565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613661565b612ee382691999595058d8dc9d595960b21b83610120015160001b613661565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613661565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613661565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613661565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613661565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613661565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613661565b61300582677175616e7469747960c01b83610200015160001b613661565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613661565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613661565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613661565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613661565b60008181526001602052604081206130ac613a85565b60405163f21917af60e01b815273__$2fd3b21737d5949893536d14ab59010625$__9063f21917af906130e3908590600401614978565b6107806040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613134919061419a565b82549091506000908190819081906131e09061010090046001600160a01b031663dd37acde8760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b8152600401613190939291906152ec565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e4d565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051636e9bd66f60e11b815291938493613273936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051636e9bd66f60e11b81529193849361331b936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460126000818152600287016020526040808220549051636e9bd66f60e11b8152919384936133c3936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b9150915082600014806133df575080158015906133df57508281105b8061340e575080158015906133f357508083145b801561340e57506134038461163f565b61340c8361163f565b105b1561341a578092508193505b50506134268282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613481575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d4575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350c5760405162461bcd60e51b81526004016107d390614c01565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135495760405162461bcd60e51b81526004016107d390614cfd565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e78188612da0565b6135f7818863ffffffff61294216565b613607818763ffffffff61374f16565b6001600160a01b038216156136205761362088836137b7565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364f9190614978565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367e57613692565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136c062015180875b0461382e565b600c9188016000198101838104949094019650945092509006600101915060006136ea84846138c4565b9050808211156136f8578091505b6201518087066201518061370d86868661394a565b020194508685101561371e57600080fd5b5050505092915050565b600080808061373a62015180876136ba565b91870194509250905060006136ea84846138c4565b60005b8151811015613692576000801b82828151811061376b57fe5b6020026020010151141561377e57613692565b81818151811061378a57fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613752565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382291614a28565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d55750816003145b806138e05750816005145b806138eb5750816007145b806138f65750816008145b80613901575081600a145b8061390c575081600c145b156139195750601f610a2b565b816002146139295750601e610a2b565b613932836139c6565b61393d57601c613940565b601d5b60ff169392505050565b60006107b284101561395b57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399757fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139db57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bb9613bff565b8152602001613bc6613bff565b8152602001613bd3613c49565b8152602001613be0613c49565b8152602001613bed613c49565b8152602001613bfa613c49565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613bfa565b60408051608081019091526000808252602082019081526020016000613c15565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b816154a4565b8051610a2b816154a4565b8051610a2b816154c7565b8051610a2b816154d4565b8035610a2b816154e1565b8051610a2b816154fb565b8035610a2b81615508565b8051610a2b81615508565b8051610a2b816154e1565b8051610a2b81615515565b6000608082840312156108e7578081fd5b600060808284031215613d21578081fd5b613d2b608061540e565b9050815181526020820151613d3f816154e1565b60208201526040820151613d52816154d4565b60408201526060820151613d65816154b9565b606082015292915050565b600060608284031215613d81578081fd5b613d8b606061540e565b9050815181526020820151613d9f816154e1565b60208201526040820151613db2816154b9565b604082015292915050565b600061078082840312156108e7578081fd5b600061028082840312156108e7578081fd5b600060208284031215613df2578081fd5b8135610a28816154a4565b600060208284031215613e0e578081fd5b8151610a28816154a4565b600060208284031215613e2a578081fd5b8151610a28816154b9565b600060208284031215613e46578081fd5b5035919050565b600060208284031215613e5e578081fd5b5051919050565b60008060408385031215613e77578081fd5b823591506020830135613e89816154a4565b809150509250929050565b60008060408385031215613ea6578182fd5b50508035926020909101359150565b600080600060608486031215613ec9578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613ef4578081fd5b8335925060208401356001600160e01b031981168114613f12578182fd5b91506040840135613f22816154a4565b809150509250925092565b6000806107a08385031215613f40578182fd5b82359150613f518460208501613dbd565b90509250929050565b6000806000806000806000806000610b208a8c031215613f78578687fd5b89359850613f898b60208c01613dbd565b9750613f998b6107a08c01613dcf565b9650610a208a013567ffffffffffffffff80821115613fb6578687fd5b818c018d601f820112613fc7578788fd5b8035925081831115613fd7578788fd5b8d60208085028301011115613fea578788fd5b602001975090955061400290508b610a408c01613cff565b93506140128b610ac08c01613c91565b92506140228b610ae08c01613c91565b91506140328b610b008c01613c91565b90509295985092959850929598565b6000806102a08385031215614054578182fd5b82359150613f518460208501613dcf565b600060208284031215614076578081fd5b8135601d8110610a28578182fd5b60008060408385031215614096578182fd5b8235601d81106140a4578283fd5b946020939093013593505050565b6000608082840312156140c3578081fd5b6140cd608061540e565b82356140d8816154a4565b815260208301356140e8816154a4565b602082015260408301356140fb816154a4565b6040820152606083013561410e816154a4565b60608201529392505050565b60006080828403121561412b578081fd5b614135608061540e565b82518152602083015160208201526040830151614151816154ee565b6040820152606083015161410e816154ee565b600060808284031215614175578081fd5b610a288383613d10565b600060608284031215614190578081fd5b610a288383613d70565b600061078082840312156141ac578081fd5b6105806141b88161540e565b6141c28585613cde565b81526141d18560208601613cb2565b60208201526141e38560408601613cc8565b60408201526141f58560608601613ce9565b60608201526142078560808601613ca7565b60808201526142198560a08601613cb2565b60a082015261422b8560c08601613cf4565b60c082015261423d8560e08601613cf4565b60e082015261010061425186828701613cb2565b9082015261012061426486868301613c9c565b9082015261014061427786868301613c9c565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c06143b386828701613d70565b908201526105206143c686868301613d70565b6104e08301526143d886848701613d10565b6105008301526143ec866106008701613d10565b908201526143fe856106808601613d10565b610540820152614412856107008601613d10565b610560820152949350505050565b6000610280808385031215614433578182fd5b61443c8161540e565b6144468585613cbd565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561452e578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061455557fe5b9052565b61455581615483565b61455581615490565b600d811061455557fe5b6013811061455557fe5b6004811061455557fe5b80358252602081013561459b816154e1565b6145a481615490565b602083015260408101356145b7816154d4565b6145c081615483565b604083015260608101356145d3816154b9565b8015156060840152505050565b8051825260208101516145f281615490565b6020830152604081015161460581615483565b60408301526060908101511515910152565b803582526020810135614629816154e1565b61463281615490565b60208301526040810135614645816154b9565b8015156040840152505050565b80518252602081015161466481615490565b60208301526040908101511515910152565b614681828251614575565b60208101516146936020840182614559565b5060408101516146a6604084018261456b565b5060608101516146b96060840182614562565b5060808101516146cc608084018261454b565b5060a08101516146df60a0840182614559565b5060c08101516146f260c084018261457f565b5060e081015161470560e084018261457f565b506101008082015161471982850182614559565b50506101208082015161472e8285018261453e565b5050610140808201516147438285018261453e565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c08082015161488182850182614652565b50506104e081015161052061489881850183614652565b61050083015191506148ae6105808501836145e0565b82015190506148c16106008401826145e0565b506105408101516148d66106808401826145e0565b506105608101516136926107008401826145e0565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561495157835183529284019291840191600101614935565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d8410614a4b57fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107a08101602083810190614fac908401614fa78387613cd3565b614575565b614fb6818561544f565b614fc36040850182614559565b5050614fd2604084018461545c565b614fdf606084018261456b565b50614fed6060840184615469565b614ffa6080840182614562565b506150086080840184615442565b61501560a084018261454b565b5061502360a084018461544f565b61503060c0840182614559565b5061503e60c0840184615476565b61504b60e084018261457f565b5061505960e0840184615476565b6101006150688185018361457f565b6150748186018661544f565b91505061012061508681850183614559565b61509281860186615435565b9150506101406150a48185018361453e565b6150b081860186615435565b9150506101606150c28185018361453e565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c091508085013582850152506152256104e08401828601614617565b5061523861054083016105208501614617565b61524a6105a083016105808501614589565b61525c61062083016106008501614589565b61526e6106a083016106808501614589565b610b5d61072083016107008501614589565b8151815260208083015190820152604082015160808201906152a18161549a565b604083015260608301516152b48161549a565b8060608401525092915050565b60808101610a2b82846145e0565b60608101610a2b8284614652565b6107808101610a2b8284614676565b6107c081016152fb8286614676565b83610780830152601d831061530c57fe5b826107a0830152949350505050565b60006102808201905061532f828451614562565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561542d57600080fd5b604052919050565b60008235610a28816154a4565b60008235610a28816154c7565b60008235610a28816154d4565b60008235610a28816154fb565b60008235610a28816154e1565b60008235610a2881615515565b6002811061548d57fe5b50565b6006811061548d57fe5b6005811061548d57fe5b6001600160a01b038116811461548d57600080fd5b801515811461548d57600080fd5b6009811061548d57600080fd5b6002811061548d57600080fd5b6006811061548d57600080fd5b6005811061548d57600080fd5b600d811061548d57600080fd5b6013811061548d57600080fd5b6004811061548d57600080fdfea26469706673582212208609a5c467cf5d8f290a8d2612f012905dc2a001b4b39b70349d5d6e0480cd9364736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c8063a17b75b51161019d578063d9399431116100e9578063e7dc3188116100a2578063ecef55771161007c578063ecef55771461072e578063ee43eda114610741578063f2fde38b14610754578063f52f84e1146107675761030c565b8063e7dc3188146106f5578063e8f7ca3e14610708578063eb0125591461071b5761030c565b8063d939943114610676578063d981e77314610689578063de07a1731461069c578063e05a66e0146106af578063e13b36fd146106c2578063e50e0ef7146106d55761030c565b8063ba4d2d2811610156578063c3b6e7c211610130578063c3b6e7c21461061d578063ccfc347e14610630578063cf5aed1214610643578063d51dc3dc146106635761030c565b8063ba4d2d28146105c9578063bc6a7d76146105ea578063bd1f0a6c1461060a5761030c565b8063a17b75b51461054a578063b02ca0c01461055d578063b0b4888f14610570578063b3c45ebe14610590578063b461dd4f146105a3578063b8282041146105b65761030c565b8063512872f41161025c5780636fe55baa1161021557806375e86ae4116101ef57806375e86ae4146104fc5780637d870dd41461050f578063811322fb146105225780638da5cb5b146105355761030c565b80636fe55baa146104b3578063715018a6146104d357806372540003146104db5761030c565b8063512872f4146104475780636031a0941461045a578063606aa07e1461046d57806367fe5d70146104805780636a899b9b1461046d5780636be39bda146104935761030c565b80631b126815116102c95780633549d08d116102a35780633549d08d146103ee57806337462dba1461040157806339262e87146104145780633adc277a146104275761030c565b80631b126815146103a857806327258b22146103c857806328e0f8a9146103db5761030c565b806303a81a2a1461031157806309648a9d146103265780630c5b75a41461034f5780630d62037a1461036f578063135b9f4d146103825780631717e86714610395575b600080fd5b61032461031f366004613e65565b61077a565b005b610339610334366004613e35565b61084f565b604051610346919061531b565b60405180910390f35b61036261035d366004613e35565b610876565b6040516103469190614978565b61032461037d366004613e65565b6108ed565b610362610390366004613e94565b610992565b6103246103a3366004613ee0565b610a31565b6103bb6103b6366004613ee0565b610ae7565b604051610346919061495d565b6103bb6103d6366004613e35565b610b64565b6103626103e9366004613e35565b610b79565b6103246103fc366004613e65565b610b8e565b61033961040f366004613e35565b610c69565b610324610422366004613ee0565b610c88565b61043a610435366004613e35565b610d2d565b6040516103469190614919565b610324610455366004613e65565b610d47565b610324610468366004613e65565b610e0e565b61036261047b366004613e94565b610ee9565b61032461048e366004614041565b610f07565b6104a66104a1366004613e35565b610fcd565b60405161034691906152dd565b6104c66104c1366004613e94565b61106b565b60405161034691906152cf565b61032461110a565b6104ee6104e9366004613e35565b611189565b604051610346929190614a3d565b61036261050a366004613e35565b6111b2565b61032461051d366004614041565b611586565b610362610530366004614065565b61163f565b61053d61164d565b60405161034691906148eb565b610362610558366004613e35565b61165c565b61036261056b366004613e94565b611671565b61058361057e366004613e94565b611692565b60405161034691906152c1565b61053d61059e366004613e35565b611731565b6103626105b1366004613e94565b611750565b6103626105c4366004613e35565b611796565b6105dc6105d7366004613e94565b611869565b604051610346929190614968565b6105fd6105f8366004613e94565b611893565b6040516103469190615280565b610324610618366004613e65565b611932565b61036261062b366004613e35565b6119ca565b6103bb61063e366004613de1565b611bc7565b610656610651366004613e94565b611bdc565b6040516103469190615400565b610362610671366004613e94565b611bfa565b610324610684366004613f5a565b611c40565b610324610697366004613e94565b611d4f565b6103246106aa366004613eb5565b611dbe565b6103626106bd366004614084565b611e5a565b6103246106d0366004613f2d565b611e78565b6106e86106e3366004613e35565b611f78565b6040516103469190614f40565b610324610703366004613de1565b611fd6565b6103bb610716366004613e65565b61202f565b61053d610729366004613e94565b612065565b61065661073c366004613e94565b6120fb565b61053d61074f366004613e35565b612191565b610324610762366004613de1565b6121b1565b610362610775366004613e35565b612267565b6000828152600160208190526040909120015482906001600160a01b03163314806107b757506107b7816000356001600160e01b03191633610ae7565b6107dc5760405162461bcd60e51b81526004016107d390614bb2565b60405180910390fd5b6000838152600160208190526040918290200180546001600160a01b038581166001600160a01b0319831617909255915191169084907f6baefd4565218ab73b43cb6b1019ca3a06161c4fcaef25cd665aacddabc44a209061084190849087906148ff565b60405180910390a250505050565b6108576139eb565b600082815260016020526040902061086e9061227c565b90505b919050565b60008181526001602081905260408220015482906001600160a01b03163314806108b257506108b2816000356001600160e01b03191633610ae7565b6108ce5760405162461bcd60e51b81526004016107d390614bb2565b6000838152600160205260408120600601805491905591505b50919050565b610904826000356001600160e01b03191633610ae7565b6109205760405162461bcd60e51b81526004016107d390614e84565b6000828152600160205260409081902060070180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614981565b60405180910390a1505050565b600082815260016020526040808220905163ed7210f360e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163ed7210f3916109d891908690600401614f7b565b60206040518083038186803b1580156109f057600080fd5b505af4158015610a04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613e4d565b90505b92915050565b610a48836000356001600160e01b03191633610ae7565b610a645760405162461bcd60e51b81526004016107d390614e35565b60008381526001602081815260408084206001600160e01b031987168552600c0182528084206001600160a01b038616808652925292839020805460ff1916909217909155905184907face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb4786590610ada908690614a28565b60405180910390a3505050565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516845290915281205460ff1680610b5a57506000848152600160209081526040808320838052600c0182528083206001600160a01b038616845290915290205460ff165b90505b9392505050565b60009081526001602052604090205460ff1690565b60009081526001602052604090206005015490565b6000828152600160205260409020600a01546001600160a01b031680610bc65760405162461bcd60e51b81526004016107d390614a55565b336001600160a01b0382161480610bef5750610bef836000356001600160e01b03191633610ae7565b610c0b5760405162461bcd60e51b81526004016107d390614ab2565b60008381526001602052604090819020600a0180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614981565b610c716139eb565b600082815260016020526040902061086e90612574565b610c9f836000356001600160e01b03191633610ae7565b610cbb5760405162461bcd60e51b81526004016107d390614e35565b60008381526001602090815260408083206001600160e01b031986168452600c0182528083206001600160a01b038516808552925291829020805460ff19169055905184907f42b1b0e7392ad606bb4f5b003296aba62f16e43aa9372f1f40c1522fa2655ffa90610ada908690614a28565b600081815260016020526040902060609061086e90612896565b6000828152600160208190526040909120015482906001600160a01b0316331480610d845750610d84816000356001600160e01b03191633610ae7565b610da05760405162461bcd60e51b81526004016107d390614bb2565b6000838152600160205260409081902080546001600160a01b03858116610100908102610100600160a81b03198416179093559251919004919091169084907fdaa92ae0693b6616f14ef5db4b7ee053d3234c0d03f7a1885589c6a6c2c75bdb9061084190849087906148ff565b6000828152600160205260409020600801546001600160a01b031680610e465760405162461bcd60e51b81526004016107d390614dd8565b336001600160a01b0382161480610e6f5750610e6f836000356001600160e01b03191633610ae7565b610e8b5760405162461bcd60e51b81526004016107d390614ca0565b6000838152600160205260409081902060080180546001600160a01b0319166001600160a01b038516179055517f66808241563a07166fd47b523591fa432148706dc0ddd255d49b69e71f1721ce9061098590859084908690614981565b6000828152600160205260408120610a28908363ffffffff61292c16565b6000828152600160208190526040909120015482906001600160a01b0316331480610f445750610f44816000356001600160e01b03191633610ae7565b610f605760405162461bcd60e51b81526004016107d390614bb2565b610f8c610f7236849003840184614420565b60008581526001602052604090209063ffffffff61294216565b827f0c71209d22d4c70a40140b94deee55f1f54a9353e3d5d5a4ddfb45fcddcf720f8360200135604051610fc09190614978565b60405180910390a2505050565b610fd5613a85565b60008281526001602052604090819020905163f21917af60e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163f21917af9161101a9190600401614978565b6107806040518083038186803b15801561103357600080fd5b505af4158015611047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061419a565b611073613bff565b6000838152600160205260409081902090516379e3e37b60e11b815273__$2fd3b21737d5949893536d14ab59010625$__9163f3c7c6f6916110ba91908690600401614f7b565b60606040518083038186803b1580156110d257600080fd5b505af41580156110e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061417f565b611112612c70565b6000546001600160a01b0390811691161461113f5760405162461bcd60e51b81526004016107d390614d46565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000808060f884901c601c81111561119d57fe5b92505067ffffffffffffffff83169050915091565b60006111bc613c22565b6111dc8372636f6e74726163745265666572656e63655f3160681b611893565b8051909150158015906111fe57506003816060015160048111156111fc57fe5b145b1561157d5780516020820151604051631392c59160e11b81526001600160a01b038216906327258b2290611236908590600401614978565b60206040518083038186803b15801561124e57600080fd5b505afa158015611262573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112869190613e19565b6112a25760405162461bcd60e51b81526004016107d390614ed8565b60006112bd866b65786572636973654461746560a01b610ee9565b905060006112e4877518dc99591a5d115d995b9d151e5c1950dbdd995c995960521b6120fb565b60ff1660058111156112f257fe5b90506000836001600160a01b031663cf5aed12866040518263ffffffff1660e01b81526004016113229190614a03565b60206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611372919061451d565b60ff16600581111561138057fe5b90506000846001600160a01b031663606aa07e876040518263ffffffff1660e01b81526004016113b091906149e0565b60206040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190613e4d565b9050831561142157611413601b42611e5a565b975050505050505050610871565b600083600581111561142f57fe5b14158015611452575082600581111561144457fe5b82600581111561145057fe5b145b1561157657600182600581111561146557fe5b141561147657611413601a82611e5a565b600282600581111561148457fe5b141561152e57611492613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149a0565b60606040518083038186803b1580156114d657600080fd5b505afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150e919061417f565b905061151f601a6106bd8385612c74565b98505050505050505050610871565b600382600581111561153c57fe5b14156115765761154a613bff565b6040516337f2add560e11b81526001600160a01b03871690636fe55baa906114be908a906004016149bd565b5050505050505b50600092915050565b6000828152600160208190526040909120015482906001600160a01b03163314806115c357506115c3816000356001600160e01b03191633610ae7565b6115df5760405162461bcd60e51b81526004016107d390614bb2565b61160b6115f136849003840184614420565b60008581526001602052604090209063ffffffff612da016565b827fad3970329ffaec63d947adc6077368479a4be7f09f2e7ba1b13852f8405b3ec68360200135604051610fc09190614978565b600081601c81111561086e57fe5b6000546001600160a01b031690565b60009081526001602052604090206004015490565b60009182526001602090815260408084209284526003909201905290205490565b61169a613c49565b600083815260016020526040908190209051630ef392f960e11b815273__$2fd3b21737d5949893536d14ab59010625$__91631de725f2916116e191908690600401614f7b565b60806040518083038186803b1580156116f957600080fd5b505af415801561170d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190614164565b600090815260016020819052604090912001546001600160a01b031690565b6000828152600160205260408082209051633d548cbb60e11b815273__$2fd3b21737d5949893536d14ab59010625$__91637aa91976916109d891908690600401614f7b565b6000818152600160205260408120816117ae84613096565b600583015460009081526003840160205260409020546004840154919250901580156117d8575081155b156117ea575060009250610871915050565b6000806117f684611189565b9150915060008061180685611189565b9150915080600014806118225750821580159061182257508083105b8061184657508083148015611846575061183b8261163f565b6118448561163f565b105b1561185a5785975050505050505050610871565b84975050505050505050610871565b6000918252600160208181526040808520938552600f90930190529120805491015460ff90911691565b61189b613c22565b60008381526001602052604090819020905163e810f93360e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163e810f933916118e291908690600401614f7b565b60806040518083038186803b1580156118fa57600080fd5b505af415801561190e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061411a565b611949826000356001600160e01b03191633610ae7565b6119655760405162461bcd60e51b81526004016107d390614b55565b6000828152600160205260409081902060090180546001600160a01b038481166001600160a01b031983161790925591519116907fa7f38588f02421aa73988ed359aee27363c896e7cc3b6e634e4357f7ee408e259061098590859084908690614981565b60008181526001602081905260408220015482906001600160a01b0316331480611a065750611a06816000356001600160e01b03191633610ae7565b611a225760405162461bcd60e51b81526004016107d390614bb2565b600083815260016020526040812090611a3a85613096565b60058301546000908152600384016020526040902054600484015491925090158015611a64575081155b15611a765750600093506108e7915050565b600080611a8284611189565b91509150600080611a9285611189565b9150915084861415611b07578260028801600086601c811115611ab157fe5b601c811115611abc57fe5b8152602081019190915260400160002055600487015460058801541415611aee5750600097506108e795505050505050565b5050506005909301805460010190555092506108e79050565b801580611b1d57508215801590611b1d57508083105b80611b4157508083148015611b415750611b368261163f565b611b3f8561163f565b105b15611b84578260028801600086601c811115611b5957fe5b601c811115611b6457fe5b8152602081019190915260400160002055509396506108e7945050505050565b801580611b98575060048701546005880154145b15611bae5750600097506108e795505050505050565b50505060059093018054600101905593506108e7915050565b60026020526000908152604090205460ff1681565b6000828152600160205260408120610a28908363ffffffff61343016565b600082815260016020526040808220905163168bf13960e01b815273__$2fd3b21737d5949893536d14ab59010625$__9163168bf139916109d891908690600401614f7b565b3360009081526002602052604090205460ff16611c6f5760405162461bcd60e51b81526004016107d390614c4c565b611ccd89611c82368a90038a018a614420565b888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc592505050368990038901896140b2565b8787876134dc565b600089815260016020526040908190209051635276dec160e01b815273__$2fd3b21737d5949893536d14ab59010625$__91635276dec191611d1491908c90600401614f89565b60006040518083038186803b158015611d2c57600080fd5b505af4158015611d40573d6000803e3d6000fd5b50505050505050505050505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611d8c5750611d8c816000356001600160e01b03191633610ae7565b611da85760405162461bcd60e51b81526004016107d390614bb2565b5060009182526001602052604090912060060155565b6000838152600160208190526040909120015483906001600160a01b0316331480611dfb5750611dfb816000356001600160e01b03191633610ae7565b611e175760405162461bcd60e51b81526004016107d390614bb2565b50604080518082018252600180825260208083019485526000968752818152838720958752600f90950190945293209251835460ff191690151517835551910155565b60008160f884601c811115611e6b57fe5b60ff16901b179392505050565b6000828152600160208190526040909120015482906001600160a01b0316331480611eb55750611eb5816000356001600160e01b03191633610ae7565b611ed15760405162461bcd60e51b81526004016107d390614bb2565b600083815260016020526040908190209051635276dec160e01b815273__$2fd3b21737d5949893536d14ab59010625$__91635276dec191611f1891908690600401614f89565b60006040518083038186803b158015611f3057600080fd5b505af4158015611f44573d6000803e3d6000fd5b50506040518592507fb777acf68d226f3c8ab6f398cfb9a320e6fe8e92f5d2f0b4f69bc8ebab3b70cb9150600090a2505050565b611f80613c6a565b50600090815260016020908152604091829020825160808101845260078201546001600160a01b03908116825260088301548116938201939093526009820154831693810193909352600a015416606082015290565b611fde612c70565b6000546001600160a01b0390811691161461200b5760405162461bcd60e51b81526004016107d390614d46565b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6000918252600160209081526040808420848052600c0182528084206001600160a01b0393909316845291905290205460ff1690565b6000828152600160205260408082209051631501b33960e21b815273__$2fd3b21737d5949893536d14ab59010625$__91635406cce4916120ab91908690600401614f7b565b60206040518083038186803b1580156120c357600080fd5b505af41580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a289190613dfd565b600082815260016020526040808220905163539dda9160e11b815273__$2fd3b21737d5949893536d14ab59010625$__9163a73bb5229161214191908690600401614f7b565b60206040518083038186803b15801561215957600080fd5b505af415801561216d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a28919061451d565b60009081526001602052604090205461010090046001600160a01b031690565b6121b9612c70565b6000546001600160a01b039081169116146121e65760405162461bcd60e51b81526004016107d390614d46565b6001600160a01b03811661220c5760405162461bcd60e51b81526004016107d390614b0f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526001602052604090206006015490565b6122846139eb565b604080516102808101825272636f6e7472616374506572666f726d616e636560681b6000908152600e85016020529190912054819060f81c60058111156122c757fe5b60058111156122d257fe5b8152697374617475734461746560b01b6000908152600e8501602081815260408084205482860152706e6f6e506572666f726d696e674461746560781b845282825280842054818601526b6d617475726974794461746560a01b84528282528084205460608601526b65786572636973654461746560a01b84528282528084205460808601526e7465726d696e6174696f6e4461746560881b84528282528084205460a08601526c6c617374436f75706f6e44617960981b84528282528084205460c0860152701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b84528282528084205460e08601526e1858d8dc9d5959125b9d195c995cdd608a1b845282825280842054610100860152691999595058d8dc9d595960b21b845282825280842054610120860152726e6f6d696e616c496e7465726573745261746560681b8452828252808420546101408601527834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b845282825280842054610160860152783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b8452828252808420546101808601527f6e6578745072696e636970616c526564656d7074696f6e5061796d656e7400008452828252808420546101a08601526d195e195c98da5cd9505b5bdd5b9d60921b8452828252808420546101c08601526f65786572636973655175616e7469747960801b8452828252808420546101e0860152677175616e7469747960c01b8452828252808420546102008601527018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b8452828252808420546102208601526b36b0b933b4b72330b1ba37b960a11b8452828252808420546102408601526f30b2353ab9ba36b2b73a2330b1ba37b960811b8452919052902054610260909101529050919050565b61257c6139eb565b604080516102808101825274465f636f6e7472616374506572666f726d616e636560581b6000908152600e85016020529190912054819060f81c60058111156125c157fe5b60058111156125cc57fe5b81526b465f7374617475734461746560a01b6000908152600e850160208181526040808420548286015272465f6e6f6e506572666f726d696e674461746560681b845282825280842054818601526d465f6d617475726974794461746560901b84528282528084205460608601526d465f65786572636973654461746560901b845282825280842054608086015270465f7465726d696e6174696f6e4461746560781b84528282528084205460a08601526e465f6c617374436f75706f6e44617960881b84528282528084205460c0860152721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b84528282528084205460e0860152701197d858d8dc9d5959125b9d195c995cdd607a1b8452828252808420546101008601526b1197d999595058d8dc9d595960a21b84528282528084205461012086015274465f6e6f6d696e616c496e7465726573745261746560581b8452828252808420546101408601527f465f696e7465726573745363616c696e674d756c7469706c69657200000000008452828252808420546101608601527f465f6e6f74696f6e616c5363616c696e674d756c7469706c69657200000000008452828252808420546101808601527f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e748452828252808420546101a08601526f1197d95e195c98da5cd9505b5bdd5b9d60821b8452828252808420546101c086015271465f65786572636973655175616e7469747960701b8452828252808420546101e086015269465f7175616e7469747960b01b845282825280842054610200860152721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b8452828252808420546102208601526d232fb6b0b933b4b72330b1ba37b960911b84528282528084205461024086015271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b8452919052902054610260909101529050919050565b606080826002016002015467ffffffffffffffff811180156128b757600080fd5b506040519080825280602002602001820160405280156128e1578160200160208202803683370190505b50905060005b6004840154811015612925576000818152600385016020526040902054825183908390811061291257fe5b60209081029190910101526001016128e7565b5092915050565b6000908152600e91909101602052604090205490565b61297b8274465f636f6e7472616374506572666f726d616e636560581b60f88460000151600581111561297157fe5b60ff16901b613661565b61299c826b465f7374617475734461746560a01b836020015160001b613661565b6129c48272465f6e6f6e506572666f726d696e674461746560681b836040015160001b613661565b6129e7826d465f6d617475726974794461746560901b836060015160001b613661565b612a0a826d465f65786572636973654461746560901b836080015160001b613661565b612a308270465f7465726d696e6174696f6e4461746560781b8360a0015160001b613661565b612a5882721197db9bdd1a5bdb985b141c9a5b98da5c185b606a1b8360e0015160001b613661565b612a7f82701197d858d8dc9d5959125b9d195c995cdd607a1b83610100015160001b613661565b612aa1826b1197d999595058d8dc9d595960a21b83610120015160001b613661565b612acc8274465f6e6f6d696e616c496e7465726573745261746560581b83610140015160001b613661565b612aff827f465f696e7465726573745363616c696e674d756c7469706c696572000000000083610160015160001b613661565b612b32827f465f6e6f74696f6e616c5363616c696e674d756c7469706c696572000000000083610180015160001b613661565b612b65827f465f6e6578745072696e636970616c526564656d7074696f6e5061796d656e74836101a0015160001b613661565b612b8b826f1197d95e195c98da5cd9505b5bdd5b9d60821b836101c0015160001b613661565b612bb38271465f65786572636973655175616e7469747960701b836101e0015160001b613661565b612bd38269465f7175616e7469747960b01b83610200015160001b613661565b612bfc82721197d8dbdd5c1bdb905b5bdd5b9d119a5e1959606a1b83610220015160001b613661565b612c20826d232fb6b0b933b4b72330b1ba37b960911b83610240015160001b613661565b612c488271232fb0b2353ab9ba36b2b73a2330b1ba37b960711b83610260015160001b613661565b612c6c826e465f6c617374436f75706f6e44617960881b8360c0015160001b613661565b5050565b3390565b6000808084602001516005811115612c8857fe5b1415612ca8578351612ca190849063ffffffff61369716565b9050610a28565b600184602001516005811115612cba57fe5b1415612cd6578351612ca190849060070263ffffffff61369716565b600284602001516005811115612ce857fe5b1415612d01578351612ca190849063ffffffff6136ac16565b600384602001516005811115612d1357fe5b1415612d2f578351612ca190849060030263ffffffff6136ac16565b600484602001516005811115612d4157fe5b1415612d5d578351612ca190849060060263ffffffff6136ac16565b600584602001516005811115612d6f57fe5b1415612d88578351612ca190849063ffffffff61372816565b60405162461bcd60e51b81526004016107d390614d7b565b612dcd8272636f6e7472616374506572666f726d616e636560681b60f88460000151600581111561297157fe5b612dec82697374617475734461746560b01b836020015160001b613661565b612e1282706e6f6e506572666f726d696e674461746560781b836040015160001b613661565b612e33826b6d617475726974794461746560a01b836060015160001b613661565b612e54826b65786572636973654461746560a01b836080015160001b613661565b612e78826e7465726d696e6174696f6e4461746560881b8360a0015160001b613661565b612e9e82701b9bdd1a5bdb985b141c9a5b98da5c185b607a1b8360e0015160001b613661565b612ec3826e1858d8dc9d5959125b9d195c995cdd608a1b83610100015160001b613661565b612ee382691999595058d8dc9d595960b21b83610120015160001b613661565b612f0c82726e6f6d696e616c496e7465726573745261746560681b83610140015160001b613661565b612f3b827834b73a32b932b9ba29b1b0b634b733a6bab63a34b83634b2b960391b83610160015160001b613661565b612f6a82783737ba34b7b730b629b1b0b634b733a6bab63a34b83634b2b960391b83610180015160001b613661565b612f9d827f6e6578745072696e636970616c526564656d7074696f6e5061796d656e740000836101a0015160001b613661565b612fc1826d195e195c98da5cd9505b5bdd5b9d60921b836101c0015160001b613661565b612fe7826f65786572636973655175616e7469747960801b836101e0015160001b613661565b61300582677175616e7469747960c01b83610200015160001b613661565b61302c827018dbdd5c1bdb905b5bdd5b9d119a5e1959607a1b83610220015160001b613661565b61304e826b36b0b933b4b72330b1ba37b960a11b83610240015160001b613661565b613074826f30b2353ab9ba36b2b73a2330b1ba37b960811b83610260015160001b613661565b612c6c826c6c617374436f75706f6e44617960981b8360c0015160001b613661565b60008181526001602052604081206130ac613a85565b60405163f21917af60e01b815273__$2fd3b21737d5949893536d14ab59010625$__9063f21917af906130e3908590600401614978565b6107806040518083038186803b1580156130fc57600080fd5b505af4158015613110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613134919061419a565b82549091506000908190819081906131e09061010090046001600160a01b031663dd37acde8760028a0185600981526020019081526020016000205460096040518463ffffffff1660e01b8152600401613190939291906152ec565b60206040518083038186803b1580156131a857600080fd5b505afa1580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190613e4d565b9150915082600014806131f257508281105b8061321657508083148015613216575061320b8461163f565b6132148361163f565b105b15613222578092508193505b50508354600a6000818152600287016020526040808220549051636e9bd66f60e11b815291938493613273936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b91509150826000148061328f5750801580159061328f57508281105b806132be575080158015906132a357508083145b80156132be57506132b38461163f565b6132bc8361163f565b105b156132ca578092508193505b5050835460036000818152600287016020526040808220549051636e9bd66f60e11b81529193849361331b936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b9150915082600014806133375750801580159061333757508281105b806133665750801580159061334b57508083145b8015613366575061335b8461163f565b6133648361163f565b105b15613372578092508193505b5050835460126000818152600287016020526040808220549051636e9bd66f60e11b8152919384936133c3936101009092046001600160a01b03169263dd37acde92613190928b92916004016152ec565b9150915082600014806133df575080158015906133df57508281105b8061340e575080158015906133f357508083145b801561340e57506134038461163f565b61340c8361163f565b105b1561341a578092508193505b50506134268282611e5a565b9695505050505050565b600072636f6e7472616374506572666f726d616e636560681b821415613481575072636f6e7472616374506572666f726d616e636560681b6000908152600e8301602052604090205460f81c610a2b565b74465f636f6e7472616374506572666f726d616e636560581b8214156134d4575074465f636f6e7472616374506572666f726d616e636560581b6000908152600e8301602052604090205460f81c610a2b565b506000610a2b565b6000878152600160205260409020805460ff161561350c5760405162461bcd60e51b81526004016107d390614c01565b6001600160a01b03831660009081526002602052604090205460ff1615156001146135495760405162461bcd60e51b81526004016107d390614cfd565b805485516007830180546001600160a01b03199081166001600160a01b039384161790915560208801516008850180548316918416919091179055604088015160098501805483169184169190911790556060880151600a85018054831691841691909117905560ff199092166001908117610100600160a81b03191661010088841602178455830180549092169085161790556135e78188612da0565b6135f7818863ffffffff61294216565b613607818763ffffffff61374f16565b6001600160a01b038216156136205761362088836137b7565b7f5e73a3e4a3f69f1056f05ffd00ff11bf3835158ba0ebd5ad3b994065fcd896468860405161364f9190614978565b60405180910390a15050505050505050565b6000828152600e8401602052604090205481141561367e57613692565b6000828152600e8401602052604090208190555b505050565b620151808102820182811015610a2b57600080fd5b60008080806136c062015180875b0461382e565b600c9188016000198101838104949094019650945092509006600101915060006136ea84846138c4565b9050808211156136f8578091505b6201518087066201518061370d86868661394a565b020194508685101561371e57600080fd5b5050505092915050565b600080808061373a62015180876136ba565b91870194509250905060006136ea84846138c4565b60005b8151811015613692576000801b82828151811061376b57fe5b6020026020010151141561377e57613692565b81818151811061378a57fe5b60209081029190910181015160008381526003860190925260409091205560010160048301819055613752565b6000828152600160208181526040808420848052600c0182528084206001600160a01b0386168086529252808420805460ff19169093179092559051909184917face25d271ad11ee299595b3021629bae0349e370d7c2eb7c2dced6e4edb478659161382291614a28565b60405180910390a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161388557fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806138d55750816003145b806138e05750816005145b806138eb5750816007145b806138f65750816008145b80613901575081600a145b8061390c575081600c145b156139195750601f610a2b565b816002146139295750601e610a2b565b613932836139c6565b61393d57601c613940565b601d5b60ff169392505050565b60006107b284101561395b57600080fd5b838383600062253d8c600460036064611324600c600d19890105890101050205600c80600d19870105600c02600287030361016f028161399757fe5b0560046105b5600c600d1989010589016112c0010205617d4b8603010103039050809450505050509392505050565b6000600482061580156139db57506064820615155b8061086e57505061019090061590565b6040805161028081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805161058081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001613bb9613bff565b8152602001613bc6613bff565b8152602001613bd3613c49565b8152602001613be0613c49565b8152602001613bed613c49565b8152602001613bfa613c49565b905290565b6040805160608101909152600080825260208201905b8152600060209091015290565b60408051608081018252600080825260208201819052909182019081526020016000613bfa565b60408051608081019091526000808252602082019081526020016000613c15565b60408051608081018252600080825260208201819052918101829052606081019190915290565b8035610a2b816154a4565b8051610a2b816154a4565b8051610a2b816154c7565b8051610a2b816154d4565b8035610a2b816154e1565b8051610a2b816154fb565b8035610a2b81615508565b8051610a2b81615508565b8051610a2b816154e1565b8051610a2b81615515565b6000608082840312156108e7578081fd5b600060808284031215613d21578081fd5b613d2b608061540e565b9050815181526020820151613d3f816154e1565b60208201526040820151613d52816154d4565b60408201526060820151613d65816154b9565b606082015292915050565b600060608284031215613d81578081fd5b613d8b606061540e565b9050815181526020820151613d9f816154e1565b60208201526040820151613db2816154b9565b604082015292915050565b600061078082840312156108e7578081fd5b600061028082840312156108e7578081fd5b600060208284031215613df2578081fd5b8135610a28816154a4565b600060208284031215613e0e578081fd5b8151610a28816154a4565b600060208284031215613e2a578081fd5b8151610a28816154b9565b600060208284031215613e46578081fd5b5035919050565b600060208284031215613e5e578081fd5b5051919050565b60008060408385031215613e77578081fd5b823591506020830135613e89816154a4565b809150509250929050565b60008060408385031215613ea6578182fd5b50508035926020909101359150565b600080600060608486031215613ec9578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215613ef4578081fd5b8335925060208401356001600160e01b031981168114613f12578182fd5b91506040840135613f22816154a4565b809150509250925092565b6000806107a08385031215613f40578182fd5b82359150613f518460208501613dbd565b90509250929050565b6000806000806000806000806000610b208a8c031215613f78578687fd5b89359850613f898b60208c01613dbd565b9750613f998b6107a08c01613dcf565b9650610a208a013567ffffffffffffffff80821115613fb6578687fd5b818c018d601f820112613fc7578788fd5b8035925081831115613fd7578788fd5b8d60208085028301011115613fea578788fd5b602001975090955061400290508b610a408c01613cff565b93506140128b610ac08c01613c91565b92506140228b610ae08c01613c91565b91506140328b610b008c01613c91565b90509295985092959850929598565b6000806102a08385031215614054578182fd5b82359150613f518460208501613dcf565b600060208284031215614076578081fd5b8135601d8110610a28578182fd5b60008060408385031215614096578182fd5b8235601d81106140a4578283fd5b946020939093013593505050565b6000608082840312156140c3578081fd5b6140cd608061540e565b82356140d8816154a4565b815260208301356140e8816154a4565b602082015260408301356140fb816154a4565b6040820152606083013561410e816154a4565b60608201529392505050565b60006080828403121561412b578081fd5b614135608061540e565b82518152602083015160208201526040830151614151816154ee565b6040820152606083015161410e816154ee565b600060808284031215614175578081fd5b610a288383613d10565b600060608284031215614190578081fd5b610a288383613d70565b600061078082840312156141ac578081fd5b6105806141b88161540e565b6141c28585613cde565b81526141d18560208601613cb2565b60208201526141e38560408601613cc8565b60408201526141f58560608601613ce9565b60608201526142078560808601613ca7565b60808201526142198560a08601613cb2565b60a082015261422b8560c08601613cf4565b60c082015261423d8560e08601613cf4565b60e082015261010061425186828701613cb2565b9082015261012061426486868301613c9c565b9082015261014061427786868301613c9c565b90820152610160848101519082015261018080850151908201526101a080850151908201526101c080850151908201526101e08085015190820152610200808501519082015261022080850151908201526102408085015190820152610260808501519082015261028080850151908201526102a080850151908201526102c080850151908201526102e08085015190820152610300808501519082015261032080850151908201526103408085015190820152610360808501519082015261038080850151908201526103a080850151908201526103c080850151908201526103e08085015190820152610400808501519082015261042080850151908201526104408085015190820152610460808501519082015261048080850151908201526104a080850151908201526104c06143b386828701613d70565b908201526105206143c686868301613d70565b6104e08301526143d886848701613d10565b6105008301526143ec866106008701613d10565b908201526143fe856106808601613d10565b610540820152614412856107008601613d10565b610560820152949350505050565b6000610280808385031215614433578182fd5b61443c8161540e565b6144468585613cbd565b81526020848101359082015260408085013590820152606080850135908201526080808501359082015260a0808501359082015260c0808501359082015260e08085013590820152610100808501359082015261012080850135908201526101408085013590820152610160808501359082015261018080850135908201526101a080850135908201526101c080850135908201526101e080850135908201526102008085013590820152610220808501359082015261024080850135908201526102609384013593810193909352509092915050565b60006020828403121561452e578081fd5b815160ff81168114610a28578182fd5b6001600160a01b03169052565b6009811061455557fe5b9052565b61455581615483565b61455581615490565b600d811061455557fe5b6013811061455557fe5b6004811061455557fe5b80358252602081013561459b816154e1565b6145a481615490565b602083015260408101356145b7816154d4565b6145c081615483565b604083015260608101356145d3816154b9565b8015156060840152505050565b8051825260208101516145f281615490565b6020830152604081015161460581615483565b60408301526060908101511515910152565b803582526020810135614629816154e1565b61463281615490565b60208301526040810135614645816154b9565b8015156040840152505050565b80518252602081015161466481615490565b60208301526040908101511515910152565b614681828251614575565b60208101516146936020840182614559565b5060408101516146a6604084018261456b565b5060608101516146b96060840182614562565b5060808101516146cc608084018261454b565b5060a08101516146df60a0840182614559565b5060c08101516146f260c084018261457f565b5060e081015161470560e084018261457f565b506101008082015161471982850182614559565b50506101208082015161472e8285018261453e565b5050610140808201516147438285018261453e565b5050610160818101519083015261018080820151908301526101a080820151908301526101c080820151908301526101e08082015190830152610200808201519083015261022080820151908301526102408082015190830152610260808201519083015261028080820151908301526102a080820151908301526102c080820151908301526102e08082015190830152610300808201519083015261032080820151908301526103408082015190830152610360808201519083015261038080820151908301526103a080820151908301526103c080820151908301526103e08082015190830152610400808201519083015261042080820151908301526104408082015190830152610460808201519083015261048080820151908301526104a080820151908301526104c08082015161488182850182614652565b50506104e081015161052061489881850183614652565b61050083015191506148ae6105808501836145e0565b82015190506148c16106008401826145e0565b506105408101516148d66106808401826145e0565b506105608101516136926107008401826145e0565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561495157835183529284019291840191600101614935565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9283526001600160a01b03918216602084015216604082015260600190565b9081526a19dc9858d954195c9a5bd960aa1b602082015260400190565b9081527019195b1a5b9c5d595b98de54195c9a5bd9607a1b602082015260400190565b908152706e6f6e506572666f726d696e674461746560781b602082015260400190565b90815272636f6e7472616374506572666f726d616e636560681b602082015260400190565b6001600160e01b031991909116815260200190565b60408101601d8410614a4b57fe5b9281526020015290565b6020808252603e908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20454e5452595f444f45535f4e4f545f45584953540000606082015260800190565b6020808252603d908201527f417373657452656769737472792e736574436f756e746572706172747942656e60408201527f65666963696172793a20554e415554484f52495a45445f53454e444552000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526039908201527f417373657452656769737472792e736574436f756e74657270617274794f626c60408201527f69676f723a20554e415554484f52495a45445f53454e44455200000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e6973417574686f72697a65643a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b6020808252602b908201527f4261736552656769737472792e73657441737365743a2041535345545f414c5260408201526a454144595f45584953545360a81b606082015260800190565b60208082526034908201527f4261736552656769737472792e6f6e6c79417070726f7665644163746f72733a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526038908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20554e415554484f52495a45445f53454e4445520000000000000000606082015260800190565b60208082526029908201527f4261736552656769737472792e73657441737365743a204143544f525f4e4f5460408201526817d054141493d5915160ba1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526037908201527f506572696f645574696c732e67657454696d657374616d70506c75735065726960408201527f6f643a204154545249425554455f4e4f545f464f554e44000000000000000000606082015260800190565b60208082526039908201527f417373657452656769737472792e73657443726561746f7242656e656669636960408201527f6172793a20454e5452595f444f45535f4e4f545f455849535400000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c2e7265766f6b654163636573733a20554e415560408201526e2a2427a924ad22a22fa9a2a72222a960891b606082015260800190565b60208082526034908201527f417373657452656769737472792e73657443726561746f724f626c69676f723a604082015273102aa720aaaa2427a924ad22a22fa9a2a72222a960611b606082015260800190565b60208082526042908201527f41737365744163746f722e6765744e657874556e6465726c79696e674576656e60408201527f743a20554e4445524c59494e475f41535345545f444f45535f4e4f545f45584960608201526114d560f21b608082015260a00190565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b918252602082015260400190565b8281526107a08101602083810190614fac908401614fa78387613cd3565b614575565b614fb6818561544f565b614fc36040850182614559565b5050614fd2604084018461545c565b614fdf606084018261456b565b50614fed6060840184615469565b614ffa6080840182614562565b506150086080840184615442565b61501560a084018261454b565b5061502360a084018461544f565b61503060c0840182614559565b5061503e60c0840184615476565b61504b60e084018261457f565b5061505960e0840184615476565b6101006150688185018361457f565b6150748186018661544f565b91505061012061508681850183614559565b61509281860186615435565b9150506101406150a48185018361453e565b6150b081860186615435565b9150506101606150c28185018361453e565b61018091508085013582850152506101a081850135818501526101c091508085013582850152506101e08185013581850152610200915080850135828501525061022081850135818501526102409150808501358285015250610260818501358185015261028091508085013582850152506102a081850135818501526102c091508085013582850152506102e08185013581850152610300915080850135828501525061032081850135818501526103409150808501358285015250610360818501358185015261038091508085013582850152506103a081850135818501526103c091508085013582850152506103e08185013581850152610400915080850135828501525061042081850135818501526104409150808501358285015250610460818501358185015261048091508085013582850152506104a081850135818501526104c091508085013582850152506152256104e08401828601614617565b5061523861054083016105208501614617565b61524a6105a083016105808501614589565b61525c61062083016106008501614589565b61526e6106a083016106808501614589565b610b5d61072083016107008501614589565b8151815260208083015190820152604082015160808201906152a18161549a565b604083015260608301516152b48161549a565b8060608401525092915050565b60808101610a2b82846145e0565b60608101610a2b8284614652565b6107808101610a2b8284614676565b6107c081016152fb8286614676565b83610780830152601d831061530c57fe5b826107a0830152949350505050565b60006102808201905061532f828451614562565b6020838101519083015260408084015190830152606080840151908301526080808401519083015260a0808401519083015260c0808401519083015260e08084015190830152610100808401519083015261012080840151908301526101408084015190830152610160808401519083015261018080840151908301526101a080840151908301526101c080840151908301526101e0808401519083015261020080840151908301526102208084015190830152610240808401519083015261026092830151929091019190915290565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561542d57600080fd5b604052919050565b60008235610a28816154a4565b60008235610a28816154c7565b60008235610a28816154d4565b60008235610a28816154fb565b60008235610a28816154e1565b60008235610a2881615515565b6002811061548d57fe5b50565b6006811061548d57fe5b6005811061548d57fe5b6001600160a01b038116811461548d57600080fd5b801515811461548d57600080fd5b6009811061548d57600080fd5b6002811061548d57600080fd5b6006811061548d57600080fd5b6005811061548d57600080fd5b600d811061548d57600080fd5b6013811061548d57600080fd5b6004811061548d57600080fdfea26469706673582212208609a5c467cf5d8f290a8d2612f012905dc2a001b4b39b70349d5d6e0480cd9364736f6c634300060b0033",
  "linkReferences": {
    "contracts/Core/PAM/PAMEncoder.sol": {
      "PAMEncoder": [
        {
          "length": 20,
          "start": 2618
        },
        {
          "length": 20,
          "start": 4222
        },
        {
          "length": 20,
          "start": 4380
        },
        {
          "length": 20,
          "start": 5955
        },
        {
          "length": 20,
          "start": 6136
        },
        {
          "length": 20,
          "start": 6468
        },
        {
          "length": 20,
          "start": 7330
        },
        {
          "length": 20,
          "start": 7542
        },
        {
          "length": 20,
          "start": 8058
        },
        {
          "length": 20,
          "start": 8461
        },
        {
          "length": 20,
          "start": 8611
        },
        {
          "length": 20,
          "start": 12614
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/Core/PAM/PAMEncoder.sol": {
      "PAMEncoder": [
        {
          "length": 20,
          "start": 2479
        },
        {
          "length": 20,
          "start": 4083
        },
        {
          "length": 20,
          "start": 4241
        },
        {
          "length": 20,
          "start": 5816
        },
        {
          "length": 20,
          "start": 5997
        },
        {
          "length": 20,
          "start": 6329
        },
        {
          "length": 20,
          "start": 7191
        },
        {
          "length": 20,
          "start": 7403
        },
        {
          "length": 20,
          "start": 7919
        },
        {
          "length": 20,
          "start": 8322
        },
        {
          "length": 20,
          "start": 8472
        },
        {
          "length": 20,
          "start": 12475
        }
      ]
    }
  }
}
