//
0x6080806040523461001657610db1908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c9081631bf8131f14610c3a5750806379b851f614610c0657806385a7d27514610a52578063a0fadaaa14610a1e578063a50a640e146109e8578063acceaaa114610465578063c0c53b8b1461020f5763d869758c1461007957600080fd5b3461020c57602080600319360112610208576004359073ffffffffffffffffffffffffffffffffffffffff906024818360025416604051928380927f6352211e0000000000000000000000000000000000000000000000000000000082528860048301525afa80156101e057839186916101eb575b501691338314928315610160575b5050610109600392610d3f565b82845252604082207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905533907f7019ee8601397d5c4fe244404e2428a9c0b0a4d8679186133186cc01376ee9f18380a380f35b60049193508290604051928380927f8da5cb5b0000000000000000000000000000000000000000000000000000000082525afa80156101e0576003936101099287926101b1575b50163314926100fc565b6101d2919250843d86116101d9575b6101ca8183610cba565b810190610d13565b90386101a7565b503d6101c0565b6040513d87823e3d90fd5b6102029150833d85116101d9576101ca8183610cba565b386100ee565b5080fd5b80fd5b503461020c57606060031936011261020c5773ffffffffffffffffffffffffffffffffffffffff60043581811681036104615760243582811680910361045d576044359283168093036104585783549060ff8260081c16159182809361044b575b8015610434575b156103b0578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316178755610382575b5075ffffffffffffffffffffffffffffffffffffffff000085549360101b1693847fffffffffffffffffffff0000000000000000000000000000000000000000ffff85161786557fffffffffffffffffffffffff000000000000000000000000000000000000000090816002541617600255600154161760015561032c578280f35b7fffffffffffffffffffff000000000000000000000000000000000000000000ff161781557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a138808280f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016610101178555386102aa565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b1580156102775750600160ff821614610277565b50600160ff821610610270565b600080fd5b8380fd5b8280fd5b503461020c57608060031936011261020c576004359073ffffffffffffffffffffffffffffffffffffffff8216820361020c5767ffffffffffffffff80604435116102085736602360443501121561020857806044356004013511610208573660246044356004013560051b6044350101116102085780606435116102085736602360643501121561020857606435600401351161020c573660246064356004013560643501011161020c576024358152600360205273ffffffffffffffffffffffffffffffffffffffff604082205416801561098a576024602073ffffffffffffffffffffffffffffffffffffffff60015416604051928380927f5b14f18300000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff891660048301525afa90811561085b57839161096b575b5061090d576024602073ffffffffffffffffffffffffffffffffffffffff60025416604051928380927fbdf2a43c000000000000000000000000000000000000000000000000000000008252823560048301525afa90811561085b5783916108de575b5061088057803b1561020857604051907f108d918400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff841660048301526024356024830152608060448301526044356004013560848301527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6044356004013511610461578183916044356004013560051b60246044350160a4840137818360c4826044356004013560051b810160a08282030160648301526064356004013560a48201526064356004013560246064350184830137600460643501358181018401859052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010301925af1801561087557610866575b50805b604435600401358110610753575080f35b73ffffffffffffffffffffffffffffffffffffffff825460101c16803b15610461578280916064604051809481937f05c42eeb000000000000000000000000000000000000000000000000000000008352602435600484015260248860051b604435010135602484015273ffffffffffffffffffffffffffffffffffffffff8a1660448401525af1801561085b57908391610847575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461081a57600101610742565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b61085090610c77565b6102085781386107e9565b6040513d85823e3d90fd5b61086f90610c77565b3861073f565b6040513d84823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f70726f6a656374207061757365640000000000000000000000000000000000006044820152fd5b610900915060203d602011610906575b6108f88183610cba565b810190610cfb565b38610612565b503d6108ee565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f70726f76657220706175736564000000000000000000000000000000000000006044820152fd5b610984915060203d602011610906576108f88183610cba565b386105af565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6e6f2064617070000000000000000000000000000000000000000000000000006044820152fd5b503461020c578060031936011261020c5773ffffffffffffffffffffffffffffffffffffffff6020915460101c16604051908152f35b503461020c578060031936011261020c57602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b503461020c57604060031936011261020c576004356024359073ffffffffffffffffffffffffffffffffffffffff80831680930361045d57806002541660405180917f6352211e00000000000000000000000000000000000000000000000000000000825284600483015281602460209485935afa8015610bde5783918791610be9575b501691338314928315610b4f575b5050610b107ff121fc55c0fd19e108d2d5642aff2967949fb708d9b985093c530a8a1fb9777892610d3f565b8285526003815260408520847fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790556040519384523393a380f35b60049193508290604051928380927f8da5cb5b0000000000000000000000000000000000000000000000000000000082525afa8015610bde577ff121fc55c0fd19e108d2d5642aff2967949fb708d9b985093c530a8a1fb9777893610b10928892610bbf575b5016331492610ae4565b610bd7919250843d86116101d9576101ca8183610cba565b9038610bb5565b6040513d88823e3d90fd5b610c009150833d85116101d9576101ca8183610cba565b38610ad6565b503461020c578060031936011261020c57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b9050346102085760206003193601126102085773ffffffffffffffffffffffffffffffffffffffff60406020936004358152600385522054168152f35b67ffffffffffffffff8111610c8b57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c8b57604052565b90816020910312610458575180151581036104585790565b90816020910312610458575173ffffffffffffffffffffffffffffffffffffffff811681036104585790565b15610d4657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e6f742070726f6a656374206f776e65720000000000000000000000000000006044820152fdfea164736f6c6343000813000a