0x60806040523480156200001157600080fd5b50604051620023fe380380620023fe83398101604081905262000034916200030c565b6040518060400160405280600f81526020017f4461696c794e46545265776172647300000000000000000000000000000000008152506040518060400160405280600381526020017f444e5200000000000000000000000000000000000000000000000000000000008152508160009081620000b191906200046d565b506001620000c082826200046d565b505050620000ef620000e0620001d8640100000000026401000000009004565b640100000000620001dc810204565b60008052600d6020527f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee6200012585826200046d565b506001600052600d6020527ffd54ff1ed53f34a900b24c5ba64f85761163b5d82d98a47b9bd80e45466993c56200015d84826200046d565b506002600052600d6020527f10a81eed9d63d16face5e76357905348e6253d3394086026bb2bf2145d7cc2496200019583826200046d565b506003600052600d6020527f26b4a10d0f0b04925c23bd4480ee147c916e5e87a7d68206a533dad160ac81e2620001cd82826200046d565b50505050506200053f565b3390565b60068054600160a060020a03838116600160a060020a0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200026f57600080fd5b81516001604060020a03808211156200028c576200028c6200022e565b604051601f8301601f19908116603f01168101908282118183101715620002b757620002b76200022e565b81604052838152602092508683858801011115620002d457600080fd5b600091505b83821015620002f85785820183015181830184015290820190620002d9565b600093810190920192909252949350505050565b600080600080608085870312156200032357600080fd5b84516001604060020a03808211156200033b57600080fd5b62000349888389016200025d565b955060208701519150808211156200036057600080fd5b6200036e888389016200025d565b945060408701519150808211156200038557600080fd5b62000393888389016200025d565b93506060870151915080821115620003aa57600080fd5b50620003b9878288016200025d565b91505092959194509250565b600281046001821680620003da57607f821691505b60208210810362000414577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111562000468576000818152602081206020601f86010481016020861015620004435750805b6020601f860104820191505b8181101562000464578281556001016200044f565b5050505b505050565b81516001604060020a038111156200048957620004896200022e565b620004a1816200049a8454620003c5565b846200041a565b602080601f831160018114620004dd5760008415620004c05750858301515b60028086026008870290910a600019041982161786555062000464565b600085815260208120601f198616915b828110156200050e57888601518255948401946001909101908401620004ed565b50858210156200052f57878501516008601f88160260020a60001904191681555b5050505050600202600101905550565b611eaf806200054f6000396000f3fe608060405234801561001057600080fd5b506004361061016a576000357c010000000000000000000000000000000000000000000000000000000090048063672756ad116100e0578063a95f4bc111610099578063a95f4bc1146102f1578063aeecb8a514610304578063b88d4fde14610334578063c87b56dd14610347578063e985e9c51461035a578063f2fde38b1461036d57600080fd5b8063672756ad146102a257806370a08231146102aa578063715018a6146102bd5780638da5cb5b146102c557806395d89b41146102d6578063a22cb465146102de57600080fd5b80632b33891c116101325780632b33891c146101ff5780632c42a9e11461023657806342842e0e1461024957806343af8a1f1461025c57806362970f9b1461026f5780636352211e1461028f57600080fd5b806301ffc9a71461016f57806306fdde0314610197578063081812fc146101ac578063095ea7b3146101d757806323b872dd146101ec575b600080fd5b61018261017d366004611762565b610380565b60405190151581526020015b60405180910390f35b61019f61041d565b60405161018e91906117cf565b6101bf6101ba3660046117e2565b6104af565b604051600160a060020a03909116815260200161018e565b6101ea6101e5366004611817565b6104d6565b005b6101ea6101fa366004611841565b610612565b61022861020d36600461187d565b600160a060020a03166000908152600a602052604090205490565b60405190815260200161018e565b6101ea6102443660046117e2565b610646565b6101ea610257366004611841565b610715565b6101ea61026a366004611927565b610730565b61028261027d36600461187d565b61077a565b60405161018e919061198f565b6101bf61029d3660046117e2565b6107e6565b6101ea61084e565b6102286102b836600461187d565b610973565b6101ea610a10565b600654600160a060020a03166101bf565b61019f610a24565b6101ea6102ec3660046119d3565b610a33565b6102826102ff36600461187d565b610a42565b6103276103123660046117e2565b60009081526008602052604090205460ff1690565b60405161018e9190611a4d565b6101ea610342366004611a5b565b610aac565b61019f6103553660046117e2565b610ae7565b610182610368366004611ad7565b610b46565b6101ea61037b36600461187d565b610b74565b6000600160e060020a031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806103e35750600160e060020a031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061041757507f01ffc9a700000000000000000000000000000000000000000000000000000000600160e060020a03198316145b92915050565b60606000805461042c90611b0a565b80601f016020809104026020016040519081016040528092919081815260200182805461045890611b0a565b80156104a55780601f1061047a576101008083540402835291602001916104a5565b820191906000526020600020905b81548152906001019060200180831161048857829003601f168201915b5050505050905090565b60006104ba82610c07565b50600090815260046020526040902054600160a060020a031690565b60006104e1826107e6565b905080600160a060020a031683600160a060020a0316036105725760405160e560020a62461bcd02815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b33600160a060020a038216148061058e575061058e8133610b46565b6106035760405160e560020a62461bcd02815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610569565b61060d8383610c6e565b505050565b61061c3382610ce9565b61063b5760405160e560020a62461bcd02815260040161056990611b41565b61060d838383610d48565b33610650826107e6565b600160a060020a0316146106a95760405160e560020a62461bcd02815260206004820152601a60248201527f596f7520646f206e6f74206f776e207468697320746f6b656e2e0000000000006044820152606401610569565b6106b281610edb565b336000818152600c6020908152604080832080546001810182559084529190922001839055518291907f9e4cd44a214c290e24a6167c728ce9a6e706dce33171779ea77807f9ab73cf879061070a9042815260200190565b60405180910390a350565b61060d83838360405180602001604052806000815250610aac565b610738610f7d565b80600d600084600381111561074f5761074f611a0f565b600381111561076057610760611a0f565b8152602001908152602001600020908161060d9190611bec565b600160a060020a0381166000908152600c60209081526040918290208054835181840281018401909452808452606093928301828280156107da57602002820191906000526020600020905b8154815260200190600101908083116107c6575b50505050509050919050565b600081815260026020526040812054600160a060020a0316806104175760405160e560020a62461bcd02815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610569565b336000908152600a6020526040902054620151809061086d9042611ccb565b10156108be5760405160e560020a62461bcd02815260206004820152601a60248201527f436c61696d206f6e636520657665727920323420686f7572732e0000000000006044820152606401610569565b336000908152600a60209081526040808320429055600990915281205490036108f4573360009081526009602052604090204290555b60006108ff33610fda565b9050600061090d3383611055565b336000818152600b60209081526040808320805460018101825590845291909220018390555191925082917fce7ed59d15573b7d7514edf00068fa68203217138e73c3b6437f9a4f3c88c165906109679086904290611cde565b60405180910390a35050565b6000600160a060020a0382166109f45760405160e560020a62461bcd02815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610569565b50600160a060020a031660009081526003602052604090205490565b610a18610f7d565b610a2260006110b0565b565b60606001805461042c90611b0a565b610a3e33838361110f565b5050565b600160a060020a0381166000908152600b60209081526040918290208054835181840281018401909452808452606093928301828280156107da57602002820191906000526020600020908154815260200190600101908083116107c65750505050509050919050565b610ab63383610ce9565b610ad55760405160e560020a62461bcd02815260040161056990611b41565b610ae1848484846111e0565b50505050565b60606000610af483611216565b90506000815111610b145760405180602001604052806000815250610b3f565b80610b1e846112f3565b604051602001610b2f929190611cf9565b6040516020818303038152906040525b9392505050565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610b7c610f7d565b600160a060020a038116610bfb5760405160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b610c04816110b0565b50565b600081815260026020526040902054600160a060020a0316610c045760405160e560020a62461bcd02815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610569565b6000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384169081179091558190610cb0826107e6565b600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610cf5836107e6565b905080600160a060020a031684600160a060020a03161480610d1c5750610d1c8185610b46565b80610d40575083600160a060020a0316610d35846104af565b600160a060020a0316145b949350505050565b82600160a060020a0316610d5b826107e6565b600160a060020a031614610d845760405160e560020a62461bcd02815260040161056990611d28565b600160a060020a038216610e025760405160e560020a62461bcd028152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b82600160a060020a0316610e15826107e6565b600160a060020a031614610e3e5760405160e560020a62461bcd02815260040161056990611d28565b6000818152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19908116909155600160a060020a0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610ee6826107e6565b9050610ef1826107e6565b6000838152600460209081526040808320805473ffffffffffffffffffffffffffffffffffffffff19908116909155600160a060020a0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600654600160a060020a03163314610a225760405160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b600160a060020a038116600090815260096020526040812054819062015180906110049042611ccb565b61100e9190611d85565b905060078110156110225750600092915050565b600e8110156110345750600192915050565b601e8110156110465750600292915050565b50600392915050565b50919050565b600780546000918291908261106983611daa565b9190505590506110798482611393565b6000818152600860205260409020805484919060ff191660018360038111156110a4576110a4611a0f565b02179055509392505050565b60068054600160a060020a0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b81600160a060020a031683600160a060020a0316036111735760405160e560020a62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b600160a060020a03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6111eb848484610d48565b6111f784848484611534565b610ae15760405160e560020a62461bcd02815260040161056990611dc3565b60008181526008602052604081205460609160ff90911690600d9082600381111561124357611243611a0f565b600381111561125457611254611a0f565b8152602001908152602001600020805461126d90611b0a565b80601f016020809104026020016040519081016040528092919081815260200182805461129990611b0a565b80156112e65780601f106112bb576101008083540402835291602001916112e6565b820191906000526020600020905b8154815290600101906020018083116112c957829003601f168201915b5050505050915050919050565b606060006113008361166a565b600101905060008167ffffffffffffffff81111561132057611320611898565b6040519080825280601f01601f19166020018201604052801561134a576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461135457509392505050565b600160a060020a0382166113ec5760405160e560020a62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b600081815260026020526040902054600160a060020a0316156114545760405160e560020a62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b600081815260026020526040902054600160a060020a0316156114bc5760405160e560020a62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b600160a060020a0382166000818152600360209081526040808320805460010190558483526002909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600160a060020a0384163b1561165f576040517f150b7a02000000000000000000000000000000000000000000000000000000008152600160a060020a0385169063150b7a0290611591903390899088908890600401611e20565b6020604051808303816000875af19250505080156115cc575060408051601f3d908101601f191682019092526115c991810190611e5c565b60015b61162c573d8080156115fa576040519150601f19603f3d011682016040523d82523d6000602084013e6115ff565b606091505b5080516000036116245760405160e560020a62461bcd02815260040161056990611dc3565b805181602001fd5b600160e060020a0319167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d40565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106116b3577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106116df576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116fd57662386f26fc10000830492506010015b6305f5e1008310611715576305f5e100830492506008015b612710831061172957612710830492506004015b6064831061173b576064830492506002015b600a83106104175760010192915050565b600160e060020a031981168114610c0457600080fd5b60006020828403121561177457600080fd5b8135610b3f8161174c565b60005b8381101561179a578181015183820152602001611782565b50506000910152565b600081518084526117bb81602086016020860161177f565b601f01601f19169290920160200192915050565b602081526000610b3f60208301846117a3565b6000602082840312156117f457600080fd5b5035919050565b8035600160a060020a038116811461181257600080fd5b919050565b6000806040838503121561182a57600080fd5b611833836117fb565b946020939093013593505050565b60008060006060848603121561185657600080fd5b61185f846117fb565b925061186d602085016117fb565b9150604084013590509250925092565b60006020828403121561188f57600080fd5b610b3f826117fb565b60e060020a634e487b7102600052604160045260246000fd5b600067ffffffffffffffff808411156118cc576118cc611898565b604051601f8501601f19908116603f011681019082821181831017156118f4576118f4611898565b8160405280935085815286868601111561190d57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561193a57600080fd5b82356004811061194957600080fd5b9150602083013567ffffffffffffffff81111561196557600080fd5b8301601f8101851361197657600080fd5b611985858235602084016118b1565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156119c7578351835292840192918401916001016119ab565b50909695505050505050565b600080604083850312156119e657600080fd5b6119ef836117fb565b915060208301358015158114611a0457600080fd5b809150509250929050565b60e060020a634e487b7102600052602160045260246000fd5b60048110611a495760e060020a634e487b7102600052602160045260246000fd5b9052565b602081016104178284611a28565b60008060008060808587031215611a7157600080fd5b611a7a856117fb565b9350611a88602086016117fb565b925060408501359150606085013567ffffffffffffffff811115611aab57600080fd5b8501601f81018713611abc57600080fd5b611acb878235602084016118b1565b91505092959194509250565b60008060408385031215611aea57600080fd5b611af3836117fb565b9150611b01602084016117fb565b90509250929050565b600281046001821680611b1e57607f821691505b60208210810361104f5760e060020a634e487b7102600052602260045260246000fd5b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201527f72206f7220617070726f76656400000000000000000000000000000000000000606082015260800190565b601f82111561060d576000818152602081206020601f86010481016020861015611bc55750805b6020601f860104820191505b81811015611be457828155600101611bd1565b505050505050565b815167ffffffffffffffff811115611c0657611c06611898565b611c1a81611c148454611b0a565b84611b9e565b602080601f831160018114611c535760008415611c375750858301515b60028086026008870290910a6000190419821617865550611be4565b600085815260208120601f198616915b82811015611c8257888601518255948401946001909101908401611c63565b5085821015611ca257878501516008601f88160260020a60001904191681555b5050505050600202600101905550565b60e060020a634e487b7102600052601160045260246000fd5b8181038181111561041757610417611cb2565b60408101611cec8285611a28565b8260208301529392505050565b60008351611d0b81846020880161177f565b835190830190611d1f81836020880161177f565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201527f6f776e6572000000000000000000000000000000000000000000000000000000606082015260800190565b600082611da55760e060020a634e487b7102600052601260045260246000fd5b500490565b600060018201611dbc57611dbc611cb2565b5060010190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527f63656976657220696d706c656d656e7465720000000000000000000000000000606082015260800190565b6000600160a060020a03808716835280861660208401525083604083015260806060830152611e5260808301846117a3565b9695505050505050565b600060208284031215611e6e57600080fd5b8151610b3f8161174c56fea2646970667358221220d04b445ca28a628f54cf68418ec25ed0c46fadd5f3fbace5fad688c6806a735864736f6c63430008130033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f6170692e746f6d74616c6b2e696f2f2f74686574612f0000000000000000000000000000000000000000000000000000000000000000001c68747470733a2f2f6170692e746f6d74616c6b2e696f2f626574612f00000000000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f6170692e746f6d74616c6b2e696f2f616c7068612f000000000000000000000000000000000000000000000000000000000000000000001d68747470733a2f2f6170692e746f6d74616c6b2e696f2f7369676d612f000000