Overview
ETH Balance
ETH Value
$0.00Latest 8 from a total of 8 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Propose Strategy | 5041874 | 188 days ago | IN | 0 ETH | 0.00000001 | ||||
| Propose Strategy | 5041590 | 188 days ago | IN | 0 ETH | 0 | ||||
| Propose Strategy | 5041456 | 188 days ago | IN | 0 ETH | 0 | ||||
| Propose Strategy | 5041428 | 188 days ago | IN | 0 ETH | 0 | ||||
| Propose Strategy | 5041398 | 188 days ago | IN | 0 ETH | 0 | ||||
| Propose Strategy | 5039449 | 188 days ago | IN | 0 ETH | 0 | ||||
| Propose Strategy | 5005828 | 189 days ago | IN | 0 ETH | 0.00000002 | ||||
| Propose Strategy | 5001221 | 189 days ago | IN | 0 ETH | 0.00000001 |
Latest 8 internal transactions
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 5041874 | 188 days ago | Contract Creation | 0 ETH | |||
| 5041590 | 188 days ago | Contract Creation | 0 ETH | |||
| 5041456 | 188 days ago | Contract Creation | 0 ETH | |||
| 5041428 | 188 days ago | Contract Creation | 0 ETH | |||
| 5041398 | 188 days ago | Contract Creation | 0 ETH | |||
| 5039449 | 188 days ago | Contract Creation | 0 ETH | |||
| 5005828 | 189 days ago | Contract Creation | 0 ETH | |||
| 5001221 | 189 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {StrategyBet} from "./StrategyBet.sol";
import {IERC20} from "./interfaces/IERC20.sol";
import {IERC4626} from "./interfaces/IERC4626.sol";
contract StrategyFactory {
event StrategyProposed(address indexed trader, address strategyBet, address[] vaults, uint256[] amounts, address[] tokens);
address public ausd; // Address of AUSD token
address public ausdVault; // Address of AUSD vault
address[] public allStrategies;
constructor(address _ausd, address _ausdVault) {
ausd = _ausd;
ausdVault = _ausdVault;
}
function proposeStrategy(
address[] calldata vaults,
uint256[] calldata amounts,
address[] calldata tokens,
uint256 objectivePercent,
uint256 duration,
uint256 commission
) external returns (address) {
require(vaults.length == amounts.length, "vaults/amounts mismatch");
for (uint i = 0; i < tokens.length; i++) {
require(IERC20(tokens[i]).allowance(address(msg.sender), address(this)) == amounts[i] && IERC20(tokens[i]).balanceOf(address(msg.sender)) >= amounts[i], "Token amount invalid");
require(IERC4626(vaults[i]).maxDeposit(address(this)) >= amounts[i], "Vault max deposit below amount");
require(IERC4626(vaults[i]).asset() == tokens[i], "Vault asset mismatch");
require(vaults[i] != ausdVault, "Vault cannot be the AUSD vault");
}
// Deploy the StrategyBet contract
StrategyBet bet = new StrategyBet(
msg.sender,
vaults,
amounts,
tokens,
ausd,
objectivePercent,
duration,
commission,
address(this),
ausdVault
);
for (uint256 i = 0; i < tokens.length; i++) {
IERC20(tokens[i]).transferFrom(msg.sender, address(bet), amounts[i]);
}
// Execute the strategy
bet.executeStrategy();
// Add the strategy to the list of all strategies
allStrategies.push(address(bet));
emit StrategyProposed(msg.sender, address(bet), vaults, amounts, tokens);
return address(bet);
}
function getAllStrategies() external view returns (address[] memory) {
return allStrategies;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {IERC20} from "./interfaces/IERC20.sol";
import {IERC4626} from "./interfaces/IERC4626.sol";
contract StrategyBet {
enum BetSide { None, Yes, No }
struct Bet {
uint256 amount;
BetSide side;
bool claimed;
}
address public trader;
address[] public vaults;
uint256[] public amounts;
address[] public tokens;
address public ausd;
uint256 public objectivePercent;
uint256 public duration;
uint256 public commission; // in basis points (e.g. 100 = 1%)
uint256 public startTime;
uint256 public lockTime;
uint256 public endTime;
uint256 public initialValue;
uint256 public finalValue;
bool public betsClosed;
bool public resolved;
bool public strategyExecuted;
BetSide winner;
address public factory;
address public ausdVault;
uint256 public yieldAmount;
mapping(address => Bet) public bets;
uint256 public totalYes;
uint256 public totalNo;
uint256 public bettingPhaseDuration;
event BetPlaced(address indexed user, BetSide side, uint256 amount);
event BetsClosed(uint256 snapshotValue);
event StrategyResolved(bool success, uint256 finalValue);
event Claimed(address indexed user, uint256 amount);
modifier onlyTrader() {
require(msg.sender == trader, "not trader");
_;
}
modifier onlyFactoryOrTrader() {
require(msg.sender == factory || msg.sender == trader, "not allowed");
_;
}
constructor(
address _trader,
address[] memory _vaults,
uint256[] memory _amounts,
address[] memory _tokens,
address _ausd,
uint256 _objectivePercent,
uint256 _duration,
uint256 _commission,
address _factory,
address _ausdVault
) {
trader = _trader;
vaults = _vaults;
amounts = _amounts;
tokens = _tokens;
ausd = _ausd;
objectivePercent = _objectivePercent;
duration = _duration;
commission = _commission;
startTime = block.timestamp;
factory = _factory;
strategyExecuted = false;
bettingPhaseDuration = 2 days;
ausdVault = _ausdVault;
}
function executeStrategy() external onlyFactoryOrTrader {
require(!strategyExecuted, "already executed");
strategyExecuted = true;
for (uint i = 0; i < vaults.length; i++) {
IERC20(tokens[i]).approve(vaults[i], amounts[i]);
IERC4626(vaults[i]).deposit(amounts[i], address(this));
}
}
// only for testing purposes to retreive test funds. Need to be removed in production
function withdrawFunds() external {
for (uint i = 0; i < vaults.length; i++) {
IERC4626(vaults[i]).withdraw(IERC4626(vaults[i]).maxWithdraw(address(this)), address(this), address(this));
IERC20(tokens[i]).transfer(trader, IERC20(tokens[i]).balanceOf(address(this)));
}
IERC20(ausd).transfer(trader, IERC20(ausd).balanceOf(address(this)));
}
// only for testing purposes to change the betting phase duration. Need to be removed in production
function changeBettingPhaseDuration(uint256 newDuration) external onlyTrader {
bettingPhaseDuration = newDuration;
startTime = block.timestamp;
}
function placeBet(bool isYes, uint256 amount) external {
require(!betsClosed, "bets closed");
require(amount > 0, "zero amount");
require(bets[msg.sender].amount == 0, "already bet");
require(IERC20(ausd).allowance(msg.sender, address(this)) >= amount, "not enough allowance");
IERC20(ausd).transferFrom(msg.sender, address(this), amount);
bets[msg.sender] = Bet({
amount: amount,
side: isYes ? BetSide.Yes : BetSide.No,
claimed: false
});
if (isYes) totalYes += amount;
else totalNo += amount;
// Deposit the AUSD into the vault
IERC20(ausd).approve(ausdVault, amount);
IERC4626(ausdVault).deposit(amount, address(this));
emit BetPlaced(msg.sender, isYes ? BetSide.Yes : BetSide.No, amount);
}
function closeBetsAndLock() external {
require(!betsClosed, "already closed");
require(block.timestamp >= startTime + bettingPhaseDuration, "betting phase not over");
betsClosed = true;
lockTime = block.timestamp;
endTime = lockTime + duration;
// Snapshot the value of the strategy
initialValue = getCurrentValue();
emit BetsClosed(initialValue);
}
function getCurrentValue() public view returns (uint256 total) {
for (uint i = 0; i < vaults.length; i++) {
uint256 balance = IERC4626(vaults[i]).balanceOf(address(this));
total += IERC4626(vaults[i]).previewRedeem(balance);
}
}
function resolveStrategy() external {
require(betsClosed, "bets not closed");
require(!resolved, "already resolved");
require(block.timestamp >= endTime, "not finished");
finalValue = getCurrentValue();
resolved = true;
// Withdraw the AUSD from the vault
yieldAmount = IERC4626(ausdVault).maxWithdraw(address(this));
IERC4626(ausdVault).withdraw(yieldAmount, address(this), address(this));
bool success = (finalValue > initialValue * (10000 + objectivePercent) / 10000);
winner = success ? BetSide.Yes : BetSide.No;
emit StrategyResolved(success, finalValue);
}
function claim() external {
require(resolved, "not resolved");
Bet storage b = bets[msg.sender];
require(!b.claimed, "already claimed");
require(b.amount > 0, "no bet");
uint256 totalWinner = winner == BetSide.Yes ? totalYes : totalNo;
uint256 totalLoser = winner == BetSide.Yes ? totalNo : totalYes;
uint256 payout = 0;
if (b.side == winner && totalWinner > 0 && yieldAmount > 0) {
int256 yield = int256(yieldAmount) - int256(totalWinner + totalLoser);
yield = yield < 0 ? int256(0) : yield;
uint256 traderCommission = yield == 0 ? 0 : (uint256(yield) * commission / 10000);
require(yieldAmount >= traderCommission, "commission underflow");
// Each winner gets their bet back plus a share of the losing side's bets
// Distribute the yield to winners, minus the commission for the trader
payout = ((b.amount / totalWinner) * (yieldAmount - traderCommission));
}
b.claimed = true;
if (payout > 0 && IERC20(ausd).balanceOf(address(this)) >= payout) {
IERC20(ausd).transfer(msg.sender, payout);
} else {
revert("not enough funds");
}
emit Claimed(msg.sender, payout);
}
function withdrawStrategy() external onlyTrader {
require(resolved, "not resolved");
require(block.timestamp >= endTime, "not finished");
for (uint i = 0; i < vaults.length; i++) {
uint256 maxWithdraw = IERC4626(vaults[i]).maxWithdraw(address(this));
IERC4626(vaults[i]).withdraw(maxWithdraw, address(this), address(this));
IERC20(tokens[i]).transfer(trader, IERC20(tokens[i]).balanceOf(address(this)));
}
if (yieldAmount <= totalNo + totalYes)
return;
// Compute the yield generated by the vault (total AUSD withdrawn - total bets on the winning side)
int256 yield = int256(yieldAmount) - int256(totalYes + totalNo);
yield = yield < 0 ? int256(0) : yield;
// The trader receives the commission on the yield
uint256 payout = uint256(yield) - (uint256(yield) * commission / 10000);
IERC20(ausd).transfer(address(trader), payout);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
function transfer(address to, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC4626 {
function deposit(uint256 assets, address receiver) external returns (uint256 shares);
function maxWithdraw(address owner) external view returns (uint256);
function withdraw(uint256 assets, address receiver, address owner) external returns (uint256 shares);
function balanceOf(address account) external view returns (uint256);
function previewRedeem(uint256 shares) external view returns (uint256 assets);
function maxDeposit(address receiver) external view returns (uint256);
function asset() external view returns (address);
}{
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"appendCBOR": true,
"bytecodeHash": "ipfs",
"useLiteralContent": false
},
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"viaIR": true
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ausd","type":"address"},{"internalType":"address","name":"_ausdVault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"trader","type":"address"},{"indexed":false,"internalType":"address","name":"strategyBet","type":"address"},{"indexed":false,"internalType":"address[]","name":"vaults","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"StrategyProposed","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allStrategies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ausd","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ausdVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"vaults","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256","name":"objectivePercent","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"commission","type":"uint256"}],"name":"proposeStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052346100305761001a610014610104565b906101a0565b610022610035565b6153226101b8823961532290f35b61003b565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100679061003f565b810190811060018060401b0382111761007f57604052565b610049565b90610097610090610035565b928361005d565b565b5f80fd5b60018060a01b031690565b6100b19061009d565b90565b6100bd816100a8565b036100c457565b5f80fd5b905051906100d5826100b4565b565b91906040838203126100ff57806100f36100fc925f86016100c8565b936020016100c8565b90565b610099565b6101226154da8038038061011781610084565b9283398101906100d7565b9091565b5f1b90565b9061013c60018060a01b0391610126565b9181191691161790565b90565b61015d6101586101629261009d565b610146565b61009d565b90565b61016e90610149565b90565b61017a90610165565b90565b90565b9061019561019061019c92610171565b61017d565b825461012b565b9055565b906101ae6101b5925f610180565b6001610180565b56fe60806040526004361015610013575b6104c4565b61001d5f3561006c565b80633a55a9c61461006757806352eb0dec14610062578063c23af8321461005d578063c3b28864146100585763e1e3dfeb0361000e5761048f565b6103c7565b6102f3565b6102a6565b61010c565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b1c90565b60018060a01b031690565b6100ae9060086100b3930261008f565b610093565b90565b906100c1915461009e565b90565b6100d060015f906100b6565b90565b60018060a01b031690565b6100e7906100d3565b90565b6100f3906100de565b9052565b919061010a905f602085019401906100ea565b565b3461013c5761011c366004610080565b6101386101276100c4565b61012f610072565b918291826100f7565b0390f35b610078565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561018b5781359167ffffffffffffffff831161018657602001926020830284011161018157565b61014d565b610149565b610145565b909182601f830112156101ca5781359167ffffffffffffffff83116101c55760200192602083028401116101c057565b61014d565b610149565b610145565b90565b6101db816101cf565b036101e257565b5f80fd5b905035906101f3826101d2565b565b9060c0828203126102a1575f82013567ffffffffffffffff811161029c578161021f918401610151565b929093602082013567ffffffffffffffff81116102975783610242918401610190565b929093604082013567ffffffffffffffff81116102925781610265918401610151565b92909361028f61027884606085016101e6565b9361028681608086016101e6565b9360a0016101e6565b90565b610141565b610141565b610141565b61007c565b346102e0576102dc6102cb6102bc3660046101f5565b97969096959195949294610c9b565b6102d3610072565b918291826100f7565b0390f35b610078565b6102f05f5f906100b6565b90565b3461032357610303366004610080565b61031f61030e6102e5565b610316610072565b918291826100f7565b0390f35b610078565b5190565b60209181520190565b60200190565b610344906100de565b9052565b906103558160209361033b565b0190565b60200190565b9061037c61037661036f84610328565b809361032c565b92610335565b905f5b81811061038c5750505090565b9091926103a561039f6001928651610348565b94610359565b910191909161037f565b6103c49160208201915f81840391015261035f565b90565b346103f7576103d7366004610080565b6103f36103e261143e565b6103ea610072565b918291826103af565b0390f35b610078565b9060208282031261041557610412915f016101e6565b90565b61007c565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6104448161042e565b82101561045e57610456600191610432565b910201905f90565b61041a565b600261046e8161042e565b82101561048b57610488916104829161043b565b906100b6565b90565b5f80fd5b346104bf576104bb6104aa6104a53660046103fc565b610463565b6104b2610072565b918291826100f7565b0390f35b610078565b5f80fd5b5f90565b5090565b5090565b60209181520190565b5f7f7661756c74732f616d6f756e7473206d69736d61746368000000000000000000910152565b61051160176020926104d4565b61051a816104dd565b0190565b6105339060208101905f818303910152610504565b90565b1561053d57565b610545610072565b62461bcd60e51b81528061055b6004820161051e565b0390fd5b90565b90565b61057961057461057e9261055f565b610562565b6101cf565b90565b600161058d91016101cf565b90565b91908110156105a0576020020190565b61041a565b6105ae816100de565b036105b557565b5f80fd5b356105c3816105a5565b90565b6105da6105d56105df926100d3565b610562565b6100d3565b90565b6105eb906105c6565b90565b6105f7906105e2565b90565b610603906105c6565b90565b61060f906105fa565b90565b61061b906105fa565b90565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061064a90610622565b810190811067ffffffffffffffff82111761066457604052565b61062c565b60e01b90565b9050519061067c826101d2565b565b9060208282031261069757610694915f0161066f565b90565b61007c565b9160206106bd9294936106b660408201965f8301906100ea565b01906100ea565b565b6106c7610072565b3d5f823e3d90fd5b91908110156106df576020020190565b61041a565b356106ee816101d2565b90565b5f7f546f6b656e20616d6f756e7420696e76616c6964000000000000000000000000910152565b61072560146020926104d4565b61072e816106f1565b0190565b6107479060208101905f818303910152610718565b90565b1561075157565b610759610072565b62461bcd60e51b81528061076f60048201610732565b0390fd5b61077c906105c6565b90565b61078890610773565b90565b610794906105fa565b90565b5f7f5661756c74206d6178206465706f7369742062656c6f7720616d6f756e740000910152565b6107cb601e6020926104d4565b6107d481610797565b0190565b6107ed9060208101905f8183039101526107be565b90565b156107f757565b6107ff610072565b62461bcd60e51b815280610815600482016107d8565b0390fd5b90505190610826826105a5565b565b906020828203126108415761083e915f01610819565b90565b61007c565b5f0190565b5f7f5661756c74206173736574206d69736d61746368000000000000000000000000910152565b61087f60146020926104d4565b6108888161084b565b0190565b6108a19060208101905f818303910152610872565b90565b156108ab57565b6108b3610072565b62461bcd60e51b8152806108c96004820161088c565b0390fd5b5f1c90565b6108de6108e3916108cd565b610093565b90565b6108f090546108d2565b90565b5f7f5661756c742063616e6e6f74206265207468652041555344207661756c740000910152565b610927601e6020926104d4565b610930816108f3565b0190565b6109499060208101905f81830391015261091a565b90565b1561095357565b61095b610072565b62461bcd60e51b81528061097160048201610934565b0390fd5b90565b90503590610985826105a5565b565b50610996906020810190610978565b90565b60200190565b916109ad826109b39261032c565b92610975565b90815f905b8282106109c6575050505090565b909192936109e86109e26001926109dd8886610987565b610348565b95610999565b9201909291926109b8565b60209181520190565b5f80fd5b9037565b909182610a10916109f3565b9160018060fb1b038111610a335782916020610a2f9202938491610a00565b0190565b6109fc565b610a41906101cf565b9052565b9890610ab1610ae5999f9e9c9697610aec9e99610aa28d6101209f989b610ad09a610a94610abc98610ada9f610ac69c610a876101408801935f8901906100ea565b868303602088015261099f565b926040818503910152610a04565b918d606081850391015261099f565b9e60808b01906100ea565b60a0890190610a38565b60c0870190610a38565b60e0850190610a38565b6101008301906100ea565b01906100ea565b565b610af7906105fa565b90565b151590565b610b0881610afa565b03610b0f57565b5f80fd5b90505190610b2082610aff565b565b90602082820312610b3b57610b38915f01610b13565b90565b61007c565b604090610b69610b709496959396610b5f60608401985f8501906100ea565b60208301906100ea565b0190610a38565b565b5f910312610b7c57565b61007c565b90565b5f5260205f2090565b5490565b610b9a81610b8d565b821015610bb457610bac600191610b84565b910201905f90565b61041a565b1b90565b91906008610bdd910291610bd760018060a01b0384610bb9565b92610bb9565b9181191691161790565b610bf0906105fa565b90565b90565b9190610c0c610c07610c1493610be7565b610bf3565b908354610bbd565b9055565b9081549168010000000000000000831015610c485782610c40916001610c4695018155610b91565b90610bf6565b565b61062c565b959391610c98979591610c8a94610c7c92610c6f60808b01935f8c01906100ea565b89830360208b015261099f565b918683036040880152610a04565b92606081850391015261099f565b90565b969891989590939495610cac6104c8565b50610cde8a610cd8610cd2610ccd610cc58d8b906104cc565b9389906104d0565b6101cf565b916101cf565b14610536565b610ce75f610565565b5b80610d05610cff610cfa8a8c906104cc565b6101cf565b916101cf565b101561110957610d2f610d2a610d25610d208a8c8691610590565b6105b9565b6105ee565b610606565b90602063dd62ed3e923390610d5e610d4630610612565b95610d69610d52610072565b97889586948594610669565b84526004840161069c565b03915afa8015611104578c8b935f926110c4575b50610d9d610d98610d93610da3938b87916106cf565b6106e4565b6101cf565b916101cf565b1480610fc1575b610ddc610dd7610dd2610dcd610e0e96610dc560209661074a565b8c8791610590565b6105b9565b61077f565b61078b565b63402d267d90610e03610dee30610612565b92610df7610072565b96879485938493610669565b8352600483016100f7565b03915afa8015610fbc57610e80610e7b610e768f8e610e696020968d89610e7195610e969c5f94610f79575b50610e52610e6293610e5c93610e57939190916106cf565b6106e4565b6101cf565b916101cf565b10156107f0565b8c8791610590565b6105b9565b61077f565b61078b565b6338d52e0f90610e8e610072565b948592610669565b82528180610ea660048201610846565b03915afa918215610f7457610f2d928a8a610eef935f93610f32575b50610ede610ed9610ee993610ee393908891610590565b6105b9565b6100de565b916100de565b146108a4565b610f28610f06610f018c8a8591610590565b6105b9565b610f21610f1b610f1660016108e6565b6100de565b916100de565b141561094c565b610581565b610ce8565b610ee3919350610ed9610ee993610f62610ede9360203d8111610f6d575b610f5a8183610640565b810190610828565b959350935050610ec2565b503d610f50565b6106bf565b610e57919450610e6293610e5c93610fa9610e52938f3d8111610fb5575b610fa18183610640565b81019061067e565b96935093509350610e3a565b503d610f97565b6106bf565b5061101891506020610fee610fe9610fe4610fdf8d8d908791610590565b6105b9565b6105ee565b610606565b6370a082319061100d3392611001610072565b96879485938493610669565b8352600483016100f7565b03915afa80156110bf57610ddc610dd7610dd28f8e610dc56020968d89610dcd95610e0e9c5f9461107c575b5061105c61106c9361106693611061939190916106cf565b6106e4565b6101cf565b916101cf565b1015965050965050505050610daa565b61106191945061106c93611066936110ac61105c938f3d81116110b8575b6110a48183610640565b81019061067e565b96935093509350611044565b503d61109a565b6106bf565b610da3919250610d98610d936110f3610d9d9360203d81116110fd575b6110eb8183610640565b81019061067e565b9493505050610d7d565b503d6110e1565b6106bf565b50909192959493969767ffffffffffffffff9033928a948a928d928b928a8c906111325f6108e6565b9293949561113f30610612565b9761114a60016108e6565b99611153610072565b9d8e613e9881019d8e918210911117611386578e9d61117b9d8f613e98906114559039610a45565b03905ff08015611381579461118f5f610565565b5b806111ad6111a76111a28789906104cc565b6101cf565b916101cf565b10156112775788906020886111dc6111d76111d26111cd8a8c8891610590565b6105b9565b6105ee565b610606565b61121c5f8b6112276112086112036323b872dd936111fa3399610aee565b9b908b916106cf565b6106e4565b611210610072565b998a9788968795610669565b855260048501610b40565b03925af19182156112725761124192611246575b50610581565b611190565b6112669060203d811161126b575b61125e8183610640565b810190610b22565b61123b565b503d611254565b6106bf565b509192969395909661128886610aee565b96634464718597803b1561137c576112ac985f916112a4610072565b9a8b92610669565b82528183816112bd60048201610846565b03925af191821561137757611348986113409361134b575b506112f26112e36002610b81565b6112ec8a610aee565b90610c18565b33956112fd89610aee565b9495979290919261132e7f549da332e0b2f278bd26f4c3f269be2a23c1b578ad08147c6889f6dbb961da2c98610be7565b98611337610072565b97889788610c4d565b0390a2610aee565b90565b61136a905f3d8111611370575b6113628183610640565b810190610b72565b5f6112d5565b503d611358565b6106bf565b61061e565b6106bf565b61062c565b606090565b60209181520190565b6113a390546108d2565b90565b60010190565b906113c96113c36113bc8461042e565b8093611390565b92610432565b905f5b8181106113d95750505090565b9091926113f96113f36001926113ee87611399565b610348565b946113a6565b91019190916113cc565b9061140d916113ac565b90565b9061143061142992611420610072565b93848092611403565b0383610640565b565b61143b90611410565b90565b61144661138b565b506114516002611432565b9056fe60806040523461003c5761002661001461031e565b9897909796919695929594939461079f565b61002e610041565b61365d61083b823961365d90f35b610047565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100739061004b565b810190811060018060401b0382111761008b57604052565b610055565b906100a361009c610041565b9283610069565b565b5f80fd5b5f80fd5b60018060a01b031690565b6100c1906100ad565b90565b6100cd816100b8565b036100d457565b5f80fd5b905051906100e5826100c4565b565b5f80fd5b60018060401b0381116101015760208091020190565b610055565b5f80fd5b9092919261011f61011a826100eb565b610090565b938185526020808601920283019281841161015c57915b8383106101435750505050565b6020809161015184866100d8565b815201920191610136565b610106565b9080601f8301121561017f5781602061017c9351910161010a565b90565b6100e7565b60018060401b03811161019a5760208091020190565b610055565b90565b6101ab8161019f565b036101b257565b5f80fd5b905051906101c3826101a2565b565b909291926101da6101d582610184565b610090565b938185526020808601920283019281841161021757915b8383106101fe5750505050565b6020809161020c84866101b6565b8152019201916101f1565b610106565b9080601f8301121561023a57816020610237935191016101c5565b90565b6100e7565b6101408183031261031957610256825f83016100d8565b92602082015160018060401b0381116103145783610275918401610161565b92604083015160018060401b03811161030f578161029491850161021c565b92606081015160018060401b03811161030a57826102b3918301610161565b926102c183608084016100d8565b926102cf8160a085016101b6565b926102dd8260c083016101b6565b926103076102ee8460e085016101b6565b936102fd8161010086016100d8565b93610120016100d8565b90565b6100a9565b6100a9565b6100a9565b6100a5565b61033c613e988038038061033181610090565b92833981019061023f565b90919293949596979899565b5f1b90565b9061035e60018060a01b0391610348565b9181191691161790565b90565b61037f61037a610384926100ad565b610368565b6100ad565b90565b6103909061036b565b90565b61039c90610387565b90565b90565b906103b76103b26103be92610393565b61039f565b825461034d565b9055565b5490565b600190818003010490565b5f5260205f2090565b1b90565b919060086103f99102916103f35f19846103da565b926103da565b9181191691161790565b61041761041261041c9261019f565b610368565b61019f565b90565b90565b919061043861043361044093610403565b61041f565b9083546103de565b9055565b5f90565b61045a91610454610444565b91610422565b565b5b818110610468575050565b806104755f600193610448565b0161045d565b909182811061048a575b505050565b6104a86104a261049c6104b3956103c6565b926103c6565b926103d1565b91820191019061045c565b5f8080610485565b906801000000000000000081116104e457816104d96104e2936103c2565b9082815561047b565b565b610055565b5190565b6104f790516100b8565b90565b60200190565b610509826104e9565b9160018060401b03831161056a5761053561052f60019261052a86866104bb565b6104fa565b926103d1565b9204915f5b8381106105475750505050565b600190602061055d610558866104ed565b61039f565b940193818401550161053a565b610055565b9061057991610500565b565b5490565b600190818003010490565b5f5260205f2090565b5b81811061059f575050565b806105ac5f600193610448565b01610594565b90918281106105c1575b505050565b6105df6105d96105d36105ea9561057f565b9261057f565b9261058a565b918201910190610593565b5f80806105bc565b9068010000000000000000811161061b57816106106106199361057b565b908281556105b2565b565b610055565b5190565b61062e905161019f565b90565b60200190565b61064082610620565b9160018060401b0383116106a15761066c61066660019261066186866105f2565b610631565b9261058a565b9204915f5b83811061067e5750505050565b600190602061069461068f86610624565b61041f565b9401938184015501610671565b610055565b906106b091610637565b565b906106be5f1991610348565b9181191691161790565b906106dd6106d86106e492610403565b61041f565b82546106b2565b9055565b60201b90565b90610704640100000000600160c01b03916106e8565b9181191691161790565b9061072361071e61072a92610393565b61039f565b82546106ee565b9055565b60101b90565b9061074262ff00009161072e565b9181191691161790565b151590565b61075a9061074c565b90565b90565b9061077561077061077c92610751565b61075d565b8254610734565b9055565b90565b61079761079261079c92610780565b610368565b61019f565b90565b946107e961081098956107e26107f7966107db6108389e9d9b976107d46107f0986107cd6107fe9e5f6103a2565b600161056f565b60026106a6565b600361056f565b60046103a2565b60056106c8565b60066106c8565b60076106c8565b6108094260086106c8565b600d61070e565b61081b5f600d610760565b61083161082a6202a300610783565b60136106c8565b600e6103a2565b56fe60806040526004361015610013575b610e46565b61001d5f3561021c565b80630d668087146102175780630f76c114146102125780630fb5a6b41461020d5780631758078b1461020857806324600fc3146102035780632bf45008146101fe5780633197cbb6146101f95780633a55a9c6146101f45780633f6fa655146101ef57806344647185146101ea57806345f0a44f146101e55780634e71d92d146101e05780634f64b2be146101db57806356377d16146101d65780635c206f41146101d15780635f83129e146101cc57806378e97925146101c757806388ba8dd6146101c257806389a78f1a146101bd5780638c64ea4a146101b8578063989e9299146101b35780639a4977d5146101ae578063a04f6639146101a9578063a21ae489146101a4578063af0088831461019f578063bfb44bce1461019a578063c23af83214610195578063c45a015514610190578063e14891911461018b578063e8e0e37c14610186578063f7f74b22146101815763f8e6fe130361000e57610e13565b610ddf565b610d5a565b610d15565b610cd1565b610c8c565b610c48565b610c04565b610bc2565b610b8d565b610b49565b610b05565b610ac1565b610a5d565b61087b565b610837565b6107f5565b6107c0565b61077c565b610738565b6106a4565b61066f565b610586565b610551565b6104b9565b610475565b610433565b610400565b6103c6565b610319565b6102d5565b6102a0565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b1c90565b90565b61025690600861025b930261023f565b610243565b90565b906102699154610246565b90565b61027860095f9061025e565b90565b90565b6102879061027b565b9052565b919061029e905f6020850194019061027e565b565b346102d0576102b0366004610230565b6102cc6102bb61026c565b6102c3610222565b9182918261028b565b0390f35b610228565b34610305576102e5366004610230565b6103016102f0610f6f565b6102f8610222565b9182918261028b565b0390f35b610228565b61031660065f9061025e565b90565b3461034957610329366004610230565b61034561033461030a565b61033c610222565b9182918261028b565b0390f35b610228565b60018060a01b031690565b61036990600861036e930261023f565b61034e565b90565b9061037c9154610359565b90565b61038a5f5f90610371565b90565b60018060a01b031690565b6103a19061038d565b90565b6103ad90610398565b9052565b91906103c4905f602085019401906103a4565b565b346103f6576103d6366004610230565b6103f26103e161037f565b6103e9610222565b918291826103b1565b0390f35b610228565b5f0190565b3461042e57610410366004610230565b6104186111c4565b610420610222565b8061042a816103fb565b0390f35b610228565b3461046157610443366004610230565b61044b611920565b610453610222565b8061045d816103fb565b0390f35b610228565b610472600a5f9061025e565b90565b346104a557610485366004610230565b6104a1610490610466565b610498610222565b9182918261028b565b0390f35b610228565b6104b6600e5f90610371565b90565b346104e9576104c9366004610230565b6104e56104d46104aa565b6104dc610222565b918291826103b1565b0390f35b610228565b60ff1690565b610504906008610509930261023f565b6104ee565b90565b9061051791546104f4565b90565b610527600d60019061050c565b90565b151590565b6105389061052a565b9052565b919061054f905f6020850194019061052f565b565b3461058157610561366004610230565b61057d61056c61051a565b610574610222565b9182918261053c565b0390f35b610228565b346105b457610596366004610230565b61059e611f88565b6105a6610222565b806105b0816103fb565b0390f35b610228565b6105c28161027b565b036105c957565b5f80fd5b905035906105da826105b9565b565b906020828203126105f5576105f2915f016105cd565b90565b61022c565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6106248161060e565b82101561063e57610636600191610612565b910201905f90565b6105fa565b600261064e8161060e565b82101561066b57610668916106629161061b565b9061025e565b90565b5f80fd5b3461069f5761069b61068a6106853660046105dc565b610643565b610692610222565b9182918261028b565b0390f35b610228565b346106d2576106b4366004610230565b6106bc6122ce565b6106c4610222565b806106ce816103fb565b0390f35b610228565b5490565b5f5260205f2090565b6106ed816106d7565b821015610707576106ff6001916106db565b910201905f90565b6105fa565b6003610717816106d7565b821015610734576107319161072b916106e4565b90610371565b90565b5f80fd5b346107685761076461075361074e3660046105dc565b61070c565b61075b610222565b918291826103b1565b0390f35b610228565b610779600b5f9061025e565b90565b346107ac5761078c366004610230565b6107a861079761076d565b61079f610222565b9182918261028b565b0390f35b610228565b6107bd600c5f9061025e565b90565b346107f0576107d0366004610230565b6107ec6107db6107b1565b6107e3610222565b9182918261028b565b0390f35b610228565b3461082357610805366004610230565b61080d612c6a565b610815610222565b8061081f816103fb565b0390f35b610228565b61083460085f9061025e565b90565b3461086757610847366004610230565b610863610852610828565b61085a610222565b9182918261028b565b0390f35b610228565b61087860115f9061025e565b90565b346108ab5761088b366004610230565b6108a761089661086c565b61089e610222565b9182918261028b565b0390f35b610228565b6108b981610398565b036108c057565b5f80fd5b905035906108d1826108b0565b565b906020828203126108ec576108e9915f016108c4565b90565b61022c565b90565b61090861090361090d9261038d565b6108f1565b61038d565b90565b610919906108f4565b90565b61092590610910565b90565b906109329061091c565b5f5260205260405f2090565b5f1c90565b61094f6109549161093e565b610243565b90565b6109619054610943565b90565b60ff1690565b61097661097b9161093e565b610964565b90565b610988905461096a565b90565b60081c90565b61099d6109a29161098b565b6104ee565b90565b6109af9054610991565b90565b6109bd906010610928565b6109c85f8201610957565b916109e060016109d981850161097e565b93016109a5565b90565b634e487b7160e01b5f52602160045260245ffd5b60031115610a0157565b6109e3565b90610a10826109f7565b565b610a1b90610a06565b90565b610a2790610a12565b9052565b604090610a54610a5b9496959396610a4a60608401985f85019061027e565b6020830190610a1e565b019061052f565b565b34610a9057610a8c610a78610a733660046108d3565b6109b2565b610a83939193610222565b93849384610a2b565b0390f35b610228565b6001610aa0816106d7565b821015610abd57610aba91610ab4916106e4565b90610371565b90565b5f80fd5b34610af157610aed610adc610ad73660046105dc565b610a95565b610ae4610222565b918291826103b1565b0390f35b610228565b610b0260135f9061025e565b90565b34610b3557610b15366004610230565b610b31610b20610af6565b610b28610222565b9182918261028b565b0390f35b610228565b610b4660055f9061025e565b90565b34610b7957610b59366004610230565b610b75610b64610b3a565b610b6c610222565b9182918261028b565b0390f35b610228565b610b8a600f5f9061025e565b90565b34610bbd57610b9d366004610230565b610bb9610ba8610b7e565b610bb0610222565b9182918261028b565b0390f35b610228565b34610bf057610bda610bd53660046105dc565b612cbb565b610be2610222565b80610bec816103fb565b0390f35b610228565b610c0160125f9061025e565b90565b34610c3457610c14366004610230565b610c30610c1f610bf5565b610c27610222565b9182918261028b565b0390f35b610228565b610c45600d5f9061050c565b90565b34610c7857610c58366004610230565b610c74610c63610c39565b610c6b610222565b9182918261053c565b0390f35b610228565b610c8960045f90610371565b90565b34610cbc57610c9c366004610230565b610cb8610ca7610c7d565b610caf610222565b918291826103b1565b0390f35b610228565b610cce600d600490610371565b90565b34610d0157610ce1366004610230565b610cfd610cec610cc1565b610cf4610222565b918291826103b1565b0390f35b610228565b610d1260075f9061025e565b90565b34610d4557610d25366004610230565b610d41610d30610d06565b610d38610222565b9182918261028b565b0390f35b610228565b610d57600d60029061050c565b90565b34610d8a57610d6a366004610230565b610d86610d75610d4a565b610d7d610222565b9182918261053c565b0390f35b610228565b610d988161052a565b03610d9f57565b5f80fd5b90503590610db082610d8f565b565b9190604083820312610dda5780610dce610dd7925f8601610da3565b936020016105cd565b90565b61022c565b34610e0e57610df8610df2366004610db2565b90613046565b610e00610222565b80610e0a816103fb565b0390f35b610228565b34610e4157610e23366004610230565b610e2b61353e565b610e33610222565b80610e3d816103fb565b0390f35b610228565b5f80fd5b5f90565b90565b610e65610e60610e6a92610e4e565b6108f1565b61027b565b90565b6001610e79910161027b565b90565b610e85906108f4565b90565b610e9190610e7c565b90565b610e9d90610910565b90565b610ea990610910565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610ed490610eac565b810190811067ffffffffffffffff821117610eee57604052565b610eb6565b60e01b90565b90505190610f06826105b9565b565b90602082820312610f2157610f1e915f01610ef9565b90565b61022c565b610f2e610222565b3d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b610f59610f5f9193929361027b565b9261027b565b8201809211610f6a57565b610f36565b610f77610e4a565b90610f815f610e51565b915b82610f9f610f99610f9460016106d7565b61027b565b9161027b565b10156110f9576110016020610fcf610fca610fc5610fbf600189906106e4565b90610371565b610e88565b610e94565b6370a0823190610ff6610fe130610ea0565b92610fea610222565b95869485938493610ef3565b8352600483016103b1565b03915afa9081156110f457611067916020915f916110c7575b5061104061103b61103661103060018a906106e4565b90610371565b610e88565b610e94565b61105c634cdad506611050610222565b95869485938493610ef3565b83526004830161028b565b03915afa80156110c25761108c92611086925f92611092575b50610f4a565b92610e6d565b91610f83565b6110b491925060203d81116110bb575b6110ac8183610eca565b810190610f08565b905f611080565b503d6110a2565b610f26565b6110e79150823d81116110ed575b6110df8183610eca565b810190610f08565b5f61101a565b503d6110d5565b610f26565b9150565b60409061112661112d949695939661111c60608401985f85019061027e565b60208301906103a4565b01906103a4565b565b611138906108f4565b90565b6111449061112f565b90565b61115090610910565b90565b61115f6111649161093e565b61034e565b90565b6111719054611153565b90565b9050519061118182610d8f565b565b9060208282031261119c57611199915f01611174565b90565b61022c565b9160206111c29294936111bb60408201965f8301906103a4565b019061027e565b565b6111cd5f610e51565b5b806111ea6111e46111df60016106d7565b61027b565b9161027b565b10156114985761121561121061120b611205600185906106e4565b90610371565b610e88565b610e94565b61127763b460af9491602061124561124061123b611235600189906106e4565b90610371565b610e88565b610e94565b63ce96cb779061126c61125730610ea0565b92611260610222565b96879485938493610ef3565b8352600483016103b1565b03915afa908115611493576020925f92611464575b506112bb5f61129a30610ea0565b956112c66112a730610ea0565b6112af610222565b98899788968795610ef3565b8552600485016110fd565b03925af1801561145f57611433575b506113686112fe6112f96112f46112ee600386906106e4565b90610371565b61113b565b611147565b9163a9059cbb9261130e5f611167565b90602061133661133161132c611326600388906106e4565b90610371565b61113b565b611147565b6370a082319061135d61134830610ea0565b92611351610222565b98899485938493610ef3565b8352600483016103b1565b03915afa93841561142e575f946113f6575b5061139b5f60209495966113a661138f610222565b98899687958694610ef3565b8452600484016111a1565b03925af19182156113f1576113c0926113c5575b50610e6d565b6111ce565b6113e59060203d81116113ea575b6113dd8183610eca565b810190611183565b6113ba565b503d6113d3565b610f26565b60209394505f61141e61139b92863d8111611427575b6114168183610eca565b810190610f08565b9594505061137a565b503d61140c565b610f26565b6114539060203d8111611458575b61144b8183610eca565b810190610f08565b6112d5565b503d611441565b610f26565b611485919250833d811161148c575b61147d8183610eca565b810190610f08565b905f61128c565b503d611473565b610f26565b506114b36114ae6114a96004611167565b61113b565b611147565b61151463a9059cbb916114c55f611167565b9060206114e26114dd6114d86004611167565b61113b565b611147565b6370a08231906115096114f430610ea0565b926114fd610222565b97889485938493610ef3565b8352600483016103b1565b03915afa9283156115ca575f93611594575b506115465f6020949561155161153a610222565b97889687958694610ef3565b8452600484016111a1565b03925af1801561158f57611563575b50565b6115839060203d8111611588575b61157b8183610eca565b810190611183565b611560565b503d611571565b610f26565b602093505f6115bb61154692863d81116115c3575b6115b38183610eca565b810190610f08565b945050611526565b503d6115a9565b610f26565b6115db6115e09161093e565b6104ee565b90565b6115ed90546115cf565b90565b60209181520190565b5f7f62657473206e6f7420636c6f7365640000000000000000000000000000000000910152565b61162d600f6020926115f0565b611636816115f9565b0190565b61164f9060208101905f818303910152611620565b90565b1561165957565b611661610222565b62461bcd60e51b8152806116776004820161163a565b0390fd5b5f7f616c7265616479207265736f6c76656400000000000000000000000000000000910152565b6116af60106020926115f0565b6116b88161167b565b0190565b6116d19060208101905f8183039101526116a2565b90565b156116db57565b6116e3610222565b62461bcd60e51b8152806116f9600482016116bc565b0390fd5b5f7f6e6f742066696e69736865640000000000000000000000000000000000000000910152565b611731600c6020926115f0565b61173a816116fd565b0190565b6117539060208101905f818303910152611724565b90565b1561175d57565b611765610222565b62461bcd60e51b81528061177b6004820161173e565b0390fd5b5f1b90565b906117905f199161177f565b9181191691161790565b6117ae6117a96117b39261027b565b6108f1565b61027b565b90565b90565b906117ce6117c96117d59261179a565b6117b6565b8254611784565b9055565b60081b90565b906117ec61ff00916117d9565b9181191691161790565b6117ff9061052a565b90565b90565b9061181a611815611821926117f6565b611802565b82546117df565b9055565b90565b61183c61183761184192611825565b6108f1565b61027b565b90565b6118536118599193929361027b565b9261027b565b9161186583820261027b565b92818404149015171561187457565b610f36565b634e487b7160e01b5f52601260045260245ffd5b61189961189f9161027b565b9161027b565b9081156118aa570490565b611879565b60181b90565b906118c463ff000000916118af565b9181191691161790565b6118d790610a06565b90565b90565b906118f26118ed6118f9926118ce565b6118da565b82546118b5565b9055565b91602061191e92949361191760408201965f83019061052f565b019061027e565b565b61193261192d600d6115e3565b611652565b61194d611948611942600d6109a5565b1561052a565b6116d4565b6119734261196c611966611961600a610957565b61027b565b9161027b565b1015611756565b61198561197e610f6f565b600c6117b9565b6119916001600d611805565b6119e260206119b06119ab6119a6600e611167565b610e88565b610e94565b63ce96cb77906119d76119c230610ea0565b926119cb610222565b95869485938493610ef3565b8352600483016103b1565b03915afa8015611b98576119ff915f91611b6a575b50600f6117b9565b611a19611a14611a0f600e611167565b610e88565b610e94565b602063b460af9491611a2b600f610957565b90611a5a5f611a3930610ea0565b95611a65611a4630610ea0565b611a4e610222565b98899788968795610ef3565b8552600485016110fd565b03925af18015611b6557611b39575b50611a7f600c610957565b611ad5611acf611aca611ab9611a95600b610957565b611ab3612710611aae611aa86005610957565b91611828565b610f4a565b90611844565b611ac4612710611828565b9061188d565b61027b565b9161027b565b11805f14611b2f57611aea60015b600d6118dd565b611af4600c610957565b7f435caaa30db039b3daad839380c9219a401e0e1e926b8a2066fbd117c00f630391611b2a611b21610222565b928392836118fd565b0390a1565b611aea6002611ae3565b611b599060203d8111611b5e575b611b518183610eca565b810190610f08565b611a74565b503d611b47565b610f26565b611b8b915060203d8111611b91575b611b838183610eca565b810190610f08565b5f6119f7565b503d611b79565b610f26565b60201c90565b611baf611bb491611b9d565b61034e565b90565b611bc19054611ba3565b90565b5f7f6e6f7420616c6c6f776564000000000000000000000000000000000000000000910152565b611bf8600b6020926115f0565b611c0181611bc4565b0190565b611c1a9060208101905f818303910152611beb565b90565b15611c2457565b611c2c610222565b62461bcd60e51b815280611c4260048201611c05565b0390fd5b33611c62611c5c611c57600d611bb7565b610398565b91610398565b148015611c7d575b611c7390611c1d565b611c7b611dae565b565b50611c7333611c9c611c96611c915f611167565b610398565b91610398565b149050611c6a565b60101c90565b611cb6611cbb91611ca4565b6104ee565b90565b611cc89054611caa565b90565b5f7f616c726561647920657865637574656400000000000000000000000000000000910152565b611cff60106020926115f0565b611d0881611ccb565b0190565b611d219060208101905f818303910152611cf2565b90565b15611d2b57565b611d33610222565b62461bcd60e51b815280611d4960048201611d0c565b0390fd5b60101b90565b90611d6162ff000091611d4d565b9181191691161790565b90611d80611d7b611d87926117f6565b611802565b8254611d53565b9055565b916020611dac929493611da560408201965f83019061027e565b01906103a4565b565b611dc9611dc4611dbe600d611cbe565b1561052a565b611d24565b611dd56001600d611d6b565b611dde5f610e51565b5b80611dfb611df5611df060016106d7565b61027b565b9161027b565b1015611f8557611e26611e21611e1c611e16600385906106e4565b90610371565b61113b565b611147565b602063095ea7b391611e43611e3d600186906106e4565b90610371565b90611e755f611e5d611e576002899061061b565b9061025e565b95611e80611e69610222565b97889687958694610ef3565b8452600484016111a1565b03925af18015611f8057611f54575b50611eb5611eb0611eab611ea5600185906106e4565b90610371565b610e88565b610e94565b906020636e553f6592611ed3611ecd6002859061061b565b9061025e565b90611ef95f611ee130610ea0565b96611f04611eed610222565b98899687958694610ef3565b845260048401611d8b565b03925af1918215611f4f57611f1e92611f23575b50610e6d565b611ddf565b611f439060203d8111611f48575b611f3b8183610eca565b810190610f08565b611f18565b503d611f31565b610f26565b611f749060203d8111611f79575b611f6c8183610eca565b810190611183565b611e8f565b503d611f62565b610f26565b50565b611f90611c46565b565b5f7f6e6f74207265736f6c7665640000000000000000000000000000000000000000910152565b611fc6600c6020926115f0565b611fcf81611f92565b0190565b611fe89060208101905f818303910152611fb9565b90565b15611ff257565b611ffa610222565b62461bcd60e51b81528061201060048201611fd3565b0390fd5b90565b5f7f616c726561647920636c61696d65640000000000000000000000000000000000910152565b61204b600f6020926115f0565b61205481612017565b0190565b61206d9060208101905f81830391015261203e565b90565b1561207757565b61207f610222565b62461bcd60e51b81528061209560048201612058565b0390fd5b5f7f6e6f206265740000000000000000000000000000000000000000000000000000910152565b6120cd60066020926115f0565b6120d681612099565b0190565b6120ef9060208101905f8183039101526120c0565b90565b156120f957565b612101610222565b62461bcd60e51b815280612117600482016120da565b0390fd5b60181c90565b61212d6121329161211b565b610964565b90565b61213f9054612121565b90565b90565b61215961215461215e9261027b565b6108f1565b612142565b90565b61217061217691939293612142565b92612142565b91828103925f82851281831216928513911215161761219157565b610f36565b6121aa6121a56121af92610e4e565b6108f1565b612142565b90565b6121c66121c16121cb92612142565b6108f1565b61027b565b90565b5f7f636f6d6d697373696f6e20756e646572666c6f77000000000000000000000000910152565b61220260146020926115f0565b61220b816121ce565b0190565b6122249060208101905f8183039101526121f5565b90565b1561222e57565b612236610222565b62461bcd60e51b81528061224c6004820161220f565b0390fd5b61225f6122659193929361027b565b9261027b565b820391821161227057565b610f36565b5f7f6e6f7420656e6f7567682066756e647300000000000000000000000000000000910152565b6122a960106020926115f0565b6122b281612275565b0190565b6122cb9060208101905f81830391015261229c565b90565b6122e06122db600d6109a5565b611feb565b6122f46122ef60103390610928565b612014565b61231161230c612306600184016109a5565b1561052a565b612070565b61233761231f5f8301610957565b61233161232b5f610e51565b9161027b565b116120f2565b612341600d612135565b61235461234e6001610a06565b91610a06565b145f14612718576123656011610957565b5b90612371600d612135565b61238461237e6001610a06565b91610a06565b145f14612709576123956012610957565b5b916123a05f610e51565b926123ad6001840161097e565b6123c86123c26123bd600d612135565b610a06565b91610a06565b14806126ef575b806126cc575b6125af575b50506123ea906001809101611805565b806123fd6123f75f610e51565b9161027b565b11806124fe575b5f146124dc5761242461241f61241a6004611167565b61113b565b611147565b602063a9059cbb91339061244b5f869561245661243f610222565b97889687958694610ef3565b8452600484016111a1565b03925af180156124d7576124ab575b50336124a66124947fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9261091c565b9261249d610222565b9182918261028b565b0390a2565b6124cb9060203d81116124d0575b6124c38183610eca565b810190611183565b612465565b503d6124b9565b610f26565b6124e4610222565b62461bcd60e51b8152806124fa600482016122b6565b0390fd5b50612550602061251e6125196125146004611167565b61113b565b611147565b6370a082319061254561253030610ea0565b92612539610222565b95869485938493610ef3565b8352600483016103b1565b03915afa9081156125aa575f9161257c575b5061257561256f8361027b565b9161027b565b1015612404565b61259d915060203d81116125a3575b6125958183610eca565b810190610f08565b5f612562565b503d61258b565b610f26565b6123ea929350906125e7612684926125e16125dc6125d56125d0600f610957565b612145565b9285610f4a565b612145565b90612161565b806125fa6125f45f612196565b91612142565b125f146126c7575061260b5f612196565b5b8061261f6126195f612196565b91612142565b145f1461268c575061267e61266e6126365f610e51565b5b9261265e612645600f610957565b6126576126518761027b565b9161027b565b1015612227565b6126695f8801610957565b61188d565b91612679600f610957565b612250565b90611844565b91905f6123da565b61266e6126c26126b16126a161267e946121b2565b6126ab6007610957565b90611844565b6126bc612710611828565b9061188d565b612637565b61260c565b506126d7600f610957565b6126e96126e35f610e51565b9161027b565b116123d5565b50816127036126fd5f610e51565b9161027b565b116123cf565b6127136011610957565b612396565b6127226012610957565b612366565b5f7f6e6f742074726164657200000000000000000000000000000000000000000000910152565b61275b600a6020926115f0565b61276481612727565b0190565b61277d9060208101905f81830391015261274e565b90565b1561278757565b61278f610222565b62461bcd60e51b8152806127a560048201612768565b0390fd5b6127cd336127c76127c16127bc5f611167565b610398565b91610398565b14612780565b6127d56127d7565b565b6127e96127e4600d6109a5565b611feb565b61280f426128086128026127fd600a610957565b61027b565b9161027b565b1015611756565b6128185f610e51565b5b8061283561282f61282a60016106d7565b61027b565b9161027b565b1015612ae257612897602061286561286061285b612855600187906106e4565b90610371565b610e88565b610e94565b63ce96cb779061288c61287730610ea0565b92612880610222565b95869485938493610ef3565b8352600483016103b1565b03915afa908115612add575f91612aaf575b5060206128d16128cc6128c76128c1600187906106e4565b90610371565b610e88565b610e94565b63b460af9492906129065f6128e530610ea0565b956129116128f230610ea0565b6128fa610222565b98899788968795610ef3565b8552600485016110fd565b03925af18015612aaa57612a7e575b506129b361294961294461293f612939600386906106e4565b90610371565b61113b565b611147565b9163a9059cbb926129595f611167565b90602061298161297c612977612971600388906106e4565b90610371565b61113b565b611147565b6370a08231906129a861299330610ea0565b9261299c610222565b98899485938493610ef3565b8352600483016103b1565b03915afa938415612a79575f94612a41575b506129e65f60209495966129f16129da610222565b98899687958694610ef3565b8452600484016111a1565b03925af1918215612a3c57612a0b92612a10575b50610e6d565b612819565b612a309060203d8111612a35575b612a288183610eca565b810190611183565b612a05565b503d612a1e565b610f26565b60209394505f612a696129e692863d8111612a72575b612a618183610eca565b810190610f08565b959450506129c5565b503d612a57565b610f26565b612a9e9060203d8111612aa3575b612a968183610eca565b810190610f08565b612920565b503d612a8c565b610f26565b612ad0915060203d8111612ad6575b612ac88183610eca565b810190610f08565b5f6128a9565b503d612abe565b610f26565b50612aed600f610957565b612b1b612b15612b10612b006012610957565b612b0a6011610957565b90610f4a565b61027b565b9161027b565b1115612c6857612b61612b36612b31600f610957565b612145565b612b5b612b56612b466011610957565b612b506012610957565b90610f4a565b612145565b90612161565b80612b74612b6e5f612196565b91612142565b125f14612c5f5750612bc8612b885f612196565b5b612bc2612bb1612ba1612b9b846121b2565b936121b2565b612bab6007610957565b90611844565b612bbc612710611828565b9061188d565b90612250565b6020612be4612bdf612bda6004611167565b61113b565b611147565b9163a9059cbb92612c115f612bf881611167565b9395612c1c612c05610222565b97889687958694610ef3565b8452600484016111a1565b03925af18015612c5a57612c2e575b50565b612c4e9060203d8111612c53575b612c468183610eca565b810190611183565b612c2b565b503d612c3c565b610f26565b612bc890612b89565b565b612c726127a9565b565b612ca190612c9c33612c96612c90612c8b5f611167565b610398565b91610398565b14612780565b612ca3565b565b612cae9060136117b9565b612cb94260086117b9565b565b612cc490612c74565b565b5f7f6265747320636c6f736564000000000000000000000000000000000000000000910152565b612cfa600b6020926115f0565b612d0381612cc6565b0190565b612d1c9060208101905f818303910152612ced565b90565b15612d2657565b612d2e610222565b62461bcd60e51b815280612d4460048201612d07565b0390fd5b5f7f7a65726f20616d6f756e74000000000000000000000000000000000000000000910152565b612d7c600b6020926115f0565b612d8581612d48565b0190565b612d9e9060208101905f818303910152612d6f565b90565b15612da857565b612db0610222565b62461bcd60e51b815280612dc660048201612d89565b0390fd5b5f7f616c726561647920626574000000000000000000000000000000000000000000910152565b612dfe600b6020926115f0565b612e0781612dca565b0190565b612e209060208101905f818303910152612df1565b90565b15612e2a57565b612e32610222565b62461bcd60e51b815280612e4860048201612e0b565b0390fd5b916020612e6d929493612e6660408201965f8301906103a4565b01906103a4565b565b5f7f6e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000910152565b612ea360146020926115f0565b612eac81612e6f565b0190565b612ec59060208101905f818303910152612e96565b90565b15612ecf57565b612ed7610222565b62461bcd60e51b815280612eed60048201612eb0565b0390fd5b604090612f1a612f219496959396612f1060608401985f8501906103a4565b60208301906103a4565b019061027e565b565b90612f36612f2f610222565b9283610eca565b565b612f426060612f23565b90565b90612f4f9061027b565b9052565b90612f5d90610a06565b9052565b90612f6b9061052a565b9052565b612f79905161027b565b90565b612f869051610a06565b90565b90612f9560ff9161177f565b9181191691161790565b90612fb4612faf612fbb926118ce565b6118da565b8254612f89565b9055565b612fc9905161052a565b90565b9061300f6040600161301594612fef5f8201612fe95f8801612f6f565b906117b9565b61300782820161300160208801612f7c565b90612f9f565b019201612fbf565b90611805565b565b9061302191612fcc565b565b91602061304492949361303d60408201965f830190610a1e565b019061027e565b565b61306161305c613056600d6115e3565b1561052a565b612d1f565b61307d826130776130715f610e51565b9161027b565b11612da1565b6130ae6130965f61309060103390610928565b01610957565b6130a86130a25f610e51565b9161027b565b14612e23565b6130c86130c36130be6004611167565b61113b565b611147565b602063dd62ed3e9133906130f66130de30610ea0565b946131016130ea610222565b96879586948594610ef3565b845260048401612e4c565b03915afa801561341557613130915f916133e7575b506131296131238561027b565b9161027b565b1015612ec8565b61314a6131456131406004611167565b61113b565b611147565b60206323b872dd91339061317a5f61316130610ea0565b956131858961316e610222565b98899788968795610ef3565b855260048501612ef1565b03925af180156133e2576133b6575b506131e282825f146133ac576131d160015b6131c85f916131bf6131b6612f38565b955f8701612f45565b60208501612f53565b60408301612f61565b6131dd60103390610928565b613017565b805f1461338a576132066131ff836131fa6011610957565b610f4a565b60116117b9565b5b61322161321c6132176004611167565b61113b565b611147565b602063095ea7b391613233600e611167565b906132515f879561325c613245610222565b97889687958694610ef3565b8452600484016111a1565b03925af1801561338557613359575b5061328661328161327c600e611167565b610e88565b610e94565b6020636e553f659184906132b55f61329d30610ea0565b956132c06132a9610222565b97889687958694610ef3565b845260048401611d8b565b03925af1801561335457613328575b5033905f14613320576001915b6133067f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c6680837191669261091c565b9261331b613312610222565b92839283613023565b0390a2565b6002916132dc565b6133489060203d811161334d575b6133408183610eca565b810190610f08565b6132cf565b503d613336565b610f26565b6133799060203d811161337e575b6133718183610eca565b810190611183565b61326b565b503d613367565b610f26565b6133a76133a08361339b6012610957565b610f4a565b60126117b9565b613207565b6131d160026131a6565b6133d69060203d81116133db575b6133ce8183610eca565b810190611183565b613194565b503d6133c4565b610f26565b613408915060203d811161340e575b6134008183610eca565b810190610f08565b5f613116565b503d6133f6565b610f26565b5f7f616c726561647920636c6f736564000000000000000000000000000000000000910152565b61344e600e6020926115f0565b6134578161341a565b0190565b6134709060208101905f818303910152613441565b90565b1561347a57565b613482610222565b62461bcd60e51b8152806134986004820161345b565b0390fd5b5f7f62657474696e67207068617365206e6f74206f76657200000000000000000000910152565b6134d060166020926115f0565b6134d98161349c565b0190565b6134f29060208101905f8183039101526134c3565b90565b156134fc57565b613504610222565b62461bcd60e51b81528061351a600482016134dd565b0390fd5b9061353361352e61353a926117f6565b611802565b8254612f89565b9055565b61355961355461354e600d6115e3565b1561052a565b613473565b6135924261358b6135856135806135706008610957565b61357a6013610957565b90610f4a565b61027b565b9161027b565b10156134f5565b61359e6001600d61351e565b6135a94260096117b9565b6135d06135c96135b96009610957565b6135c36006610957565b90610f4a565b600a6117b9565b6135e26135db610f6f565b600b6117b9565b6135ec600b610957565b6136227facc870375c6f27f32904409b6de22b15406d297f25fffc2ebdef807854ee858891613619610222565b9182918261028b565b0390a156fea26469706673582212206bd9f2a0688c525cc3db29d6b9befb6d54525357f39dce5e58be5c5be66a3d5964736f6c634300081c0033a2646970667358221220ea8e53208eaf10e4d21342a8d9289be53afc01508205188c6a20ff0acc74866e64736f6c634300081c003300000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a0000000000000000000000009540441c503d763094921dbe4f13268e6d1d3b56
Deployed Bytecode
0x60806040526004361015610013575b6104c4565b61001d5f3561006c565b80633a55a9c61461006757806352eb0dec14610062578063c23af8321461005d578063c3b28864146100585763e1e3dfeb0361000e5761048f565b6103c7565b6102f3565b6102a6565b61010c565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261008a57565b61007c565b1c90565b60018060a01b031690565b6100ae9060086100b3930261008f565b610093565b90565b906100c1915461009e565b90565b6100d060015f906100b6565b90565b60018060a01b031690565b6100e7906100d3565b90565b6100f3906100de565b9052565b919061010a905f602085019401906100ea565b565b3461013c5761011c366004610080565b6101386101276100c4565b61012f610072565b918291826100f7565b0390f35b610078565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b909182601f8301121561018b5781359167ffffffffffffffff831161018657602001926020830284011161018157565b61014d565b610149565b610145565b909182601f830112156101ca5781359167ffffffffffffffff83116101c55760200192602083028401116101c057565b61014d565b610149565b610145565b90565b6101db816101cf565b036101e257565b5f80fd5b905035906101f3826101d2565b565b9060c0828203126102a1575f82013567ffffffffffffffff811161029c578161021f918401610151565b929093602082013567ffffffffffffffff81116102975783610242918401610190565b929093604082013567ffffffffffffffff81116102925781610265918401610151565b92909361028f61027884606085016101e6565b9361028681608086016101e6565b9360a0016101e6565b90565b610141565b610141565b610141565b61007c565b346102e0576102dc6102cb6102bc3660046101f5565b97969096959195949294610c9b565b6102d3610072565b918291826100f7565b0390f35b610078565b6102f05f5f906100b6565b90565b3461032357610303366004610080565b61031f61030e6102e5565b610316610072565b918291826100f7565b0390f35b610078565b5190565b60209181520190565b60200190565b610344906100de565b9052565b906103558160209361033b565b0190565b60200190565b9061037c61037661036f84610328565b809361032c565b92610335565b905f5b81811061038c5750505090565b9091926103a561039f6001928651610348565b94610359565b910191909161037f565b6103c49160208201915f81840391015261035f565b90565b346103f7576103d7366004610080565b6103f36103e261143e565b6103ea610072565b918291826103af565b0390f35b610078565b9060208282031261041557610412915f016101e6565b90565b61007c565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6104448161042e565b82101561045e57610456600191610432565b910201905f90565b61041a565b600261046e8161042e565b82101561048b57610488916104829161043b565b906100b6565b90565b5f80fd5b346104bf576104bb6104aa6104a53660046103fc565b610463565b6104b2610072565b918291826100f7565b0390f35b610078565b5f80fd5b5f90565b5090565b5090565b60209181520190565b5f7f7661756c74732f616d6f756e7473206d69736d61746368000000000000000000910152565b61051160176020926104d4565b61051a816104dd565b0190565b6105339060208101905f818303910152610504565b90565b1561053d57565b610545610072565b62461bcd60e51b81528061055b6004820161051e565b0390fd5b90565b90565b61057961057461057e9261055f565b610562565b6101cf565b90565b600161058d91016101cf565b90565b91908110156105a0576020020190565b61041a565b6105ae816100de565b036105b557565b5f80fd5b356105c3816105a5565b90565b6105da6105d56105df926100d3565b610562565b6100d3565b90565b6105eb906105c6565b90565b6105f7906105e2565b90565b610603906105c6565b90565b61060f906105fa565b90565b61061b906105fa565b90565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b9061064a90610622565b810190811067ffffffffffffffff82111761066457604052565b61062c565b60e01b90565b9050519061067c826101d2565b565b9060208282031261069757610694915f0161066f565b90565b61007c565b9160206106bd9294936106b660408201965f8301906100ea565b01906100ea565b565b6106c7610072565b3d5f823e3d90fd5b91908110156106df576020020190565b61041a565b356106ee816101d2565b90565b5f7f546f6b656e20616d6f756e7420696e76616c6964000000000000000000000000910152565b61072560146020926104d4565b61072e816106f1565b0190565b6107479060208101905f818303910152610718565b90565b1561075157565b610759610072565b62461bcd60e51b81528061076f60048201610732565b0390fd5b61077c906105c6565b90565b61078890610773565b90565b610794906105fa565b90565b5f7f5661756c74206d6178206465706f7369742062656c6f7720616d6f756e740000910152565b6107cb601e6020926104d4565b6107d481610797565b0190565b6107ed9060208101905f8183039101526107be565b90565b156107f757565b6107ff610072565b62461bcd60e51b815280610815600482016107d8565b0390fd5b90505190610826826105a5565b565b906020828203126108415761083e915f01610819565b90565b61007c565b5f0190565b5f7f5661756c74206173736574206d69736d61746368000000000000000000000000910152565b61087f60146020926104d4565b6108888161084b565b0190565b6108a19060208101905f818303910152610872565b90565b156108ab57565b6108b3610072565b62461bcd60e51b8152806108c96004820161088c565b0390fd5b5f1c90565b6108de6108e3916108cd565b610093565b90565b6108f090546108d2565b90565b5f7f5661756c742063616e6e6f74206265207468652041555344207661756c740000910152565b610927601e6020926104d4565b610930816108f3565b0190565b6109499060208101905f81830391015261091a565b90565b1561095357565b61095b610072565b62461bcd60e51b81528061097160048201610934565b0390fd5b90565b90503590610985826105a5565b565b50610996906020810190610978565b90565b60200190565b916109ad826109b39261032c565b92610975565b90815f905b8282106109c6575050505090565b909192936109e86109e26001926109dd8886610987565b610348565b95610999565b9201909291926109b8565b60209181520190565b5f80fd5b9037565b909182610a10916109f3565b9160018060fb1b038111610a335782916020610a2f9202938491610a00565b0190565b6109fc565b610a41906101cf565b9052565b9890610ab1610ae5999f9e9c9697610aec9e99610aa28d6101209f989b610ad09a610a94610abc98610ada9f610ac69c610a876101408801935f8901906100ea565b868303602088015261099f565b926040818503910152610a04565b918d606081850391015261099f565b9e60808b01906100ea565b60a0890190610a38565b60c0870190610a38565b60e0850190610a38565b6101008301906100ea565b01906100ea565b565b610af7906105fa565b90565b151590565b610b0881610afa565b03610b0f57565b5f80fd5b90505190610b2082610aff565b565b90602082820312610b3b57610b38915f01610b13565b90565b61007c565b604090610b69610b709496959396610b5f60608401985f8501906100ea565b60208301906100ea565b0190610a38565b565b5f910312610b7c57565b61007c565b90565b5f5260205f2090565b5490565b610b9a81610b8d565b821015610bb457610bac600191610b84565b910201905f90565b61041a565b1b90565b91906008610bdd910291610bd760018060a01b0384610bb9565b92610bb9565b9181191691161790565b610bf0906105fa565b90565b90565b9190610c0c610c07610c1493610be7565b610bf3565b908354610bbd565b9055565b9081549168010000000000000000831015610c485782610c40916001610c4695018155610b91565b90610bf6565b565b61062c565b959391610c98979591610c8a94610c7c92610c6f60808b01935f8c01906100ea565b89830360208b015261099f565b918683036040880152610a04565b92606081850391015261099f565b90565b969891989590939495610cac6104c8565b50610cde8a610cd8610cd2610ccd610cc58d8b906104cc565b9389906104d0565b6101cf565b916101cf565b14610536565b610ce75f610565565b5b80610d05610cff610cfa8a8c906104cc565b6101cf565b916101cf565b101561110957610d2f610d2a610d25610d208a8c8691610590565b6105b9565b6105ee565b610606565b90602063dd62ed3e923390610d5e610d4630610612565b95610d69610d52610072565b97889586948594610669565b84526004840161069c565b03915afa8015611104578c8b935f926110c4575b50610d9d610d98610d93610da3938b87916106cf565b6106e4565b6101cf565b916101cf565b1480610fc1575b610ddc610dd7610dd2610dcd610e0e96610dc560209661074a565b8c8791610590565b6105b9565b61077f565b61078b565b63402d267d90610e03610dee30610612565b92610df7610072565b96879485938493610669565b8352600483016100f7565b03915afa8015610fbc57610e80610e7b610e768f8e610e696020968d89610e7195610e969c5f94610f79575b50610e52610e6293610e5c93610e57939190916106cf565b6106e4565b6101cf565b916101cf565b10156107f0565b8c8791610590565b6105b9565b61077f565b61078b565b6338d52e0f90610e8e610072565b948592610669565b82528180610ea660048201610846565b03915afa918215610f7457610f2d928a8a610eef935f93610f32575b50610ede610ed9610ee993610ee393908891610590565b6105b9565b6100de565b916100de565b146108a4565b610f28610f06610f018c8a8591610590565b6105b9565b610f21610f1b610f1660016108e6565b6100de565b916100de565b141561094c565b610581565b610ce8565b610ee3919350610ed9610ee993610f62610ede9360203d8111610f6d575b610f5a8183610640565b810190610828565b959350935050610ec2565b503d610f50565b6106bf565b610e57919450610e6293610e5c93610fa9610e52938f3d8111610fb5575b610fa18183610640565b81019061067e565b96935093509350610e3a565b503d610f97565b6106bf565b5061101891506020610fee610fe9610fe4610fdf8d8d908791610590565b6105b9565b6105ee565b610606565b6370a082319061100d3392611001610072565b96879485938493610669565b8352600483016100f7565b03915afa80156110bf57610ddc610dd7610dd28f8e610dc56020968d89610dcd95610e0e9c5f9461107c575b5061105c61106c9361106693611061939190916106cf565b6106e4565b6101cf565b916101cf565b1015965050965050505050610daa565b61106191945061106c93611066936110ac61105c938f3d81116110b8575b6110a48183610640565b81019061067e565b96935093509350611044565b503d61109a565b6106bf565b610da3919250610d98610d936110f3610d9d9360203d81116110fd575b6110eb8183610640565b81019061067e565b9493505050610d7d565b503d6110e1565b6106bf565b50909192959493969767ffffffffffffffff9033928a948a928d928b928a8c906111325f6108e6565b9293949561113f30610612565b9761114a60016108e6565b99611153610072565b9d8e613e9881019d8e918210911117611386578e9d61117b9d8f613e98906114559039610a45565b03905ff08015611381579461118f5f610565565b5b806111ad6111a76111a28789906104cc565b6101cf565b916101cf565b10156112775788906020886111dc6111d76111d26111cd8a8c8891610590565b6105b9565b6105ee565b610606565b61121c5f8b6112276112086112036323b872dd936111fa3399610aee565b9b908b916106cf565b6106e4565b611210610072565b998a9788968795610669565b855260048501610b40565b03925af19182156112725761124192611246575b50610581565b611190565b6112669060203d811161126b575b61125e8183610640565b810190610b22565b61123b565b503d611254565b6106bf565b509192969395909661128886610aee565b96634464718597803b1561137c576112ac985f916112a4610072565b9a8b92610669565b82528183816112bd60048201610846565b03925af191821561137757611348986113409361134b575b506112f26112e36002610b81565b6112ec8a610aee565b90610c18565b33956112fd89610aee565b9495979290919261132e7f549da332e0b2f278bd26f4c3f269be2a23c1b578ad08147c6889f6dbb961da2c98610be7565b98611337610072565b97889788610c4d565b0390a2610aee565b90565b61136a905f3d8111611370575b6113628183610640565b810190610b72565b5f6112d5565b503d611358565b6106bf565b61061e565b6106bf565b61062c565b606090565b60209181520190565b6113a390546108d2565b90565b60010190565b906113c96113c36113bc8461042e565b8093611390565b92610432565b905f5b8181106113d95750505090565b9091926113f96113f36001926113ee87611399565b610348565b946113a6565b91019190916113cc565b9061140d916113ac565b90565b9061143061142992611420610072565b93848092611403565b0383610640565b565b61143b90611410565b90565b61144661138b565b506114516002611432565b9056fe60806040523461003c5761002661001461031e565b9897909796919695929594939461079f565b61002e610041565b61365d61083b823961365d90f35b610047565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100739061004b565b810190811060018060401b0382111761008b57604052565b610055565b906100a361009c610041565b9283610069565b565b5f80fd5b5f80fd5b60018060a01b031690565b6100c1906100ad565b90565b6100cd816100b8565b036100d457565b5f80fd5b905051906100e5826100c4565b565b5f80fd5b60018060401b0381116101015760208091020190565b610055565b5f80fd5b9092919261011f61011a826100eb565b610090565b938185526020808601920283019281841161015c57915b8383106101435750505050565b6020809161015184866100d8565b815201920191610136565b610106565b9080601f8301121561017f5781602061017c9351910161010a565b90565b6100e7565b60018060401b03811161019a5760208091020190565b610055565b90565b6101ab8161019f565b036101b257565b5f80fd5b905051906101c3826101a2565b565b909291926101da6101d582610184565b610090565b938185526020808601920283019281841161021757915b8383106101fe5750505050565b6020809161020c84866101b6565b8152019201916101f1565b610106565b9080601f8301121561023a57816020610237935191016101c5565b90565b6100e7565b6101408183031261031957610256825f83016100d8565b92602082015160018060401b0381116103145783610275918401610161565b92604083015160018060401b03811161030f578161029491850161021c565b92606081015160018060401b03811161030a57826102b3918301610161565b926102c183608084016100d8565b926102cf8160a085016101b6565b926102dd8260c083016101b6565b926103076102ee8460e085016101b6565b936102fd8161010086016100d8565b93610120016100d8565b90565b6100a9565b6100a9565b6100a9565b6100a5565b61033c613e988038038061033181610090565b92833981019061023f565b90919293949596979899565b5f1b90565b9061035e60018060a01b0391610348565b9181191691161790565b90565b61037f61037a610384926100ad565b610368565b6100ad565b90565b6103909061036b565b90565b61039c90610387565b90565b90565b906103b76103b26103be92610393565b61039f565b825461034d565b9055565b5490565b600190818003010490565b5f5260205f2090565b1b90565b919060086103f99102916103f35f19846103da565b926103da565b9181191691161790565b61041761041261041c9261019f565b610368565b61019f565b90565b90565b919061043861043361044093610403565b61041f565b9083546103de565b9055565b5f90565b61045a91610454610444565b91610422565b565b5b818110610468575050565b806104755f600193610448565b0161045d565b909182811061048a575b505050565b6104a86104a261049c6104b3956103c6565b926103c6565b926103d1565b91820191019061045c565b5f8080610485565b906801000000000000000081116104e457816104d96104e2936103c2565b9082815561047b565b565b610055565b5190565b6104f790516100b8565b90565b60200190565b610509826104e9565b9160018060401b03831161056a5761053561052f60019261052a86866104bb565b6104fa565b926103d1565b9204915f5b8381106105475750505050565b600190602061055d610558866104ed565b61039f565b940193818401550161053a565b610055565b9061057991610500565b565b5490565b600190818003010490565b5f5260205f2090565b5b81811061059f575050565b806105ac5f600193610448565b01610594565b90918281106105c1575b505050565b6105df6105d96105d36105ea9561057f565b9261057f565b9261058a565b918201910190610593565b5f80806105bc565b9068010000000000000000811161061b57816106106106199361057b565b908281556105b2565b565b610055565b5190565b61062e905161019f565b90565b60200190565b61064082610620565b9160018060401b0383116106a15761066c61066660019261066186866105f2565b610631565b9261058a565b9204915f5b83811061067e5750505050565b600190602061069461068f86610624565b61041f565b9401938184015501610671565b610055565b906106b091610637565b565b906106be5f1991610348565b9181191691161790565b906106dd6106d86106e492610403565b61041f565b82546106b2565b9055565b60201b90565b90610704640100000000600160c01b03916106e8565b9181191691161790565b9061072361071e61072a92610393565b61039f565b82546106ee565b9055565b60101b90565b9061074262ff00009161072e565b9181191691161790565b151590565b61075a9061074c565b90565b90565b9061077561077061077c92610751565b61075d565b8254610734565b9055565b90565b61079761079261079c92610780565b610368565b61019f565b90565b946107e961081098956107e26107f7966107db6108389e9d9b976107d46107f0986107cd6107fe9e5f6103a2565b600161056f565b60026106a6565b600361056f565b60046103a2565b60056106c8565b60066106c8565b60076106c8565b6108094260086106c8565b600d61070e565b61081b5f600d610760565b61083161082a6202a300610783565b60136106c8565b600e6103a2565b56fe60806040526004361015610013575b610e46565b61001d5f3561021c565b80630d668087146102175780630f76c114146102125780630fb5a6b41461020d5780631758078b1461020857806324600fc3146102035780632bf45008146101fe5780633197cbb6146101f95780633a55a9c6146101f45780633f6fa655146101ef57806344647185146101ea57806345f0a44f146101e55780634e71d92d146101e05780634f64b2be146101db57806356377d16146101d65780635c206f41146101d15780635f83129e146101cc57806378e97925146101c757806388ba8dd6146101c257806389a78f1a146101bd5780638c64ea4a146101b8578063989e9299146101b35780639a4977d5146101ae578063a04f6639146101a9578063a21ae489146101a4578063af0088831461019f578063bfb44bce1461019a578063c23af83214610195578063c45a015514610190578063e14891911461018b578063e8e0e37c14610186578063f7f74b22146101815763f8e6fe130361000e57610e13565b610ddf565b610d5a565b610d15565b610cd1565b610c8c565b610c48565b610c04565b610bc2565b610b8d565b610b49565b610b05565b610ac1565b610a5d565b61087b565b610837565b6107f5565b6107c0565b61077c565b610738565b6106a4565b61066f565b610586565b610551565b6104b9565b610475565b610433565b610400565b6103c6565b610319565b6102d5565b6102a0565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261023a57565b61022c565b1c90565b90565b61025690600861025b930261023f565b610243565b90565b906102699154610246565b90565b61027860095f9061025e565b90565b90565b6102879061027b565b9052565b919061029e905f6020850194019061027e565b565b346102d0576102b0366004610230565b6102cc6102bb61026c565b6102c3610222565b9182918261028b565b0390f35b610228565b34610305576102e5366004610230565b6103016102f0610f6f565b6102f8610222565b9182918261028b565b0390f35b610228565b61031660065f9061025e565b90565b3461034957610329366004610230565b61034561033461030a565b61033c610222565b9182918261028b565b0390f35b610228565b60018060a01b031690565b61036990600861036e930261023f565b61034e565b90565b9061037c9154610359565b90565b61038a5f5f90610371565b90565b60018060a01b031690565b6103a19061038d565b90565b6103ad90610398565b9052565b91906103c4905f602085019401906103a4565b565b346103f6576103d6366004610230565b6103f26103e161037f565b6103e9610222565b918291826103b1565b0390f35b610228565b5f0190565b3461042e57610410366004610230565b6104186111c4565b610420610222565b8061042a816103fb565b0390f35b610228565b3461046157610443366004610230565b61044b611920565b610453610222565b8061045d816103fb565b0390f35b610228565b610472600a5f9061025e565b90565b346104a557610485366004610230565b6104a1610490610466565b610498610222565b9182918261028b565b0390f35b610228565b6104b6600e5f90610371565b90565b346104e9576104c9366004610230565b6104e56104d46104aa565b6104dc610222565b918291826103b1565b0390f35b610228565b60ff1690565b610504906008610509930261023f565b6104ee565b90565b9061051791546104f4565b90565b610527600d60019061050c565b90565b151590565b6105389061052a565b9052565b919061054f905f6020850194019061052f565b565b3461058157610561366004610230565b61057d61056c61051a565b610574610222565b9182918261053c565b0390f35b610228565b346105b457610596366004610230565b61059e611f88565b6105a6610222565b806105b0816103fb565b0390f35b610228565b6105c28161027b565b036105c957565b5f80fd5b905035906105da826105b9565b565b906020828203126105f5576105f2915f016105cd565b90565b61022c565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6106248161060e565b82101561063e57610636600191610612565b910201905f90565b6105fa565b600261064e8161060e565b82101561066b57610668916106629161061b565b9061025e565b90565b5f80fd5b3461069f5761069b61068a6106853660046105dc565b610643565b610692610222565b9182918261028b565b0390f35b610228565b346106d2576106b4366004610230565b6106bc6122ce565b6106c4610222565b806106ce816103fb565b0390f35b610228565b5490565b5f5260205f2090565b6106ed816106d7565b821015610707576106ff6001916106db565b910201905f90565b6105fa565b6003610717816106d7565b821015610734576107319161072b916106e4565b90610371565b90565b5f80fd5b346107685761076461075361074e3660046105dc565b61070c565b61075b610222565b918291826103b1565b0390f35b610228565b610779600b5f9061025e565b90565b346107ac5761078c366004610230565b6107a861079761076d565b61079f610222565b9182918261028b565b0390f35b610228565b6107bd600c5f9061025e565b90565b346107f0576107d0366004610230565b6107ec6107db6107b1565b6107e3610222565b9182918261028b565b0390f35b610228565b3461082357610805366004610230565b61080d612c6a565b610815610222565b8061081f816103fb565b0390f35b610228565b61083460085f9061025e565b90565b3461086757610847366004610230565b610863610852610828565b61085a610222565b9182918261028b565b0390f35b610228565b61087860115f9061025e565b90565b346108ab5761088b366004610230565b6108a761089661086c565b61089e610222565b9182918261028b565b0390f35b610228565b6108b981610398565b036108c057565b5f80fd5b905035906108d1826108b0565b565b906020828203126108ec576108e9915f016108c4565b90565b61022c565b90565b61090861090361090d9261038d565b6108f1565b61038d565b90565b610919906108f4565b90565b61092590610910565b90565b906109329061091c565b5f5260205260405f2090565b5f1c90565b61094f6109549161093e565b610243565b90565b6109619054610943565b90565b60ff1690565b61097661097b9161093e565b610964565b90565b610988905461096a565b90565b60081c90565b61099d6109a29161098b565b6104ee565b90565b6109af9054610991565b90565b6109bd906010610928565b6109c85f8201610957565b916109e060016109d981850161097e565b93016109a5565b90565b634e487b7160e01b5f52602160045260245ffd5b60031115610a0157565b6109e3565b90610a10826109f7565b565b610a1b90610a06565b90565b610a2790610a12565b9052565b604090610a54610a5b9496959396610a4a60608401985f85019061027e565b6020830190610a1e565b019061052f565b565b34610a9057610a8c610a78610a733660046108d3565b6109b2565b610a83939193610222565b93849384610a2b565b0390f35b610228565b6001610aa0816106d7565b821015610abd57610aba91610ab4916106e4565b90610371565b90565b5f80fd5b34610af157610aed610adc610ad73660046105dc565b610a95565b610ae4610222565b918291826103b1565b0390f35b610228565b610b0260135f9061025e565b90565b34610b3557610b15366004610230565b610b31610b20610af6565b610b28610222565b9182918261028b565b0390f35b610228565b610b4660055f9061025e565b90565b34610b7957610b59366004610230565b610b75610b64610b3a565b610b6c610222565b9182918261028b565b0390f35b610228565b610b8a600f5f9061025e565b90565b34610bbd57610b9d366004610230565b610bb9610ba8610b7e565b610bb0610222565b9182918261028b565b0390f35b610228565b34610bf057610bda610bd53660046105dc565b612cbb565b610be2610222565b80610bec816103fb565b0390f35b610228565b610c0160125f9061025e565b90565b34610c3457610c14366004610230565b610c30610c1f610bf5565b610c27610222565b9182918261028b565b0390f35b610228565b610c45600d5f9061050c565b90565b34610c7857610c58366004610230565b610c74610c63610c39565b610c6b610222565b9182918261053c565b0390f35b610228565b610c8960045f90610371565b90565b34610cbc57610c9c366004610230565b610cb8610ca7610c7d565b610caf610222565b918291826103b1565b0390f35b610228565b610cce600d600490610371565b90565b34610d0157610ce1366004610230565b610cfd610cec610cc1565b610cf4610222565b918291826103b1565b0390f35b610228565b610d1260075f9061025e565b90565b34610d4557610d25366004610230565b610d41610d30610d06565b610d38610222565b9182918261028b565b0390f35b610228565b610d57600d60029061050c565b90565b34610d8a57610d6a366004610230565b610d86610d75610d4a565b610d7d610222565b9182918261053c565b0390f35b610228565b610d988161052a565b03610d9f57565b5f80fd5b90503590610db082610d8f565b565b9190604083820312610dda5780610dce610dd7925f8601610da3565b936020016105cd565b90565b61022c565b34610e0e57610df8610df2366004610db2565b90613046565b610e00610222565b80610e0a816103fb565b0390f35b610228565b34610e4157610e23366004610230565b610e2b61353e565b610e33610222565b80610e3d816103fb565b0390f35b610228565b5f80fd5b5f90565b90565b610e65610e60610e6a92610e4e565b6108f1565b61027b565b90565b6001610e79910161027b565b90565b610e85906108f4565b90565b610e9190610e7c565b90565b610e9d90610910565b90565b610ea990610910565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610ed490610eac565b810190811067ffffffffffffffff821117610eee57604052565b610eb6565b60e01b90565b90505190610f06826105b9565b565b90602082820312610f2157610f1e915f01610ef9565b90565b61022c565b610f2e610222565b3d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b610f59610f5f9193929361027b565b9261027b565b8201809211610f6a57565b610f36565b610f77610e4a565b90610f815f610e51565b915b82610f9f610f99610f9460016106d7565b61027b565b9161027b565b10156110f9576110016020610fcf610fca610fc5610fbf600189906106e4565b90610371565b610e88565b610e94565b6370a0823190610ff6610fe130610ea0565b92610fea610222565b95869485938493610ef3565b8352600483016103b1565b03915afa9081156110f457611067916020915f916110c7575b5061104061103b61103661103060018a906106e4565b90610371565b610e88565b610e94565b61105c634cdad506611050610222565b95869485938493610ef3565b83526004830161028b565b03915afa80156110c25761108c92611086925f92611092575b50610f4a565b92610e6d565b91610f83565b6110b491925060203d81116110bb575b6110ac8183610eca565b810190610f08565b905f611080565b503d6110a2565b610f26565b6110e79150823d81116110ed575b6110df8183610eca565b810190610f08565b5f61101a565b503d6110d5565b610f26565b9150565b60409061112661112d949695939661111c60608401985f85019061027e565b60208301906103a4565b01906103a4565b565b611138906108f4565b90565b6111449061112f565b90565b61115090610910565b90565b61115f6111649161093e565b61034e565b90565b6111719054611153565b90565b9050519061118182610d8f565b565b9060208282031261119c57611199915f01611174565b90565b61022c565b9160206111c29294936111bb60408201965f8301906103a4565b019061027e565b565b6111cd5f610e51565b5b806111ea6111e46111df60016106d7565b61027b565b9161027b565b10156114985761121561121061120b611205600185906106e4565b90610371565b610e88565b610e94565b61127763b460af9491602061124561124061123b611235600189906106e4565b90610371565b610e88565b610e94565b63ce96cb779061126c61125730610ea0565b92611260610222565b96879485938493610ef3565b8352600483016103b1565b03915afa908115611493576020925f92611464575b506112bb5f61129a30610ea0565b956112c66112a730610ea0565b6112af610222565b98899788968795610ef3565b8552600485016110fd565b03925af1801561145f57611433575b506113686112fe6112f96112f46112ee600386906106e4565b90610371565b61113b565b611147565b9163a9059cbb9261130e5f611167565b90602061133661133161132c611326600388906106e4565b90610371565b61113b565b611147565b6370a082319061135d61134830610ea0565b92611351610222565b98899485938493610ef3565b8352600483016103b1565b03915afa93841561142e575f946113f6575b5061139b5f60209495966113a661138f610222565b98899687958694610ef3565b8452600484016111a1565b03925af19182156113f1576113c0926113c5575b50610e6d565b6111ce565b6113e59060203d81116113ea575b6113dd8183610eca565b810190611183565b6113ba565b503d6113d3565b610f26565b60209394505f61141e61139b92863d8111611427575b6114168183610eca565b810190610f08565b9594505061137a565b503d61140c565b610f26565b6114539060203d8111611458575b61144b8183610eca565b810190610f08565b6112d5565b503d611441565b610f26565b611485919250833d811161148c575b61147d8183610eca565b810190610f08565b905f61128c565b503d611473565b610f26565b506114b36114ae6114a96004611167565b61113b565b611147565b61151463a9059cbb916114c55f611167565b9060206114e26114dd6114d86004611167565b61113b565b611147565b6370a08231906115096114f430610ea0565b926114fd610222565b97889485938493610ef3565b8352600483016103b1565b03915afa9283156115ca575f93611594575b506115465f6020949561155161153a610222565b97889687958694610ef3565b8452600484016111a1565b03925af1801561158f57611563575b50565b6115839060203d8111611588575b61157b8183610eca565b810190611183565b611560565b503d611571565b610f26565b602093505f6115bb61154692863d81116115c3575b6115b38183610eca565b810190610f08565b945050611526565b503d6115a9565b610f26565b6115db6115e09161093e565b6104ee565b90565b6115ed90546115cf565b90565b60209181520190565b5f7f62657473206e6f7420636c6f7365640000000000000000000000000000000000910152565b61162d600f6020926115f0565b611636816115f9565b0190565b61164f9060208101905f818303910152611620565b90565b1561165957565b611661610222565b62461bcd60e51b8152806116776004820161163a565b0390fd5b5f7f616c7265616479207265736f6c76656400000000000000000000000000000000910152565b6116af60106020926115f0565b6116b88161167b565b0190565b6116d19060208101905f8183039101526116a2565b90565b156116db57565b6116e3610222565b62461bcd60e51b8152806116f9600482016116bc565b0390fd5b5f7f6e6f742066696e69736865640000000000000000000000000000000000000000910152565b611731600c6020926115f0565b61173a816116fd565b0190565b6117539060208101905f818303910152611724565b90565b1561175d57565b611765610222565b62461bcd60e51b81528061177b6004820161173e565b0390fd5b5f1b90565b906117905f199161177f565b9181191691161790565b6117ae6117a96117b39261027b565b6108f1565b61027b565b90565b90565b906117ce6117c96117d59261179a565b6117b6565b8254611784565b9055565b60081b90565b906117ec61ff00916117d9565b9181191691161790565b6117ff9061052a565b90565b90565b9061181a611815611821926117f6565b611802565b82546117df565b9055565b90565b61183c61183761184192611825565b6108f1565b61027b565b90565b6118536118599193929361027b565b9261027b565b9161186583820261027b565b92818404149015171561187457565b610f36565b634e487b7160e01b5f52601260045260245ffd5b61189961189f9161027b565b9161027b565b9081156118aa570490565b611879565b60181b90565b906118c463ff000000916118af565b9181191691161790565b6118d790610a06565b90565b90565b906118f26118ed6118f9926118ce565b6118da565b82546118b5565b9055565b91602061191e92949361191760408201965f83019061052f565b019061027e565b565b61193261192d600d6115e3565b611652565b61194d611948611942600d6109a5565b1561052a565b6116d4565b6119734261196c611966611961600a610957565b61027b565b9161027b565b1015611756565b61198561197e610f6f565b600c6117b9565b6119916001600d611805565b6119e260206119b06119ab6119a6600e611167565b610e88565b610e94565b63ce96cb77906119d76119c230610ea0565b926119cb610222565b95869485938493610ef3565b8352600483016103b1565b03915afa8015611b98576119ff915f91611b6a575b50600f6117b9565b611a19611a14611a0f600e611167565b610e88565b610e94565b602063b460af9491611a2b600f610957565b90611a5a5f611a3930610ea0565b95611a65611a4630610ea0565b611a4e610222565b98899788968795610ef3565b8552600485016110fd565b03925af18015611b6557611b39575b50611a7f600c610957565b611ad5611acf611aca611ab9611a95600b610957565b611ab3612710611aae611aa86005610957565b91611828565b610f4a565b90611844565b611ac4612710611828565b9061188d565b61027b565b9161027b565b11805f14611b2f57611aea60015b600d6118dd565b611af4600c610957565b7f435caaa30db039b3daad839380c9219a401e0e1e926b8a2066fbd117c00f630391611b2a611b21610222565b928392836118fd565b0390a1565b611aea6002611ae3565b611b599060203d8111611b5e575b611b518183610eca565b810190610f08565b611a74565b503d611b47565b610f26565b611b8b915060203d8111611b91575b611b838183610eca565b810190610f08565b5f6119f7565b503d611b79565b610f26565b60201c90565b611baf611bb491611b9d565b61034e565b90565b611bc19054611ba3565b90565b5f7f6e6f7420616c6c6f776564000000000000000000000000000000000000000000910152565b611bf8600b6020926115f0565b611c0181611bc4565b0190565b611c1a9060208101905f818303910152611beb565b90565b15611c2457565b611c2c610222565b62461bcd60e51b815280611c4260048201611c05565b0390fd5b33611c62611c5c611c57600d611bb7565b610398565b91610398565b148015611c7d575b611c7390611c1d565b611c7b611dae565b565b50611c7333611c9c611c96611c915f611167565b610398565b91610398565b149050611c6a565b60101c90565b611cb6611cbb91611ca4565b6104ee565b90565b611cc89054611caa565b90565b5f7f616c726561647920657865637574656400000000000000000000000000000000910152565b611cff60106020926115f0565b611d0881611ccb565b0190565b611d219060208101905f818303910152611cf2565b90565b15611d2b57565b611d33610222565b62461bcd60e51b815280611d4960048201611d0c565b0390fd5b60101b90565b90611d6162ff000091611d4d565b9181191691161790565b90611d80611d7b611d87926117f6565b611802565b8254611d53565b9055565b916020611dac929493611da560408201965f83019061027e565b01906103a4565b565b611dc9611dc4611dbe600d611cbe565b1561052a565b611d24565b611dd56001600d611d6b565b611dde5f610e51565b5b80611dfb611df5611df060016106d7565b61027b565b9161027b565b1015611f8557611e26611e21611e1c611e16600385906106e4565b90610371565b61113b565b611147565b602063095ea7b391611e43611e3d600186906106e4565b90610371565b90611e755f611e5d611e576002899061061b565b9061025e565b95611e80611e69610222565b97889687958694610ef3565b8452600484016111a1565b03925af18015611f8057611f54575b50611eb5611eb0611eab611ea5600185906106e4565b90610371565b610e88565b610e94565b906020636e553f6592611ed3611ecd6002859061061b565b9061025e565b90611ef95f611ee130610ea0565b96611f04611eed610222565b98899687958694610ef3565b845260048401611d8b565b03925af1918215611f4f57611f1e92611f23575b50610e6d565b611ddf565b611f439060203d8111611f48575b611f3b8183610eca565b810190610f08565b611f18565b503d611f31565b610f26565b611f749060203d8111611f79575b611f6c8183610eca565b810190611183565b611e8f565b503d611f62565b610f26565b50565b611f90611c46565b565b5f7f6e6f74207265736f6c7665640000000000000000000000000000000000000000910152565b611fc6600c6020926115f0565b611fcf81611f92565b0190565b611fe89060208101905f818303910152611fb9565b90565b15611ff257565b611ffa610222565b62461bcd60e51b81528061201060048201611fd3565b0390fd5b90565b5f7f616c726561647920636c61696d65640000000000000000000000000000000000910152565b61204b600f6020926115f0565b61205481612017565b0190565b61206d9060208101905f81830391015261203e565b90565b1561207757565b61207f610222565b62461bcd60e51b81528061209560048201612058565b0390fd5b5f7f6e6f206265740000000000000000000000000000000000000000000000000000910152565b6120cd60066020926115f0565b6120d681612099565b0190565b6120ef9060208101905f8183039101526120c0565b90565b156120f957565b612101610222565b62461bcd60e51b815280612117600482016120da565b0390fd5b60181c90565b61212d6121329161211b565b610964565b90565b61213f9054612121565b90565b90565b61215961215461215e9261027b565b6108f1565b612142565b90565b61217061217691939293612142565b92612142565b91828103925f82851281831216928513911215161761219157565b610f36565b6121aa6121a56121af92610e4e565b6108f1565b612142565b90565b6121c66121c16121cb92612142565b6108f1565b61027b565b90565b5f7f636f6d6d697373696f6e20756e646572666c6f77000000000000000000000000910152565b61220260146020926115f0565b61220b816121ce565b0190565b6122249060208101905f8183039101526121f5565b90565b1561222e57565b612236610222565b62461bcd60e51b81528061224c6004820161220f565b0390fd5b61225f6122659193929361027b565b9261027b565b820391821161227057565b610f36565b5f7f6e6f7420656e6f7567682066756e647300000000000000000000000000000000910152565b6122a960106020926115f0565b6122b281612275565b0190565b6122cb9060208101905f81830391015261229c565b90565b6122e06122db600d6109a5565b611feb565b6122f46122ef60103390610928565b612014565b61231161230c612306600184016109a5565b1561052a565b612070565b61233761231f5f8301610957565b61233161232b5f610e51565b9161027b565b116120f2565b612341600d612135565b61235461234e6001610a06565b91610a06565b145f14612718576123656011610957565b5b90612371600d612135565b61238461237e6001610a06565b91610a06565b145f14612709576123956012610957565b5b916123a05f610e51565b926123ad6001840161097e565b6123c86123c26123bd600d612135565b610a06565b91610a06565b14806126ef575b806126cc575b6125af575b50506123ea906001809101611805565b806123fd6123f75f610e51565b9161027b565b11806124fe575b5f146124dc5761242461241f61241a6004611167565b61113b565b611147565b602063a9059cbb91339061244b5f869561245661243f610222565b97889687958694610ef3565b8452600484016111a1565b03925af180156124d7576124ab575b50336124a66124947fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a9261091c565b9261249d610222565b9182918261028b565b0390a2565b6124cb9060203d81116124d0575b6124c38183610eca565b810190611183565b612465565b503d6124b9565b610f26565b6124e4610222565b62461bcd60e51b8152806124fa600482016122b6565b0390fd5b50612550602061251e6125196125146004611167565b61113b565b611147565b6370a082319061254561253030610ea0565b92612539610222565b95869485938493610ef3565b8352600483016103b1565b03915afa9081156125aa575f9161257c575b5061257561256f8361027b565b9161027b565b1015612404565b61259d915060203d81116125a3575b6125958183610eca565b810190610f08565b5f612562565b503d61258b565b610f26565b6123ea929350906125e7612684926125e16125dc6125d56125d0600f610957565b612145565b9285610f4a565b612145565b90612161565b806125fa6125f45f612196565b91612142565b125f146126c7575061260b5f612196565b5b8061261f6126195f612196565b91612142565b145f1461268c575061267e61266e6126365f610e51565b5b9261265e612645600f610957565b6126576126518761027b565b9161027b565b1015612227565b6126695f8801610957565b61188d565b91612679600f610957565b612250565b90611844565b91905f6123da565b61266e6126c26126b16126a161267e946121b2565b6126ab6007610957565b90611844565b6126bc612710611828565b9061188d565b612637565b61260c565b506126d7600f610957565b6126e96126e35f610e51565b9161027b565b116123d5565b50816127036126fd5f610e51565b9161027b565b116123cf565b6127136011610957565b612396565b6127226012610957565b612366565b5f7f6e6f742074726164657200000000000000000000000000000000000000000000910152565b61275b600a6020926115f0565b61276481612727565b0190565b61277d9060208101905f81830391015261274e565b90565b1561278757565b61278f610222565b62461bcd60e51b8152806127a560048201612768565b0390fd5b6127cd336127c76127c16127bc5f611167565b610398565b91610398565b14612780565b6127d56127d7565b565b6127e96127e4600d6109a5565b611feb565b61280f426128086128026127fd600a610957565b61027b565b9161027b565b1015611756565b6128185f610e51565b5b8061283561282f61282a60016106d7565b61027b565b9161027b565b1015612ae257612897602061286561286061285b612855600187906106e4565b90610371565b610e88565b610e94565b63ce96cb779061288c61287730610ea0565b92612880610222565b95869485938493610ef3565b8352600483016103b1565b03915afa908115612add575f91612aaf575b5060206128d16128cc6128c76128c1600187906106e4565b90610371565b610e88565b610e94565b63b460af9492906129065f6128e530610ea0565b956129116128f230610ea0565b6128fa610222565b98899788968795610ef3565b8552600485016110fd565b03925af18015612aaa57612a7e575b506129b361294961294461293f612939600386906106e4565b90610371565b61113b565b611147565b9163a9059cbb926129595f611167565b90602061298161297c612977612971600388906106e4565b90610371565b61113b565b611147565b6370a08231906129a861299330610ea0565b9261299c610222565b98899485938493610ef3565b8352600483016103b1565b03915afa938415612a79575f94612a41575b506129e65f60209495966129f16129da610222565b98899687958694610ef3565b8452600484016111a1565b03925af1918215612a3c57612a0b92612a10575b50610e6d565b612819565b612a309060203d8111612a35575b612a288183610eca565b810190611183565b612a05565b503d612a1e565b610f26565b60209394505f612a696129e692863d8111612a72575b612a618183610eca565b810190610f08565b959450506129c5565b503d612a57565b610f26565b612a9e9060203d8111612aa3575b612a968183610eca565b810190610f08565b612920565b503d612a8c565b610f26565b612ad0915060203d8111612ad6575b612ac88183610eca565b810190610f08565b5f6128a9565b503d612abe565b610f26565b50612aed600f610957565b612b1b612b15612b10612b006012610957565b612b0a6011610957565b90610f4a565b61027b565b9161027b565b1115612c6857612b61612b36612b31600f610957565b612145565b612b5b612b56612b466011610957565b612b506012610957565b90610f4a565b612145565b90612161565b80612b74612b6e5f612196565b91612142565b125f14612c5f5750612bc8612b885f612196565b5b612bc2612bb1612ba1612b9b846121b2565b936121b2565b612bab6007610957565b90611844565b612bbc612710611828565b9061188d565b90612250565b6020612be4612bdf612bda6004611167565b61113b565b611147565b9163a9059cbb92612c115f612bf881611167565b9395612c1c612c05610222565b97889687958694610ef3565b8452600484016111a1565b03925af18015612c5a57612c2e575b50565b612c4e9060203d8111612c53575b612c468183610eca565b810190611183565b612c2b565b503d612c3c565b610f26565b612bc890612b89565b565b612c726127a9565b565b612ca190612c9c33612c96612c90612c8b5f611167565b610398565b91610398565b14612780565b612ca3565b565b612cae9060136117b9565b612cb94260086117b9565b565b612cc490612c74565b565b5f7f6265747320636c6f736564000000000000000000000000000000000000000000910152565b612cfa600b6020926115f0565b612d0381612cc6565b0190565b612d1c9060208101905f818303910152612ced565b90565b15612d2657565b612d2e610222565b62461bcd60e51b815280612d4460048201612d07565b0390fd5b5f7f7a65726f20616d6f756e74000000000000000000000000000000000000000000910152565b612d7c600b6020926115f0565b612d8581612d48565b0190565b612d9e9060208101905f818303910152612d6f565b90565b15612da857565b612db0610222565b62461bcd60e51b815280612dc660048201612d89565b0390fd5b5f7f616c726561647920626574000000000000000000000000000000000000000000910152565b612dfe600b6020926115f0565b612e0781612dca565b0190565b612e209060208101905f818303910152612df1565b90565b15612e2a57565b612e32610222565b62461bcd60e51b815280612e4860048201612e0b565b0390fd5b916020612e6d929493612e6660408201965f8301906103a4565b01906103a4565b565b5f7f6e6f7420656e6f75676820616c6c6f77616e6365000000000000000000000000910152565b612ea360146020926115f0565b612eac81612e6f565b0190565b612ec59060208101905f818303910152612e96565b90565b15612ecf57565b612ed7610222565b62461bcd60e51b815280612eed60048201612eb0565b0390fd5b604090612f1a612f219496959396612f1060608401985f8501906103a4565b60208301906103a4565b019061027e565b565b90612f36612f2f610222565b9283610eca565b565b612f426060612f23565b90565b90612f4f9061027b565b9052565b90612f5d90610a06565b9052565b90612f6b9061052a565b9052565b612f79905161027b565b90565b612f869051610a06565b90565b90612f9560ff9161177f565b9181191691161790565b90612fb4612faf612fbb926118ce565b6118da565b8254612f89565b9055565b612fc9905161052a565b90565b9061300f6040600161301594612fef5f8201612fe95f8801612f6f565b906117b9565b61300782820161300160208801612f7c565b90612f9f565b019201612fbf565b90611805565b565b9061302191612fcc565b565b91602061304492949361303d60408201965f830190610a1e565b019061027e565b565b61306161305c613056600d6115e3565b1561052a565b612d1f565b61307d826130776130715f610e51565b9161027b565b11612da1565b6130ae6130965f61309060103390610928565b01610957565b6130a86130a25f610e51565b9161027b565b14612e23565b6130c86130c36130be6004611167565b61113b565b611147565b602063dd62ed3e9133906130f66130de30610ea0565b946131016130ea610222565b96879586948594610ef3565b845260048401612e4c565b03915afa801561341557613130915f916133e7575b506131296131238561027b565b9161027b565b1015612ec8565b61314a6131456131406004611167565b61113b565b611147565b60206323b872dd91339061317a5f61316130610ea0565b956131858961316e610222565b98899788968795610ef3565b855260048501612ef1565b03925af180156133e2576133b6575b506131e282825f146133ac576131d160015b6131c85f916131bf6131b6612f38565b955f8701612f45565b60208501612f53565b60408301612f61565b6131dd60103390610928565b613017565b805f1461338a576132066131ff836131fa6011610957565b610f4a565b60116117b9565b5b61322161321c6132176004611167565b61113b565b611147565b602063095ea7b391613233600e611167565b906132515f879561325c613245610222565b97889687958694610ef3565b8452600484016111a1565b03925af1801561338557613359575b5061328661328161327c600e611167565b610e88565b610e94565b6020636e553f659184906132b55f61329d30610ea0565b956132c06132a9610222565b97889687958694610ef3565b845260048401611d8b565b03925af1801561335457613328575b5033905f14613320576001915b6133067f9f6b4cced64244a64465098f682029975b1614400b96bc6bd12c6680837191669261091c565b9261331b613312610222565b92839283613023565b0390a2565b6002916132dc565b6133489060203d811161334d575b6133408183610eca565b810190610f08565b6132cf565b503d613336565b610f26565b6133799060203d811161337e575b6133718183610eca565b810190611183565b61326b565b503d613367565b610f26565b6133a76133a08361339b6012610957565b610f4a565b60126117b9565b613207565b6131d160026131a6565b6133d69060203d81116133db575b6133ce8183610eca565b810190611183565b613194565b503d6133c4565b610f26565b613408915060203d811161340e575b6134008183610eca565b810190610f08565b5f613116565b503d6133f6565b610f26565b5f7f616c726561647920636c6f736564000000000000000000000000000000000000910152565b61344e600e6020926115f0565b6134578161341a565b0190565b6134709060208101905f818303910152613441565b90565b1561347a57565b613482610222565b62461bcd60e51b8152806134986004820161345b565b0390fd5b5f7f62657474696e67207068617365206e6f74206f76657200000000000000000000910152565b6134d060166020926115f0565b6134d98161349c565b0190565b6134f29060208101905f8183039101526134c3565b90565b156134fc57565b613504610222565b62461bcd60e51b81528061351a600482016134dd565b0390fd5b9061353361352e61353a926117f6565b611802565b8254612f89565b9055565b61355961355461354e600d6115e3565b1561052a565b613473565b6135924261358b6135856135806135706008610957565b61357a6013610957565b90610f4a565b61027b565b9161027b565b10156134f5565b61359e6001600d61351e565b6135a94260096117b9565b6135d06135c96135b96009610957565b6135c36006610957565b90610f4a565b600a6117b9565b6135e26135db610f6f565b600b6117b9565b6135ec600b610957565b6136227facc870375c6f27f32904409b6de22b15406d297f25fffc2ebdef807854ee858891613619610222565b9182918261028b565b0390a156fea26469706673582212206bd9f2a0688c525cc3db29d6b9befb6d54525357f39dce5e58be5c5be66a3d5964736f6c634300081c0033a2646970667358221220ea8e53208eaf10e4d21342a8d9289be53afc01508205188c6a20ff0acc74866e64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a0000000000000000000000009540441c503d763094921dbe4f13268e6d1d3b56
-----Decoded View---------------
Arg [0] : _ausd (address): 0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a
Arg [1] : _ausdVault (address): 0x9540441C503D763094921dbE4f13268E6d1d3B56
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a
Arg [1] : 0000000000000000000000009540441c503d763094921dbe4f13268e6d1d3b56
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.