Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16804986 | 584 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
DssSpell
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-11 */ // hevm: flattened sources of src/DssSpell.sol // SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity =0.8.16 >=0.8.16 <0.9.0; ////// lib/dss-exec-lib/src/CollateralOpts.sol // // CollateralOpts.sol -- Data structure for onboarding collateral // // Copyright (C) 2020-2022 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. /* pragma solidity ^0.8.16; */ struct CollateralOpts { bytes32 ilk; address gem; address join; address clip; address calc; address pip; bool isLiquidatable; bool isOSM; bool whitelistOSM; uint256 ilkDebtCeiling; uint256 minVaultAmount; uint256 maxLiquidationAmount; uint256 liquidationPenalty; uint256 ilkStabilityFee; uint256 startingPriceFactor; uint256 breakerTolerance; uint256 auctionDuration; uint256 permittedDrop; uint256 liquidationRatio; uint256 kprFlatReward; uint256 kprPctReward; } ////// lib/dss-exec-lib/src/DssExecLib.sol // // DssExecLib.sol -- MakerDAO Executive Spellcrafting Library // // Copyright (C) 2020-2022 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. /* pragma solidity ^0.8.16; */ /* import { CollateralOpts } from "./CollateralOpts.sol"; */ interface Initializable { function init(bytes32) external; } interface Authorizable { function rely(address) external; function deny(address) external; function setAuthority(address) external; } interface Fileable { function file(bytes32, address) external; function file(bytes32, uint256) external; function file(bytes32, bytes32, uint256) external; function file(bytes32, bytes32, address) external; } interface Drippable { function drip() external returns (uint256); function drip(bytes32) external returns (uint256); } interface Pricing { function poke(bytes32) external; } interface ERC20 { function decimals() external returns (uint8); } interface DssVat { function hope(address) external; function nope(address) external; function ilks(bytes32) external returns (uint256 Art, uint256 rate, uint256 spot, uint256 line, uint256 dust); function Line() external view returns (uint256); function suck(address, address, uint256) external; } interface ClipLike { function vat() external returns (address); function dog() external returns (address); function spotter() external view returns (address); function calc() external view returns (address); function ilk() external returns (bytes32); } interface DogLike { function ilks(bytes32) external returns (address clip, uint256 chop, uint256 hole, uint256 dirt); } interface JoinLike { function vat() external returns (address); function ilk() external returns (bytes32); function gem() external returns (address); function dec() external returns (uint256); function join(address, uint256) external; function exit(address, uint256) external; } // Includes Median and OSM functions interface OracleLike_2 { function src() external view returns (address); function lift(address[] calldata) external; function drop(address[] calldata) external; function setBar(uint256) external; function kiss(address) external; function diss(address) external; function kiss(address[] calldata) external; function diss(address[] calldata) external; function orb0() external view returns (address); function orb1() external view returns (address); } interface MomLike { function setOsm(bytes32, address) external; function setPriceTolerance(address, uint256) external; } interface RegistryLike { function add(address) external; function xlip(bytes32) external view returns (address); } // https://github.com/makerdao/dss-chain-log interface ChainlogLike { function setVersion(string calldata) external; function setIPFS(string calldata) external; function setSha256sum(string calldata) external; function getAddress(bytes32) external view returns (address); function setAddress(bytes32, address) external; function removeAddress(bytes32) external; } interface IAMLike { function ilks(bytes32) external view returns (uint256,uint256,uint48,uint48,uint48); function setIlk(bytes32,uint256,uint256,uint256) external; function remIlk(bytes32) external; function exec(bytes32) external returns (uint256); } interface LerpFactoryLike { function newLerp(bytes32 name_, address target_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address); function newIlkLerp(bytes32 name_, address target_, bytes32 ilk_, bytes32 what_, uint256 startTime_, uint256 start_, uint256 end_, uint256 duration_) external returns (address); } interface LerpLike { function tick() external returns (uint256); } interface RwaOracleLike { function bump(bytes32 ilk, uint256 val) external; } library DssExecLib { /* WARNING The following library code acts as an interface to the actual DssExecLib library, which can be found in its own deployed contract. Only trust the actual library's implementation. */ address constant public LOG = 0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F; uint256 constant internal WAD = 10 ** 18; uint256 constant internal RAY = 10 ** 27; uint256 constant internal RAD = 10 ** 45; uint256 constant internal THOUSAND = 10 ** 3; uint256 constant internal MILLION = 10 ** 6; uint256 constant internal BPS_ONE_PCT = 100; uint256 constant internal BPS_ONE_HUNDRED_PCT = 100 * BPS_ONE_PCT; uint256 constant internal RATES_ONE_HUNDRED_PCT = 1000000021979553151239153027; function vat() public view returns (address) { return getChangelogAddress("MCD_VAT"); } function end() public view returns (address) { return getChangelogAddress("MCD_END"); } function reg() public view returns (address) { return getChangelogAddress("ILK_REGISTRY"); } function autoLine() public view returns (address) { return getChangelogAddress("MCD_IAM_AUTO_LINE"); } function lerpFab() public view returns (address) { return getChangelogAddress("LERP_FAB"); } function clip(bytes32 _ilk) public view returns (address _clip) {} function flip(bytes32 _ilk) public view returns (address _flip) {} function calc(bytes32 _ilk) public view returns (address _calc) {} function getChangelogAddress(bytes32 _key) public view returns (address) {} function setAuthority(address _base, address _authority) public {} function canCast(uint40 _ts, bool _officeHours) public pure returns (bool) {} function nextCastTime(uint40 _eta, uint40 _ts, bool _officeHours) public pure returns (uint256 castTime) {} function setValue(address _base, bytes32 _what, uint256 _amt) public {} function setValue(address _base, bytes32 _ilk, bytes32 _what, uint256 _amt) public {} function setIlkDebtCeiling(bytes32 _ilk, uint256 _amount) public {} function setIlkAutoLineParameters(bytes32 _ilk, uint256 _amount, uint256 _gap, uint256 _ttl) public {} function removeIlkFromAutoLine(bytes32 _ilk) public {} function linearInterpolation(bytes32 _name, address _target, bytes32 _ilk, bytes32 _what, uint256 _startTime, uint256 _start, uint256 _end, uint256 _duration) public returns (address) {} } ////// lib/dss-exec-lib/src/DssAction.sol // // DssAction.sol -- DSS Executive Spell Actions // // Copyright (C) 2020-2022 Dai Foundation // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. /* pragma solidity ^0.8.16; */ /* import { DssExecLib } from "./DssExecLib.sol"; */ /* import { CollateralOpts } from "./CollateralOpts.sol"; */ interface OracleLike_1 { function src() external view returns (address); } abstract contract DssAction { using DssExecLib for *; // Modifier used to limit execution time when office hours is enabled modifier limited { require(DssExecLib.canCast(uint40(block.timestamp), officeHours()), "Outside office hours"); _; } // Office Hours defaults to true by default. // To disable office hours, override this function and // return false in the inherited action. function officeHours() public view virtual returns (bool) { return true; } // DssExec calls execute. We limit this function subject to officeHours modifier. function execute() external limited { actions(); } // DssAction developer must override `actions()` and place all actions to be called inside. // The DssExec function will call this subject to the officeHours limiter // By keeping this function public we allow simulations of `execute()` on the actions outside of the cast time. function actions() public virtual; // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)" function description() external view virtual returns (string memory); // Returns the next available cast time function nextCastTime(uint256 eta) external view returns (uint256 castTime) { require(eta <= type(uint40).max); castTime = DssExecLib.nextCastTime(uint40(eta), uint40(block.timestamp), officeHours()); } } ////// src/DssSpell.sol // SPDX-FileCopyrightText: © 2020 Dai Foundation <www.daifoundation.org> // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. /* pragma solidity 0.8.16; */ // import "dss-exec-lib/DssExec.sol"; /* import "dss-exec-lib/DssAction.sol"; */ interface VatLike { function Line() external view returns (uint256); function file(bytes32, uint256) external; function ilks(bytes32) external returns (uint256 Art, uint256 rate, uint256 spot, uint256 line, uint256 dust); } interface PauseAbstract { function delay() external view returns (uint256); function plot(address, bytes32, bytes calldata, uint256) external; function exec(address, bytes32, bytes calldata, uint256) external returns (bytes memory); function setDelay(uint256) external; } interface Changelog { function getAddress(bytes32) external view returns (address); } interface SpellAction { function officeHours() external view returns (bool); function description() external view returns (string memory); function nextCastTime(uint256) external view returns (uint256); } interface DirectDepositMomAbstract { function disable(address) external; } contract DssExec { Changelog constant public log = Changelog(0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F); uint256 public eta; bytes public sig; bool public done; bytes32 immutable public tag; address immutable public action; uint256 immutable public expiration; PauseAbstract immutable public pause; // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: seth keccak -- "$(wget https://<executive-vote-canonical-post> -q -O - 2>/dev/null)" function description() external view returns (string memory) { return SpellAction(action).description(); } function officeHours() external view returns (bool) { return SpellAction(action).officeHours(); } function nextCastTime() external view returns (uint256 castTime) { return SpellAction(action).nextCastTime(eta); } // @param _description A string description of the spell // @param _expiration The timestamp this spell will expire. (Ex. block.timestamp + 30 days) // @param _spellAction The address of the spell action constructor(uint256 _expiration, address _spellAction) { pause = PauseAbstract(log.getAddress("MCD_PAUSE")); expiration = _expiration; action = _spellAction; sig = abi.encodeWithSignature("execute()"); bytes32 _tag; // Required for assembly access address _action = _spellAction; // Required for assembly access assembly { _tag := extcodehash(_action) } tag = _tag; } function schedule() public { require(block.timestamp <= expiration, "This contract has expired"); require(eta == 0, "This spell has already been scheduled"); eta = block.timestamp + PauseAbstract(pause).delay(); pause.plot(action, tag, sig, eta); DirectDepositMomAbstract(log.getAddress("DIRECT_MOM")).disable( log.getAddress("DIRECT_COMPV2_DAI_PLAN") ); DirectDepositMomAbstract(log.getAddress("DIRECT_MOM")).disable( log.getAddress("DIRECT_AAVEV2_DAI_PLAN") ); } function cast() public { require(!done, "spell-already-cast"); done = true; pause.exec(action, tag, sig, eta); } } contract DssSpellAction is DssAction { // Provides a descriptive tag for bot consumption // This should be modified weekly to provide a summary of the actions // Hash: cast keccak -- "$(wget https://raw.githubusercontent.com/makerdao/community/6eb4c4f6f6978850597658d7117db2d8c0e59248/governance/votes/Executive%20vote%20-%20March%2011%2C%202023.md -q -O - 2>/dev/null)" string public constant override description = "2023-03-11 MakerDAO Executive Spell | Hash: 0xacd2e18d07ef7c0470f94f572c39eb6a60602080098a8e62b4d0d549bb456fee"; // Turn office hours off function officeHours() public pure override returns (bool) { return false; } // Many of the settings that change weekly rely on the rate accumulator // described at https://docs.makerdao.com/smart-contract-modules/rates-module // To check this yourself, use the following rate calculation (example 8%): // // $ bc -l <<< 'scale=27; e( l(1.08)/(60 * 60 * 24 * 365) )' // // A table of rates can be found at // https://ipfs.io/ipfs/QmVp4mhhbwWGTfbh2BzwQB9eiBrQBKiqcPRZCaAxNUaar6 // // uint256 internal constant X_PCT_RATE = ; uint256 internal constant MILLION = 10 ** 6; uint256 internal constant BILLION = 10 ** 9; uint256 internal constant WAD = 10 ** 18; uint256 internal constant PSM_HUNDRED_BASIS_POINTS = 100 * WAD / 10000; address internal immutable MCD_PSM_USDC_A = DssExecLib.getChangelogAddress("MCD_PSM_USDC_A"); address internal immutable MCD_PSM_PAX_A = DssExecLib.getChangelogAddress("MCD_PSM_PAX_A"); address internal immutable MCD_PAUSE = DssExecLib.getChangelogAddress("MCD_PAUSE"); function actions() public override { // Emergency Proposal: Risk and Governance Parameter Changes (11 March 2023) // https://forum.makerdao.com/t/emergency-proposal-risk-and-governance-parameter-changes-11-march-2023/20125 // Reduce UNIV2USDCETH-A, UNIV2DAIUSDC-A, GUNIV3DAIUSDC1-A and GUNIV3DAIUSDC2-A Debt Ceilings to 0 uint256 line; uint256 lineReduction; VatLike vat = VatLike(DssExecLib.vat()); (,,,line,) = vat.ilks("UNIV2USDCETH-A"); lineReduction += line; DssExecLib.removeIlkFromAutoLine("UNIV2USDCETH-A"); DssExecLib.setIlkDebtCeiling("UNIV2USDCETH-A", 0); (,,,line,) = vat.ilks("UNIV2DAIUSDC-A"); lineReduction += line; DssExecLib.removeIlkFromAutoLine("UNIV2DAIUSDC-A"); DssExecLib.setIlkDebtCeiling("UNIV2DAIUSDC-A", 0); (,,,line,) = vat.ilks("GUNIV3DAIUSDC1-A"); lineReduction += line; DssExecLib.removeIlkFromAutoLine("GUNIV3DAIUSDC1-A"); DssExecLib.setIlkDebtCeiling("GUNIV3DAIUSDC1-A", 0); (,,,line,) = vat.ilks("GUNIV3DAIUSDC2-A"); lineReduction += line; DssExecLib.removeIlkFromAutoLine("GUNIV3DAIUSDC2-A"); DssExecLib.setIlkDebtCeiling("GUNIV3DAIUSDC2-A", 0); // Decrease Global Debt Ceiling in accordance with Offboarded Ilks vat.file("Line", vat.Line() - lineReduction); // Set DC-IAM module for PSM-USDC-A, PSM-PAX-A and PSM-GUSD-A DssExecLib.setIlkAutoLineParameters("PSM-USDC-A", 10 * BILLION, 250 * MILLION, 24 hours); DssExecLib.setIlkAutoLineParameters("PSM-PAX-A", 1 * BILLION, 250 * MILLION, 24 hours); DssExecLib.setIlkAutoLineParameters("PSM-GUSD-A", 500 * MILLION, 10 * MILLION, 24 hours); // Increase PSM-USDC-A tin from 0% to 1% DssExecLib.setValue(MCD_PSM_USDC_A, "tin", PSM_HUNDRED_BASIS_POINTS); // Reduce PSM-USDP-A tin to 0% DssExecLib.setValue(MCD_PSM_PAX_A, "tin", 0); // Increase PSM-USDP-A tout to 1% DssExecLib.setValue(MCD_PSM_PAX_A, "tout", PSM_HUNDRED_BASIS_POINTS); // GSM Pause Delay Reduction to 16 Hours PauseAbstract(MCD_PAUSE).setDelay(16 hours); } } contract DssSpell is DssExec { constructor() DssExec(block.timestamp + 30 days, address(new DssSpellAction())) {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"action","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cast","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"done","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expiration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"log","outputs":[{"internalType":"contract Changelog","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextCastTime","outputs":[{"internalType":"uint256","name":"castTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"officeHours","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"contract PauseAbstract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tag","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101006040523480156200001257600080fd5b5062278d004262000024919062000247565b604051620000329062000200565b604051809103906000f0801580156200004f573d6000803e3d6000fd5b5073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b81526004016200009d90620002a8565b602060405180830381865afa158015620000bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e191906200032d565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250508160c081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506040516024016040516020818303038152906040527f61461954000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060019081620001e39190620005cf565b50600080829050803f9150816080818152505050505050620006b6565b611d298062001d5e83390190565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000254826200020e565b915062000261836200020e565b92508282019050808211156200027c576200027b62000218565b5b92915050565b7f4d43445f50415553450000000000000000000000000000000000000000000000815250565b6000602082019050620002be6000830162000282565b919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002f582620002c8565b9050919050565b6200030781620002e8565b81146200031357600080fd5b50565b6000815190506200032781620002fc565b92915050565b600060208284031215620003465762000345620002c3565b5b6000620003568482850162000316565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003e157607f821691505b602082108103620003f757620003f662000399565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000422565b6200046d868362000422565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620004b0620004aa620004a4846200020e565b62000485565b6200020e565b9050919050565b6000819050919050565b620004cc836200048f565b620004e4620004db82620004b7565b8484546200042f565b825550505050565b600090565b620004fb620004ec565b62000508818484620004c1565b505050565b5b81811015620005305762000524600082620004f1565b6001810190506200050e565b5050565b601f8211156200057f576200054981620003fd565b620005548462000412565b8101602085101562000564578190505b6200057c620005738562000412565b8301826200050d565b50505b505050565b600082821c905092915050565b6000620005a46000198460080262000584565b1980831691505092915050565b6000620005bf838362000591565b9150826002028217905092915050565b620005da826200035f565b67ffffffffffffffff811115620005f657620005f56200036a565b5b620006028254620003c8565b6200060f82828562000534565b600060209050601f83116001811462000647576000841562000632578287015190505b6200063e8582620005b1565b865550620006ae565b601f1984166200065786620003fd565b60005b8281101562000681578489015182556001820191506020850194506020810190506200065a565b86831015620006a157848901516200069d601f89168262000591565b8355505b6001600288020188555050505b505050505050565b60805160a05160c05160e0516116216200073d6000396000818161047601528181610505015281816106ac015261074c0152600081816102e501526106050152600081816102c101528181610347015281816103dd01528181610541015281816107880152610b2c0152600081816103210152818161056201526107a901526116216000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610c5b565b60405180910390f35b6100f96102bf565b6040516101069190610cbe565b60405180910390f35b6101176102e3565b6040516101249190610cf2565b60405180910390f35b610135610307565b6040516101429190610d6c565b60405180910390f35b61015361031f565b6040516101609190610da0565b60405180910390f35b610171610343565b60405161017e9190610dd6565b60405180910390f35b61018f6103d9565b60405161019c9190610e46565b60405180910390f35b6101ad610474565b6040516101ba9190610e89565b60405180910390f35b6101cb610498565b005b6101d56105f0565b6040516101e29190610dd6565b60405180910390f35b6101f3610603565b005b6101fd610b22565b60405161020a9190610cf2565b60405180910390f35b61021b610b28565b6040516102289190610cf2565b60405180910390f35b6001805461023e90610ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461026a90610ed3565b80156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190610f44565b905090565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061046f9190611097565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900460ff16156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df9061112c565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663168ccd677f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b81526004016105a594939291906111e5565b6000604051808303816000875af11580156105c4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105ed91906112d2565b50565b600260009054906101000a900460ff1681565b7f0000000000000000000000000000000000000000000000000000000000000000421115610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90611367565b60405180910390fd5b60008054146106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a1906113f9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190611445565b4261074491906114a1565b6000819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060016000546040518563ffffffff1660e01b81526004016107ec94939291906111e5565b600060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b8152600401610869906114fb565b602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190611540565b73ffffffffffffffffffffffffffffffffffffffff1663e6c09edf73da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b815260040161091090611593565b602060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611540565b6040518263ffffffff1660e01b815260040161096d9190610cbe565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b5050505073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b81526004016109ea906114fb565b602060405180830381865afa158015610a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2b9190611540565b73ffffffffffffffffffffffffffffffffffffffff1663e6c09edf73da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b8152600401610a91906115d2565b602060405180830381865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611540565b6040518263ffffffff1660e01b8152600401610aee9190610cbe565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050565b60005481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b8152600401610b859190610cf2565b602060405180830381865afa158015610ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc69190611445565b905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c05578082015181840152602081019050610bea565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c2d82610bcb565b610c378185610bd6565b9350610c47818560208601610be7565b610c5081610c11565b840191505092915050565b60006020820190508181036000830152610c758184610c22565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ca882610c7d565b9050919050565b610cb881610c9d565b82525050565b6000602082019050610cd36000830184610caf565b92915050565b6000819050919050565b610cec81610cd9565b82525050565b6000602082019050610d076000830184610ce3565b92915050565b6000819050919050565b6000610d32610d2d610d2884610c7d565b610d0d565b610c7d565b9050919050565b6000610d4482610d17565b9050919050565b6000610d5682610d39565b9050919050565b610d6681610d4b565b82525050565b6000602082019050610d816000830184610d5d565b92915050565b6000819050919050565b610d9a81610d87565b82525050565b6000602082019050610db56000830184610d91565b92915050565b60008115159050919050565b610dd081610dbb565b82525050565b6000602082019050610deb6000830184610dc7565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e1882610df1565b610e228185610dfc565b9350610e32818560208601610be7565b610e3b81610c11565b840191505092915050565b60006020820190508181036000830152610e608184610e0d565b905092915050565b6000610e7382610d39565b9050919050565b610e8381610e68565b82525050565b6000602082019050610e9e6000830184610e7a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610eeb57607f821691505b602082108103610efe57610efd610ea4565b5b50919050565b6000604051905090565b600080fd5b600080fd5b610f2181610dbb565b8114610f2c57600080fd5b50565b600081519050610f3e81610f18565b92915050565b600060208284031215610f5a57610f59610f0e565b5b6000610f6884828501610f2f565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fb382610c11565b810181811067ffffffffffffffff82111715610fd257610fd1610f7b565b5b80604052505050565b6000610fe5610f04565b9050610ff18282610faa565b919050565b600067ffffffffffffffff82111561101157611010610f7b565b5b61101a82610c11565b9050602081019050919050565b600061103a61103584610ff6565b610fdb565b90508281526020810184848401111561105657611055610f76565b5b611061848285610be7565b509392505050565b600082601f83011261107e5761107d610f71565b5b815161108e848260208601611027565b91505092915050565b6000602082840312156110ad576110ac610f0e565b5b600082015167ffffffffffffffff8111156110cb576110ca610f13565b5b6110d784828501611069565b91505092915050565b7f7370656c6c2d616c72656164792d636173740000000000000000000000000000600082015250565b6000611116601283610dfc565b9150611121826110e0565b602082019050919050565b6000602082019050818103600083015261114581611109565b9050919050565b60008190508160005260206000209050919050565b6000815461116e81610ed3565b6111788186610bd6565b9450600182166000811461119357600181146111a9576111dc565b60ff1983168652811515602002860193506111dc565b6111b28561114c565b60005b838110156111d4578154818901526001820191506020810190506111b5565b808801955050505b50505092915050565b60006080820190506111fa6000830187610caf565b6112076020830186610d91565b81810360408301526112198185611161565b90506112286060830184610ce3565b95945050505050565b600067ffffffffffffffff82111561124c5761124b610f7b565b5b61125582610c11565b9050602081019050919050565b600061127561127084611231565b610fdb565b90508281526020810184848401111561129157611290610f76565b5b61129c848285610be7565b509392505050565b600082601f8301126112b9576112b8610f71565b5b81516112c9848260208601611262565b91505092915050565b6000602082840312156112e8576112e7610f0e565b5b600082015167ffffffffffffffff81111561130657611305610f13565b5b611312848285016112a4565b91505092915050565b7f5468697320636f6e747261637420686173206578706972656400000000000000600082015250565b6000611351601983610dfc565b915061135c8261131b565b602082019050919050565b6000602082019050818103600083015261138081611344565b9050919050565b7f54686973207370656c6c2068617320616c7265616479206265656e207363686560008201527f64756c6564000000000000000000000000000000000000000000000000000000602082015250565b60006113e3602583610dfc565b91506113ee82611387565b604082019050919050565b60006020820190508181036000830152611412816113d6565b9050919050565b61142281610cd9565b811461142d57600080fd5b50565b60008151905061143f81611419565b92915050565b60006020828403121561145b5761145a610f0e565b5b600061146984828501611430565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114ac82610cd9565b91506114b783610cd9565b92508282019050808211156114cf576114ce611472565b5b92915050565b7f4449524543545f4d4f4d00000000000000000000000000000000000000000000815250565b600060208201905061150f600083016114d5565b919050565b61151d81610c9d565b811461152857600080fd5b50565b60008151905061153a81611514565b92915050565b60006020828403121561155657611555610f0e565b5b60006115648482850161152b565b91505092915050565b7f4449524543545f434f4d5056325f4441495f504c414e00000000000000000000815250565b60006020820190506115a76000830161156d565b919050565b7f4449524543545f4141564556325f4441495f504c414e00000000000000000000815250565b60006020820190506115e6600083016115ac565b91905056fea26469706673582212204aeb89ee14564db583940b878a7d911fe3f97ff8554e4e2bb4b78c4d57ff417164736f6c6343000810003360e0604052738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b81526004016200003b9062000245565b602060405180830381865af415801562000059573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200007f9190620002ca565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b8152600401620000e89062000322565b602060405180830381865af415801562000106573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012c9190620002ca565b73ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250738de6ddbcd5053d32292aaa0d2105a32d108484a663a16ed56f6040518163ffffffff1660e01b8152600401620001959062000363565b602060405180830381865af4158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d99190620002ca565b73ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152503480156200021857600080fd5b506200037e565b7f4d43445f50534d5f555344435f41000000000000000000000000000000000000815250565b60006020820190506200025b600083016200021f565b919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002928262000265565b9050919050565b620002a48162000285565b8114620002b057600080fd5b50565b600081519050620002c48162000299565b92915050565b600060208284031215620002e357620002e262000260565b5b6000620002f384828501620002b3565b91505092915050565b7f4d43445f50534d5f5041585f4100000000000000000000000000000000000000815250565b60006020820190506200033860008301620002fc565b919050565b7f4d43445f50415553450000000000000000000000000000000000000000000000815250565b600060208201905062000379600083016200033d565b919050565b60805160a05160c051611974620003b56000396000610cde015260008181610bc40152610c4e01526000610b1a01526119746000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063614619541461005c5780636e832f07146100665780637284e41614610084578063bf0fbcec146100a2578063f99e36bc146100d2575b600080fd5b6100646100dc565b005b61006e6101a6565b60405161007b9190610d89565b60405180910390f35b61008c6101ab565b6040516100999190610e34565b60405180910390f35b6100bc60048036038101906100b79190610e91565b6101c7565b6040516100c99190610ecd565b60405180910390f35b6100da610267565b005b738de6ddbcd5053d32292aaa0d2105a32d108484a66335329d4c426100ff6101a6565b6040518363ffffffff1660e01b815260040161011c929190610f17565b602060405180830381865af4158015610139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015d9190610f6c565b61019c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019390610fe5565b60405180910390fd5b6101a4610267565b565b600090565b6040518060a00160405280606e81526020016118d1606e913981565b600064ffffffffff80168211156101dd57600080fd5b738de6ddbcd5053d32292aaa0d2105a32d108484a663d255745683426102016101a6565b6040518463ffffffff1660e01b815260040161021f93929190611005565b602060405180830381865af415801561023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102609190611051565b9050919050565b6000806000738de6ddbcd5053d32292aaa0d2105a32d108484a66336569e776040518163ffffffff1660e01b8152600401602060405180830381865af41580156102b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d991906110dc565b90508073ffffffffffffffffffffffffffffffffffffffff1663d9638d366040518163ffffffff1660e01b81526004016103129061112f565b60a0604051808303816000875af1158015610331573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103559190611148565b9091929350909192509091505080935050828261037291906111f2565b9150738de6ddbcd5053d32292aaa0d2105a32d108484a663f02b0d026040518163ffffffff1660e01b81526004016103a99061124c565b60006040518083038186803b1580156103c157600080fd5b505af41580156103d5573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6639976f02b60006040518263ffffffff1660e01b815260040161041191906112aa565b60006040518083038186803b15801561042957600080fd5b505af415801561043d573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663d9638d366040518163ffffffff1660e01b8152600401610478906112f7565b60a0604051808303816000875af1158015610497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bb9190611148565b909192935090919250909150508093505082826104d891906111f2565b9150738de6ddbcd5053d32292aaa0d2105a32d108484a663f02b0d026040518163ffffffff1660e01b815260040161050f90611336565b60006040518083038186803b15801561052757600080fd5b505af415801561053b573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6639976f02b60006040518263ffffffff1660e01b8152600401610577919061134f565b60006040518083038186803b15801561058f57600080fd5b505af41580156105a3573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663d9638d366040518163ffffffff1660e01b81526004016105de9061139c565b60a0604051808303816000875af11580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106219190611148565b9091929350909192509091505080935050828261063e91906111f2565b9150738de6ddbcd5053d32292aaa0d2105a32d108484a663f02b0d026040518163ffffffff1660e01b8152600401610675906113db565b60006040518083038186803b15801561068d57600080fd5b505af41580156106a1573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6639976f02b60006040518263ffffffff1660e01b81526004016106dd91906113f4565b60006040518083038186803b1580156106f557600080fd5b505af4158015610709573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff1663d9638d366040518163ffffffff1660e01b815260040161074490611441565b60a0604051808303816000875af1158015610763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107879190611148565b909192935090919250909150508093505082826107a491906111f2565b9150738de6ddbcd5053d32292aaa0d2105a32d108484a663f02b0d026040518163ffffffff1660e01b81526004016107db90611480565b60006040518083038186803b1580156107f357600080fd5b505af4158015610807573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a6639976f02b60006040518263ffffffff1660e01b81526004016108439190611499565b60006040518083038186803b15801561085b57600080fd5b505af415801561086f573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff166329ae8114838373ffffffffffffffffffffffffffffffffffffffff1663babe8a3f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ff9190611051565b61090991906114c0565b6040518263ffffffff1660e01b8152600401610925919061151a565b600060405180830381600087803b15801561093f57600080fd5b505af1158015610953573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b085f237633b9aca00600a6109829190611541565b620f424060fa6109929190611541565b620151806040518463ffffffff1660e01b81526004016109b49392919061160b565b60006040518083038186803b1580156109cc57600080fd5b505af41580156109e0573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b085f237633b9aca006001610a0f9190611541565b620f424060fa610a1f9190611541565b620151806040518463ffffffff1660e01b8152600401610a4193929190611674565b60006040518083038186803b158015610a5957600080fd5b505af4158015610a6d573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663b085f237620f42406101f4610a9c9190611541565b620f4240600a610aac9190611541565b620151806040518463ffffffff1660e01b8152600401610ace939291906116dd565b60006040518083038186803b158015610ae657600080fd5b505af4158015610afa573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663eb3ffe9e7f0000000000000000000000000000000000000000000000000000000000000000612710670de0b6b3a76400006064610b519190611541565b610b5b919061174f565b6040518363ffffffff1660e01b8152600401610b789291906117b5565b60006040518083038186803b158015610b9057600080fd5b505af4158015610ba4573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663eb3ffe9e7f000000000000000000000000000000000000000000000000000000000000000060006040518363ffffffff1660e01b8152600401610c029291906117ea565b60006040518083038186803b158015610c1a57600080fd5b505af4158015610c2e573d6000803e3d6000fd5b50505050738de6ddbcd5053d32292aaa0d2105a32d108484a663eb3ffe9e7f0000000000000000000000000000000000000000000000000000000000000000612710670de0b6b3a76400006064610c859190611541565b610c8f919061174f565b6040518363ffffffff1660e01b8152600401610cac929190611845565b60006040518083038186803b158015610cc457600080fd5b505af4158015610cd8573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e177246e61e1006040518263ffffffff1660e01b8152600401610d3791906118b5565b600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b50505050505050565b60008115159050919050565b610d8381610d6e565b82525050565b6000602082019050610d9e6000830184610d7a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610dde578082015181840152602081019050610dc3565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e0682610da4565b610e108185610daf565b9350610e20818560208601610dc0565b610e2981610dea565b840191505092915050565b60006020820190508181036000830152610e4e8184610dfb565b905092915050565b600080fd5b6000819050919050565b610e6e81610e5b565b8114610e7957600080fd5b50565b600081359050610e8b81610e65565b92915050565b600060208284031215610ea757610ea6610e56565b5b6000610eb584828501610e7c565b91505092915050565b610ec781610e5b565b82525050565b6000602082019050610ee26000830184610ebe565b92915050565b600064ffffffffff82169050919050565b610f0281610ee8565b82525050565b610f1181610d6e565b82525050565b6000604082019050610f2c6000830185610ef9565b610f396020830184610f08565b9392505050565b610f4981610d6e565b8114610f5457600080fd5b50565b600081519050610f6681610f40565b92915050565b600060208284031215610f8257610f81610e56565b5b6000610f9084828501610f57565b91505092915050565b7f4f757473696465206f666669636520686f757273000000000000000000000000600082015250565b6000610fcf601483610daf565b9150610fda82610f99565b602082019050919050565b60006020820190508181036000830152610ffe81610fc2565b9050919050565b600060608201905061101a6000830186610ef9565b6110276020830185610ef9565b6110346040830184610f08565b949350505050565b60008151905061104b81610e65565b92915050565b60006020828403121561106757611066610e56565b5b60006110758482850161103c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006110a98261107e565b9050919050565b6110b98161109e565b81146110c457600080fd5b50565b6000815190506110d6816110b0565b92915050565b6000602082840312156110f2576110f1610e56565b5b6000611100848285016110c7565b91505092915050565b7f554e495632555344434554482d41000000000000000000000000000000000000815250565b600060208201905061114360008301611109565b919050565b600080600080600060a0868803121561116457611163610e56565b5b60006111728882890161103c565b95505060206111838882890161103c565b94505060406111948882890161103c565b93505060606111a58882890161103c565b92505060806111b68882890161103c565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111fd82610e5b565b915061120883610e5b565b92508282019050808211156112205761121f6111c3565b5b92915050565b7f554e495632555344434554482d41000000000000000000000000000000000000815250565b600060208201905061126060008301611226565b919050565b6000819050919050565b6000819050919050565b600061129461128f61128a84611265565b61126f565b610e5b565b9050919050565b6112a481611279565b82525050565b60006040820190506112be60008301611226565b6112cb602083018461129b565b92915050565b7f554e495632444149555344432d41000000000000000000000000000000000000815250565b600060208201905061130b600083016112d1565b919050565b7f554e495632444149555344432d41000000000000000000000000000000000000815250565b600060208201905061134a60008301611310565b919050565b600060408201905061136360008301611310565b611370602083018461129b565b92915050565b7f47554e49563344414955534443312d4100000000000000000000000000000000815250565b60006020820190506113b060008301611376565b919050565b7f47554e49563344414955534443312d4100000000000000000000000000000000815250565b60006020820190506113ef600083016113b5565b919050565b6000604082019050611408600083016113b5565b611415602083018461129b565b92915050565b7f47554e49563344414955534443322d4100000000000000000000000000000000815250565b60006020820190506114556000830161141b565b919050565b7f47554e49563344414955534443322d4100000000000000000000000000000000815250565b60006020820190506114946000830161145a565b919050565b60006040820190506114ad6000830161145a565b6114ba602083018461129b565b92915050565b60006114cb82610e5b565b91506114d683610e5b565b92508282039050818111156114ee576114ed6111c3565b5b92915050565b7f4c696e6500000000000000000000000000000000000000000000000000000000815250565b600060408201905061152e600083016114f4565b61153b6020830184610ebe565b92915050565b600061154c82610e5b565b915061155783610e5b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115905761158f6111c3565b5b828202905092915050565b7f50534d2d555344432d4100000000000000000000000000000000000000000000815250565b6115ca81610e5b565b82525050565b6000819050919050565b60006115f56115f06115eb846115d0565b61126f565b610e5b565b9050919050565b611605816115da565b82525050565b600060808201905061161f6000830161159b565b61162c60208301866115c1565b61163960408301856115c1565b61164660608301846115fc565b949350505050565b7f50534d2d5041582d410000000000000000000000000000000000000000000000815250565b60006080820190506116886000830161164e565b61169560208301866115c1565b6116a260408301856115c1565b6116af60608301846115fc565b949350505050565b7f50534d2d475553442d4100000000000000000000000000000000000000000000815250565b60006080820190506116f1600083016116b7565b6116fe60208301866115c1565b61170b60408301856115c1565b61171860608301846115fc565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061175a82610e5b565b915061176583610e5b565b92508261177557611774611720565b5b828204905092915050565b6117898161109e565b82525050565b7f74696e0000000000000000000000000000000000000000000000000000000000815250565b60006060820190506117ca6000830185611780565b6117d66020830161178f565b6117e360408301846115c1565b9392505050565b60006060820190506117ff6000830185611780565b61180b6020830161178f565b611818604083018461129b565b9392505050565b7f746f757400000000000000000000000000000000000000000000000000000000815250565b600060608201905061185a6000830185611780565b6118666020830161181f565b61187360408301846115c1565b9392505050565b6000819050919050565b600061189f61189a6118958461187a565b61126f565b610e5b565b9050919050565b6118af81611884565b82525050565b60006020820190506118ca60008301846118a6565b9291505056fe323032332d30332d3131204d616b657244414f20457865637574697665205370656c6c207c20486173683a20307861636432653138643037656637633034373066393466353732633339656236613630363032303830303938613865363262346430643534396262343536666565a2646970667358221220eca5973982d173863460e2e761a1d989f5613a5333b4376cdf54a984287dedad64736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80637284e4161161008c578063ae8421e111610066578063ae8421e1146101cd578063b0604a26146101eb578063f7992d85146101f5578063fe7d47bb14610213576100ce565b80637284e416146101875780638456cb59146101a557806396d373e5146101c3576100ce565b8062a7029b146100d35780630a7a1c4d146100f15780634665096d1461010f57806351973ec91461012d57806351f910661461014b5780636e832f0714610169575b600080fd5b6100db610231565b6040516100e89190610c5b565b60405180910390f35b6100f96102bf565b6040516101069190610cbe565b60405180910390f35b6101176102e3565b6040516101249190610cf2565b60405180910390f35b610135610307565b6040516101429190610d6c565b60405180910390f35b61015361031f565b6040516101609190610da0565b60405180910390f35b610171610343565b60405161017e9190610dd6565b60405180910390f35b61018f6103d9565b60405161019c9190610e46565b60405180910390f35b6101ad610474565b6040516101ba9190610e89565b60405180910390f35b6101cb610498565b005b6101d56105f0565b6040516101e29190610dd6565b60405180910390f35b6101f3610603565b005b6101fd610b22565b60405161020a9190610cf2565b60405180910390f35b61021b610b28565b6040516102289190610cf2565b60405180910390f35b6001805461023e90610ed3565b80601f016020809104026020016040519081016040528092919081815260200182805461026a90610ed3565b80156102b75780601f1061028c576101008083540402835291602001916102b7565b820191906000526020600020905b81548152906001019060200180831161029a57829003601f168201915b505050505081565b7f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a81565b7f00000000000000000000000000000000000000000000000000000000643407a781565b73da0ab1e0017debcd72be8599041a2aa3ba7e740f81565b7f428bc26713dd19de2e941c4977362becb14d321e543b26298afdefda29b8d9f481565b60007f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a73ffffffffffffffffffffffffffffffffffffffff16636e832f076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d49190610f44565b905090565b60607f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a73ffffffffffffffffffffffffffffffffffffffff16637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061046f9190611097565b905090565b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f381565b600260009054906101000a900460ff16156104e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104df9061112c565b60405180910390fd5b6001600260006101000a81548160ff0219169083151502179055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff1663168ccd677f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a7f428bc26713dd19de2e941c4977362becb14d321e543b26298afdefda29b8d9f460016000546040518563ffffffff1660e01b81526004016105a594939291906111e5565b6000604051808303816000875af11580156105c4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105ed91906112d2565b50565b600260009054906101000a900460ff1681565b7f00000000000000000000000000000000000000000000000000000000643407a7421115610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90611367565b60405180910390fd5b60008054146106aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a1906113f9565b60405180910390fd5b7f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff16636a42b8f86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190611445565b4261074491906114a1565b6000819055507f000000000000000000000000be286431454714f511008713973d3b053a2d38f373ffffffffffffffffffffffffffffffffffffffff166346d2fbbb7f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a7f428bc26713dd19de2e941c4977362becb14d321e543b26298afdefda29b8d9f460016000546040518563ffffffff1660e01b81526004016107ec94939291906111e5565b600060405180830381600087803b15801561080657600080fd5b505af115801561081a573d6000803e3d6000fd5b5050505073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b8152600401610869906114fb565b602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190611540565b73ffffffffffffffffffffffffffffffffffffffff1663e6c09edf73da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b815260040161091090611593565b602060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611540565b6040518263ffffffff1660e01b815260040161096d9190610cbe565b600060405180830381600087803b15801561098757600080fd5b505af115801561099b573d6000803e3d6000fd5b5050505073da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b81526004016109ea906114fb565b602060405180830381865afa158015610a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2b9190611540565b73ffffffffffffffffffffffffffffffffffffffff1663e6c09edf73da0ab1e0017debcd72be8599041a2aa3ba7e740f73ffffffffffffffffffffffffffffffffffffffff166321f8a7216040518163ffffffff1660e01b8152600401610a91906115d2565b602060405180830381865afa158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190611540565b6040518263ffffffff1660e01b8152600401610aee9190610cbe565b600060405180830381600087803b158015610b0857600080fd5b505af1158015610b1c573d6000803e3d6000fd5b50505050565b60005481565b60007f000000000000000000000000666a31c664ebea016575b92bd2697115096c298a73ffffffffffffffffffffffffffffffffffffffff1663bf0fbcec6000546040518263ffffffff1660e01b8152600401610b859190610cf2565b602060405180830381865afa158015610ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc69190611445565b905090565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c05578082015181840152602081019050610bea565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c2d82610bcb565b610c378185610bd6565b9350610c47818560208601610be7565b610c5081610c11565b840191505092915050565b60006020820190508181036000830152610c758184610c22565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ca882610c7d565b9050919050565b610cb881610c9d565b82525050565b6000602082019050610cd36000830184610caf565b92915050565b6000819050919050565b610cec81610cd9565b82525050565b6000602082019050610d076000830184610ce3565b92915050565b6000819050919050565b6000610d32610d2d610d2884610c7d565b610d0d565b610c7d565b9050919050565b6000610d4482610d17565b9050919050565b6000610d5682610d39565b9050919050565b610d6681610d4b565b82525050565b6000602082019050610d816000830184610d5d565b92915050565b6000819050919050565b610d9a81610d87565b82525050565b6000602082019050610db56000830184610d91565b92915050565b60008115159050919050565b610dd081610dbb565b82525050565b6000602082019050610deb6000830184610dc7565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e1882610df1565b610e228185610dfc565b9350610e32818560208601610be7565b610e3b81610c11565b840191505092915050565b60006020820190508181036000830152610e608184610e0d565b905092915050565b6000610e7382610d39565b9050919050565b610e8381610e68565b82525050565b6000602082019050610e9e6000830184610e7a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610eeb57607f821691505b602082108103610efe57610efd610ea4565b5b50919050565b6000604051905090565b600080fd5b600080fd5b610f2181610dbb565b8114610f2c57600080fd5b50565b600081519050610f3e81610f18565b92915050565b600060208284031215610f5a57610f59610f0e565b5b6000610f6884828501610f2f565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fb382610c11565b810181811067ffffffffffffffff82111715610fd257610fd1610f7b565b5b80604052505050565b6000610fe5610f04565b9050610ff18282610faa565b919050565b600067ffffffffffffffff82111561101157611010610f7b565b5b61101a82610c11565b9050602081019050919050565b600061103a61103584610ff6565b610fdb565b90508281526020810184848401111561105657611055610f76565b5b611061848285610be7565b509392505050565b600082601f83011261107e5761107d610f71565b5b815161108e848260208601611027565b91505092915050565b6000602082840312156110ad576110ac610f0e565b5b600082015167ffffffffffffffff8111156110cb576110ca610f13565b5b6110d784828501611069565b91505092915050565b7f7370656c6c2d616c72656164792d636173740000000000000000000000000000600082015250565b6000611116601283610dfc565b9150611121826110e0565b602082019050919050565b6000602082019050818103600083015261114581611109565b9050919050565b60008190508160005260206000209050919050565b6000815461116e81610ed3565b6111788186610bd6565b9450600182166000811461119357600181146111a9576111dc565b60ff1983168652811515602002860193506111dc565b6111b28561114c565b60005b838110156111d4578154818901526001820191506020810190506111b5565b808801955050505b50505092915050565b60006080820190506111fa6000830187610caf565b6112076020830186610d91565b81810360408301526112198185611161565b90506112286060830184610ce3565b95945050505050565b600067ffffffffffffffff82111561124c5761124b610f7b565b5b61125582610c11565b9050602081019050919050565b600061127561127084611231565b610fdb565b90508281526020810184848401111561129157611290610f76565b5b61129c848285610be7565b509392505050565b600082601f8301126112b9576112b8610f71565b5b81516112c9848260208601611262565b91505092915050565b6000602082840312156112e8576112e7610f0e565b5b600082015167ffffffffffffffff81111561130657611305610f13565b5b611312848285016112a4565b91505092915050565b7f5468697320636f6e747261637420686173206578706972656400000000000000600082015250565b6000611351601983610dfc565b915061135c8261131b565b602082019050919050565b6000602082019050818103600083015261138081611344565b9050919050565b7f54686973207370656c6c2068617320616c7265616479206265656e207363686560008201527f64756c6564000000000000000000000000000000000000000000000000000000602082015250565b60006113e3602583610dfc565b91506113ee82611387565b604082019050919050565b60006020820190508181036000830152611412816113d6565b9050919050565b61142281610cd9565b811461142d57600080fd5b50565b60008151905061143f81611419565b92915050565b60006020828403121561145b5761145a610f0e565b5b600061146984828501611430565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114ac82610cd9565b91506114b783610cd9565b92508282019050808211156114cf576114ce611472565b5b92915050565b7f4449524543545f4d4f4d00000000000000000000000000000000000000000000815250565b600060208201905061150f600083016114d5565b919050565b61151d81610c9d565b811461152857600080fd5b50565b60008151905061153a81611514565b92915050565b60006020828403121561155657611555610f0e565b5b60006115648482850161152b565b91505092915050565b7f4449524543545f434f4d5056325f4441495f504c414e00000000000000000000815250565b60006020820190506115a76000830161156d565b919050565b7f4449524543545f4141564556325f4441495f504c414e00000000000000000000815250565b60006020820190506115e6600083016115ac565b91905056fea26469706673582212204aeb89ee14564db583940b878a7d911fe3f97ff8554e4e2bb4b78c4d57ff417164736f6c63430008100033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.