0x60806040523480156200001157600080fd5b5060405160208062005021833981016040525180808080600160a060020a03811615156200003e57600080fd5b60008054600160a060020a031916600160a060020a039290921691909117905550306200006a620003a9565b600160a060020a03909116815260405190819003602001906000f08015801562000098573d6000803e3d6000fd5b5060028054600160a060020a031916600160a060020a039290921691909117905530620000c4620003ba565b600160a060020a03909116815260405190819003602001906000f080158015620000f2573d6000803e3d6000fd5b50600460006101000a815481600160a060020a030219169083600160a060020a031602179055505050620001476103206032601960096006600460036002600162000217640100000000026401000000009004565b6006805461012563ffffffff19909116176bffffffffffffffff00000000191667aabe53c00000000017606060020a63ffffffff0219166c260000000000000000000000001790556007805463920e230067ffffffffffffffff19918216179091556005805466038d7ea4c68000921691909117604060020a608060020a0319166f053444835ec5800000000000000000001790556040805142815290517f06acbfb32bcf8383f3b0a768b70ac9ec234ea0f2d3b9c77fa6a2de69b919aad1916020908290030190a150620004ad565b62000221620003cb565b6106408a61ffff16111580156200023d575060648961ffff1611155b80156200024f575060328861ffff1611155b801562000261575060128761ffff1611155b8015620002735750600c8661ffff1611155b801562000285575060088561ffff1611155b801562000297575060068461ffff1611155b8015620002a9575060048361ffff1611155b8015620002bb575060028261ffff1611155b1515620002c757600080fd5b600080825261ffff8b81166020808501919091528b82166040808601919091528b831660608601528a8316608086015289831660a086015288831660c086015287831660e086015286831661010086015285831661012086015261014085018490526101608501849052600554720100000000000000000000000000000000000090049092168352600c90819052912062000364918390620003eb565b505060058054600161ffff72010000000000000000000000000000000000008084048216929092011602609060020a61ffff0219909116179055505050505050505050565b60405161084a806200406083390190565b60405161077780620048aa83390190565b61018060405190810160405280600c906020820280388339509192915050565b600183019183908215620004765791602002820160005b838211156200044457835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030262000402565b8015620004745782816101000a81549061ffff021916905560020160208160010104928301926001030262000444565b505b506200048492915062000488565b5090565b620004aa91905b808211156200048457805461ffff191681556001016200048f565b90565b613ba380620004bd6000396000f30060806040526004361061026e5763ffffffff60e060020a60003504166301a413b981146102705780630c657eb01461029757806311610c25146102ac57806313ca1464146102b4578063148105ab146102e857806319eb691a146102f05780632100a5d9146103055780632500ec4a1461033f5780632b36a657146103765780632e5b21681461038b5780633b19e84a146103a05780633f073031146103b55780633fea1c2b146103bd5780634081db51146103db57806342d1f17f146103fc57806345279c81146104aa5780634949d9fa146104bf57806354fd4d50146104e057806356397c35146104f55780635ab1bd531461050a5780635acfefee1461051f5780635b40a584146105345780635c1548fb146105495780635c7b79f51461055e578063609f9a8e146105765780636c85c727146105975780636e9960c3146105f55780637280850e1461060a5780638020fb7714610628578063854b1cdf14610676578063893d20e81461068b5780638a14f12c146106a05780638ab1d681146106b55780638bb7819f146106d657806393e59dc1146106eb5780639619367d1461070057806396fd550a146107155780639f0f78ca14610737578063a3293c0e1461074c578063acca92e01461077f578063b3ff277d146107b4578063b41a6ce2146107c9578063b5bd3eb914610549578063b94371ec146107f7578063c6699ba81461080c578063cc69176314610859578063d47f269e14610880578063d5420df414610898578063da5d2fac146108bc578063e43252d714610941578063ec50361114610962578063ed9980a614610977578063f3f318531461098c578063fe5ff468146109a8575b005b34801561027c57600080fd5b506102856109c9565b60408051918252519081900360200190f35b3480156102a357600080fd5b50610285610a14565b61026e610a1a565b3480156102c057600080fd5b506102d263ffffffff60043516610b9e565b6040805160ff9092168252519081900360200190f35b61026e610bd0565b3480156102fc57600080fd5b50610285610e5a565b34801561031157600080fd5b5061032363ffffffff60043516610e77565b60408051600160a060020a039092168252519081900360200190f35b34801561034b57600080fd5b5061035d63ffffffff60043516610e92565b6040805163ffffffff9092168252519081900360200190f35b34801561038257600080fd5b50610285610ffd565b34801561039757600080fd5b50610285611024565b3480156103ac57600080fd5b50610323611040565b61026e611070565b3480156103c957600080fd5b5061035d63ffffffff6004351661107e565b3480156103e757600080fd5b5061035d600160a060020a03600435166111af565b34801561040857600080fd5b506104116111c7565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045557818101518382015260200161043d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561049457818101518382015260200161047c565b5050505090500194505050505060405180910390f35b3480156104b657600080fd5b506102856112fc565b3480156104cb57600080fd5b50610285600160a060020a0360043516611350565b3480156104ec57600080fd5b506102d26113ed565b34801561050157600080fd5b506103236113f2565b34801561051657600080fd5b50610323611401565b34801561052b57600080fd5b50610285611410565b34801561054057600080fd5b5061035d6114b5565b34801561055557600080fd5b506102856114c1565b34801561056a57600080fd5b5061026e6004356114e0565b34801561058257600080fd5b5061026e63ffffffff600435166024356114ed565b3480156105a357600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261028595833595369560449491939091019190819084018382808284375094975061158d9650505050505050565b34801561060157600080fd5b50610323611807565b34801561061657600080fd5b5061028563ffffffff60043516611832565b34801561063457600080fd5b5061063d611b19565b604051808261018080838360005b8381101561066357818101518382015260200161064b565b5050505090500191505060405180910390f35b34801561068257600080fd5b50610285611b38565b34801561069757600080fd5b50610323611b49565b3480156106ac57600080fd5b50610285611bce565b3480156106c157600080fd5b5061026e600160a060020a0360043516611bec565b3480156106e257600080fd5b50610285611d04565b3480156106f757600080fd5b50610323611d4b565b34801561070c57600080fd5b50610285611d5a565b34801561072157600080fd5b5061026e67ffffffffffffffff60043516611d6a565b34801561074357600080fd5b50610285612045565b34801561075857600080fd5b5061076a63ffffffff60043516612058565b60405181518152808260a0808383602061064b565b34801561078b57600080fd5b506107a063ffffffff600435166024356120ae565b604080519115158252519081900360200190f35b3480156107c057600080fd5b506102856122a7565b3480156107d557600080fd5b5061026e67ffffffffffffffff6004358116906024351660ff604435166122bd565b34801561080357600080fd5b506103236123cd565b34801561081857600080fd5b5061026e61ffff60043581169060243581169060443581169060643581169060843581169060a43581169060c43581169060e43581169061010435166123d7565b34801561086557600080fd5b5061026e63ffffffff6004351660ff602435166044356124f0565b34801561088c57600080fd5b5061035d6004356127a1565b3480156108a457600080fd5b5061035d60043563ffffffff602435166044356127b6565b3480156108c857600080fd5b506108da63ffffffff60043516612887565b6040805163ffffffff9a8b16815267ffffffffffffffff90991660208a015261ffff909716888801529488166060880152928716608087015260ff91821660a0870152861660c0860152941660e08401529092166101008201529051908190036101200190f35b34801561094d57600080fd5b5061026e600160a060020a0360043516612908565b34801561096e57600080fd5b50610285612a20565b34801561098357600080fd5b50610285612a26565b34801561099857600080fd5b5061063d61ffff60043516612a37565b3480156109b457600080fd5b50610285600160a060020a0360043516612ac9565b600354600090600160a060020a0330163190826109e46114c1565b90508083116109f65760009350610a0e565b818101831015610a0a578083039350610a0e565b8193505b50505090565b60035481565b600554349060009068010000000000000000900467ffffffffffffffff16821115610a8557610a806040805190810160405280600e81526020017f42657420746f6f206c617267652e000000000000000000000000000000000000815250836001612adb565b610b9a565b60055467ffffffffffffffff16821015610ada57610a806040805190810160405280600e81526020017f42657420746f6f20736d616c6c2e000000000000000000000000000000000000815250836001612adb565b610ae2611d04565b821115610b2a57610a806040805190810160405280601881526020017f5468652062616e6b726f6c6c20697320746f6f206c6f772e0000000000000000815250836001612adb565b610b3382612bc1565b600554604080514281526020810186905261ffff608060020a90930492909216828201525191925063ffffffff831691600160a060020a033316917f12b9199c6d155759e1d7f4f5c031e9ed900ea5b210b38475e7f1456d8ef03393919081900360600190a35b5050565b600080610baa83610e92565b905063ffffffff811615610bc657610bc181611832565b610bc9565b600b5b9392505050565b60048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263949d225d9282820192602092908290030181600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050506040513d6020811015610c5757600080fd5b50511580610cf9575060048054604080517f21887c3d000000000000000000000000000000000000000000000000000000008152600160a060020a0333811694820194909452905192909116916321887c3d916024808201926020929091908290030181600087803b158015610ccc57600080fd5b505af1158015610ce0573d6000803e3d6000fd5b505050506040513d6020811015610cf657600080fd5b50515b1515610d0457600080fd5b600254604080517ff5d82b6b000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301523460248301529151919092169163f5d82b6b91604480830192600092919082900301818387803b158015610d7157600080fd5b505af1158015610d85573d6000803e3d6000fd5b50505050600260009054906101000a9004600160a060020a0316600160a060020a0316632ddbd13a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050506040513d6020811015610e0657600080fd5b50516003819055604080514281523460208201528082019290925251600160a060020a033316917f160f75e2b6a3d77c89deda80a60c72ad72cd9f540d023e7fdf6317aecddb68db919081900360600190a2565b6006546c01000000000000000000000000900463ffffffff165b90565b600b60205260009081526040902054600160a060020a031681565b6000610e9c613a41565b5063ffffffff80831660009081526008602090815260408083208151610120810183529054808616825267ffffffffffffffff6401000000008204169382019390935261ffff6c0100000000000000000000000084041691810191909152607060020a820484166060820152609060020a82048416608082015260ff60b060020a8304811660a083015260b860020a8304851660c083015260d860020a830490941660e0820181905260f860020a90920490931661010084015215610f67578160e001519250610ff6565b60a082015160ff161515610f815781608001519250610ff6565b60c082015163ffffffff161515610f9757610ff6565b5060c081015163ffffffff1640801515610fb75781608001519250610ff6565b6040805182815260e060020a63ffffffff87160260208201529051908190036024019020608083015160a0840151610ff392919060ff166127b6565b92505b5050919050565b6000600160a060020a03301631816110136114c1565b60035401905080820392505b505090565b60055468010000000000000000900467ffffffffffffffff1690565b600061106b7f5452454153555259000000000000000000000000000000000000000000000000612d67565b905090565b61107c33346000612dce565b565b6000611088613a41565b5063ffffffff80831660009081526008602090815260408083208151610120810183529054808616825267ffffffffffffffff6401000000008204169382019390935261ffff6c0100000000000000000000000084041691810191909152607060020a820484166060820152609060020a820484166080820181905260ff60b060020a8404811660a084015260b860020a8404861660c084015260d860020a840490951660e083015260f860020a909204909316610100840152156111535781608001519250610ff6565b606082015163ffffffff16151561116957610ff6565b50606081015163ffffffff164080151561118257610ff6565b6040805182815260e060020a63ffffffff87160260208201529051908190036024019020610ff3906127a1565b600a6020526000908152604090205463ffffffff1681565b606080600260009054906101000a9004600160a060020a0316600160a060020a0316637bb98a686040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561121d57600080fd5b505af1158015611231573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604090815281101561125a57600080fd5b81019080805164010000000081111561127257600080fd5b8201602081018481111561128557600080fd5b81518560208202830111640100000000821117156112a257600080fd5b505092919060200180516401000000008111156112be57600080fd5b820160208101848111156112d157600080fd5b81518560208202830111640100000000821117156112ee57600080fd5b509496509450505050509091565b600080611307611d04565b60055490915068010000000000000000900467ffffffffffffffff16811161132f5780611349565b60055468010000000000000000900467ffffffffffffffff165b91505b5090565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b1580156113bb57600080fd5b505af11580156113cf573d6000803e3d6000fd5b505050506040513d60208110156113e557600080fd5b505192915050565b600281565b600254600160a060020a031681565b600054600160a060020a031690565b600080600061141d610ffd565b91506000821361142c5761101f565b60018054830190559091508190611441611040565b905080600160a060020a03168360405160006040518083038185875af192505050151561146d57600080fd5b60408051428152602081018590528151600160a060020a038416927f6930d0e66bafb5f81d786f05b526422c3839d434d99a531eb4b2e4a535348165928290030190a2505090565b60065463ffffffff1690565b6007546801000000000000000090046affffffffffffffffffffff1690565b6114ea3382612ecd565b50565b6000806114fa84846120ae565b63ffffffff8516600090815260086020526040902054909250640100000000900467ffffffffffffffff16905081151561157e576115796040805190810160405280601e81526020017f4661696c656420746f2066696e616c697a65207072696f722067616d652e00008152508267ffffffffffffffff166000612adb565b611587565b61158781611d6a565b50505050565b6000338180808061159c6114c1565b935030600160a060020a03163192508383116115b95760006115bd565b8383035b9150818811156115cb578197505b600254604080517f68c6b11a000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018c9052915191909216916368c6b11a9160448083019260209291908290030181600087803b15801561163a57600080fd5b505af115801561164e573d6000803e3d6000fd5b505050506040513d602081101561166457600080fd5b5051600254604080517f2ddbd13a0000000000000000000000000000000000000000000000000000000081529051929a50600160a060020a0390911691632ddbd13a916004808201926020929091908290030181600087803b1580156116c957600080fd5b505af11580156116dd573d6000803e3d6000fd5b505050506040513d60208110156116f357600080fd5b5051600355871515611704576117fc565b866040518082805190602001908083835b602083106117345780518252601f199092019160209182019101611715565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905084600160a060020a0316888260e060020a9004906040518263ffffffff1660e060020a02815260040160006040518083038185885af1935050505015156117a957600080fd5b60035460408051428152602081018b90528082019290925251600160a060020a038716917fe247ca1cc083b13e9e81a5d9f83c08e1be5369c7c6f12637cb0bf63d9d5b29f6919081900360600190a28795505b505050505092915050565b600061106b7f41444d494e000000000000000000000000000000000000000000000000000000612d67565b6000806060808280808080808080808063ffffffff8f16151561185857600b9d50611b07565b60408051600d8082526101c0820190925290602082016101a080388339505060408051600580825260c08201909252929e5090506020820160a080388339019050509a506064985060009750600092505b60058310156119fa576118c28f63ffffffff1684612fde565b9c5060338d11156118d657600b9d50611b07565b600d8d0691508b828151811015156118ea57fe5b602090810290910101805160010190528a600d8e0481518110151561190b57fe5b602090810290910101805160010190528a600d8e0481518110151561192c57fe5b906020019060200201516005141561194357600194505b811515611953576001935061196b565b8882101561195f578198505b8782111561196b578197505b8b8281518110151561197957fe5b90602001906020020151600214156119a157861515611996578199505b6001909601956119ef565b8b828151811015156119af57fe5b90602001906020020151600314156119ca57600395506119ef565b8b828151811015156119d857fe5b90602001906020020151600414156119ef57600495505b6001909201916118a9565b6000871115611a87578560041415611a155760039d50611b07565b856003148015611a255750866002145b15611a335760049d50611b07565b8560031415611a455760079d50611b07565b8660021415611a575760089d50611b07565b866001148015611a705750600a8a101580611a70575089155b15611a7e5760099d50611b07565b600a9d50611b07565b83611a9757888803600414611aa6565b8760041480611aa65750886009145b9050808015611ab25750845b8015611abe5750886009145b15611acc5760019d50611b07565b808015611ad65750845b15611ae45760029d50611b07565b8415611af35760059d50611b07565b8015611b025760069d50611b07565b600a9d505b50505050505050505050505050919050565b611b21613a8d565b60055461106b90608060020a900461ffff16612a37565b600554608060020a900461ffff1690565b60008060009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b9d57600080fd5b505af1158015611bb1573d6000803e3d6000fd5b505050506040513d6020811015611bc757600080fd5b5051905090565b600654640100000000900467ffffffffffffffff16633b9aca000290565b6000611bf66123cd565b600160a060020a031633600160a060020a0316141515611c1557600080fd5b60048054604080517f29092d0e000000000000000000000000000000000000000000000000000000008152600160a060020a0386811694820194909452905192909116916329092d0e916024808201926020929091908290030181600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b505050506040513d6020811015611cab57600080fd5b505190508015610b9a5733600160a060020a031682600160a060020a03167fe64bfe936314bda02a76de6d787876f31f93470b24b68a9a2ceaa07fb609f392426040518082815260200191505060405180910390a35050565b60055461ffff608060020a90910481166000908152600c602052604081205490916201000090910481166002021680611d3b6109c9565b811515611d4457fe5b0491505090565b600454600160a060020a031681565b60055467ffffffffffffffff1690565b60055460009067ffffffffffffffff6801000000000000000090910481169083161115611ddc57610a806040805190810160405280600e81526020017f42657420746f6f206c617267652e0000000000000000000000000000000000008152508367ffffffffffffffff166000612adb565b60055467ffffffffffffffff9081169083161015611e3f57610a806040805190810160405280600e81526020017f42657420746f6f20736d616c6c2e0000000000000000000000000000000000008152508367ffffffffffffffff166000612adb565b611e47611d04565b8267ffffffffffffffff161115611ea357610a806040805190810160405280601881526020017f5468652062616e6b726f6c6c20697320746f6f206c6f772e00000000000000008152508367ffffffffffffffff166000612adb565b600160a060020a03331660009081526009602052604090205467ffffffffffffffff83161115611f1857610a806040805190810160405280601481526020017f496e73756666696369656e7420637265646974730000000000000000000000008152508367ffffffffffffffff166000612adb565b611f2182612bc1565b6007805472ffffffffffffffffffffff000000000000000019811667ffffffffffffffff861668010000000000000000928390046affffffffffffffffffffff908116829003169092021790915533600160a060020a031660008181526009602090815260409182902080548590039055815142815290810193909352805193945063ffffffff85169391927f319d155b1caa4fddb433c692c929ea27c83e6a83da54b51d8b8c9847238c5294929081900390910190a36005546040805142815267ffffffffffffffff85166020820152608060020a90920461ffff16828201525163ffffffff83169133600160a060020a0316917f12b9199c6d155759e1d7f4f5c031e9ed900ea5b210b38475e7f1456d8ef03393916060908290030190a35050565b600061204f610ffd565b60015401905090565b612060613aad565b6000805b6005811015610ff6576006810260020a603f8102925084831663ffffffff1681151561208c57fe5b0483826005811061209957fe5b60ff9092166020929092020152600101612064565b63ffffffff808316600090815260086020908152604080832080548086168552600b9093529083205492939092600160a060020a031691607060020a900416151561213957612132856040805190810160405280601081526020017f496e76616c69642067616d652049642e00000000000000000000000000000000815250613002565b925061229f565b33600160a060020a031681600160a060020a031614151561219357612132856040805190810160405280601681526020017f54686973206973206e6f7420796f75722067616d652e00000000000000000000815250613002565b815463ffffffff607060020a909104164314156121e957612132856040805190810160405280601a81526020017f496e697469616c2068616e64206e6f74206176616961626c652e000000000000815250613002565b815463ffffffff60b860020a9091041643141561223f57612132856040805190810160405280601a81526020017f447261776e206361726473206e6f7420617661696c61626c652e000000000000815250613002565b815460f860020a900460ff161561228f57612132856040805190810160405280601781526020017f47616d6520616c72656164792066696e616c697a65642e000000000000000000815250613002565b61229a8286866130bf565b600192505b505092915050565b60075467ffffffffffffffff16633b9aca000290565b6122c5611807565b600160a060020a031633600160a060020a03161415156122e457600080fd5b67053444835ec5800067ffffffffffffffff8316111561230357600080fd5b600554609060020a900461ffff1660ff82161061231f57600080fd5b6005805467ffffffffffffffff191667ffffffffffffffff858116919091176fffffffffffffffff0000000000000000191668010000000000000000918516919091021771ffff00000000000000000000000000000000191660ff8316608060020a021790556040805142815233600160a060020a0316602082015281517f1da3087dd1a739b3a686c91e6fadfbea4d3a88345fae920dcd4e65c920e29a88929181900390910190a1505050565b600061106b611807565b60006123e1611807565b600160a060020a031633600160a060020a031614151561240057600080fd5b506005546201518042049063ffffffff80831674010000000000000000000000000000000000000000909204161061243757600080fd5b6005805477ffffffff000000000000000000000000000000000000000019167401000000000000000000000000000000000000000063ffffffff8416021790556124888a8a8a8a8a8a8a8a8a613563565b60055460408051428152600160a060020a033316602082015260001961ffff609060020a90940484160190921682820152517fc151d2fd11066f5c29b943a5f2bc7811d4d4162098b3009f54c2ca78e98f1c359181900360600190a150505050505050505050565b63ffffffff808416600090815260086020908152604080832080548086168552600b9093529220549192600160a060020a0390921691607060020a90910416151561257a5761257585856040805190810160405280601081526020017f496e76616c69642067616d652049642e000000000000000000000000000000008152506136d6565b61279a565b33600160a060020a031681600160a060020a03161415156125d55761257585856040805190810160405280601681526020017f54686973206973206e6f7420796f75722067616d652e000000000000000000008152506136d6565b815463ffffffff607060020a9091041643141561262c5761257585856040805190810160405280601c81526020017f496e697469616c206361726473206e6f7420617661696c61626c652e000000008152506136d6565b815460b860020a900463ffffffff16156126805761257585856040805190810160405280601481526020017f436172647320616c726561647920647261776e2e0000000000000000000000008152506136d6565b601f8460ff1611156126cc5761257585856040805190810160405280600e81526020017f496e76616c69642064726177732e0000000000000000000000000000000000008152506136d6565b60ff8416151561273d576125758585606060405190810160405280602a81526020017f43616e6e6f74206472617720302063617264732e205573652066696e616c697a81526020017f6520696e73746561642e000000000000000000000000000000000000000000008152506136d6565b815460f860020a900460ff161561278e5761257585856040805190810160405280601781526020017f47616d6520616c72656164792066696e616c697a65642e0000000000000000008152506136d6565b61279a8286868661379b565b5050505050565b60006127b0826005600061396c565b92915050565b600080808080601f8611156127c757fe5b63ffffffff87161515806127db575085601f145b15156127e357fe5b8515156127f25786945061287c565b85601f14156128165761280f88600561280a8a6139dd565b61396c565b945061287c565b600092505b6005831015612851578260020a86166000141561283757612846565b8260060260020a603f02841793505b60019092019161281b565b8319637fffffff16915061286a88600561280a8a6139dd565b841663ffffffff838916161794508490505b505050509392505050565b60086020526000908152604090205463ffffffff8082169167ffffffffffffffff6401000000008204169161ffff6c0100000000000000000000000083041691607060020a8104821691609060020a820481169160ff60b060020a820481169260b860020a830481169260d860020a81049091169160f860020a9091041689565b60006129126123cd565b600160a060020a031633600160a060020a031614151561293157600080fd5b60048054604080517f0a3b0a4f000000000000000000000000000000000000000000000000000000008152600160a060020a038681169482019490945290519290911691630a3b0a4f916024808201926020929091908290030181600087803b15801561299d57600080fd5b505af11580156129b1573d6000803e3d6000fd5b505050506040513d60208110156129c757600080fd5b505190508015610b9a5733600160a060020a031682600160a060020a03167f36794b07b1dabd3b5763df32ac01b7ab16f470ac57e87b63d0d4c1e40efdbf47426040518082815260200191505060405180910390a35050565b60015481565b600554609060020a900461ffff1690565b612a3f613a8d565b60055461ffff609060020a909104811690831610612a5c57600080fd5b61ffff82166000908152600c60208190526040808320815161018081019283905293909291908390855b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411612a86575094979650505050505050565b60096020526000908152604090205481565b8015612b0957604051600160a060020a033316908390600081818185875af1925050501515612b0957600080fd5b33600160a060020a03167f38b6fed49e5857eec3c089ce663a4064b021b4ab48e164cddd63177c7685a2a14284866040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612b80578181015183820152602001612b68565b50505050905090810190601f168015612bad5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2505050565b600654600160a060020a0333166000908152600a6020526040812054909163ffffffff6c0100000000000000000000000090910481169116828080831515612c6657600160a060020a0333166000818152600a60209081526040808320805463ffffffff6001909b019a8b1663ffffffff1990911681179091558352600b9091529020805473ffffffffffffffffffffffffffffffffffffffff191690911790558493505b50506006805463ffffffff19808216600163ffffffff808516919091018082169283176bffffffffffffffff0000000019908116633b9aca0067ffffffffffffffff9d8e16908104640100000000988990048f1601909d168702176fffffffff00000000000000000000000019166c010000000000000000000000009a84168b021790965560055460009384526008602052604090932080549094169782169790971790941692909802919091176dffff0000000000000000000000001916608060020a90970461ffff169094029590951771ffffffff00000000000000000000000000001916607060020a43909616959095029490941790915592915050565b60008054604080517fbb34534c000000000000000000000000000000000000000000000000000000008152600481018590529051600160a060020a039092169163bb34534c9160248082019260209290919082900301818787803b1580156113bb57600080fd5b60008080841515612dde57612ec5565b63ffffffff841615612df657633b9aca008504612df9565b60005b6007805467ffffffffffffffff808216840190811667ffffffffffffffff196affffffffffffffffffffff6801000000000000000080860482168d019182160272ffffffffffffffffffffff000000000000000019909516949094171617909255600160a060020a03891660008181526009602090815260409182902080548c01905581514281529081018b9052815195985092965092945063ffffffff88169390927f4e8cf3f0c5d8f7d35d109e7015348cbeb93094df121b4580598480d06066410b928290030190a35b505050505050565b600160a060020a038216600090815260096020526040902054811180612ef1575080155b15612f115750600160a060020a0381166000908152600960205260409020545b801515612f1d57610b9a565b600780546affffffffffffffffffffff6801000000000000000080830482168590039091160272ffffffffffffffffffffff000000000000000019909116179055600160a060020a0382166000818152600960205260408082208054859003905551839181818185875af1925050501515612f9757600080fd5b60408051428152602081018390528151600160a060020a038516927ff726a786741417cb817896860b979c3bddf4bda01575b4482efb4bb685c6baee928290030190a25050565b60006006820260020a603f818181028616811515612ff857fe5b0495945050505050565b60008263ffffffff1633600160a060020a03167f1c8fefb714208502f1a915e3a0fb01c204268cf90a0eed42cf081650c91e131742856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561307b578181015183820152602001613063565b50505050905090810190601f1680156130a85780820380516001836020036101000a031916815260200191505b50935050505060405180910390a350600092915050565b825460009081908190819081908190819060f860020a900460ff16156130e157fe5b895463ffffffff81166000908152600b6020526040902054600160a060020a0316975060b060020a900460ff16156131b457895460b860020a900463ffffffff164095508515613178576040805187815263ffffffff8b811660e060020a02602083015291516024918190039190910190208b5461317192609060020a8204169060b060020a900460ff166127b6565b94506131af565b8954609060020a900463ffffffff16156131a6578954609060020a900463ffffffff169450600292506131af565b60009450600392505b6133a7565b8954607060020a900463ffffffff1640955085156132765785881461323f5761323989606060405190810160405280602681526020017f48617368436865636b204661696c65642e205472792072656672657368696e6781526020017f2067616d652e0000000000000000000000000000000000000000000000000000815250613002565b50613557565b6040805187815260e060020a63ffffffff8c16026020820152905190819003602401902061326c906127a1565b93508394506133a7565b6132dc89606060405190810160405280603081526020017f496e697469616c2068616e64206e6f7420617661696c61626c652e204472617781526020017f696e672035206e65772063617264732e00000000000000000000000000000000815250613002565b50895476ff000000000000000000000000000000000000000000001916761f00000000000000000000000000000000000000000000177affffffff0000000000000000000000000000000000000000000000191660b860020a4363ffffffff90811691909102919091178b556040805142815260006020820152601f81830152600160608201529051918b1691600160a060020a038a16917f5de8219970cf1855f1b8ccfe2f57fb5579fd91696de0e60b6ef6e47475b59f43916080918190039190910190a3613557565b63ffffffff8516156133c1576133bc85611832565b6133c4565b600b5b915060008463ffffffff16111561340157895475ffffffff0000000000000000000000000000000000001916609060020a63ffffffff861602178a555b89547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660d860020a63ffffffff871602177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f860020a60ff841690810291909117808c556c01000000000000000000000000810461ffff166000908152600c6020819052604090912064010000000090920467ffffffffffffffff16929081106134a957fe5b601091828204019190066002029054906101000a900461ffff1661ffff1602905060008111156134de576134de87828b612dce565b89546040805142815260d860020a830463ffffffff908116602083015260ff60f860020a9094048416828401526060820185905292861660808201529051918b1691600160a060020a038a16917f018ef872420a53b47435588a5d67be6000b1c368eabc03049066ba29ad967c76919081900360a00190a35b50505050505050505050565b61356b613a8d565b6106408a61ffff1611158015613586575060648961ffff1611155b8015613597575060328861ffff1611155b80156135a8575060128761ffff1611155b80156135b95750600c8661ffff1611155b80156135ca575060088561ffff1611155b80156135db575060068461ffff1611155b80156135ec575060048361ffff1611155b80156135fd575060028261ffff1611155b151561360857600080fd5b600080825261ffff8b81166020808501919091528b82166040808601919091528b831660608601528a8316608086015289831660a086015288831660c086015287831660e086015286831661010086015285831661012086015261014085018490526101608501849052600554609060020a90049092168352600c908190529120613694918390613acc565b505060058054600161ffff609060020a808404821692909201160273ffff00000000000000000000000000000000000019909116179055505050505050505050565b8263ffffffff1633600160a060020a03167f4223ca7d6c37a824c716bcea67d6cd07f359bfe2173713e97e60a893baa7a0dc428585604051808481526020018360ff1660ff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561375a578181015183820152602001613742565b50505050905090810190601f1680156137875780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a3505050565b83546000908190819060b860020a900463ffffffff16156137b857fe5b8654607060020a900463ffffffff164091508115613877578184146138435761383e8686606060405190810160405280602681526020017f48617368436865636b204661696c65642e205472792072656672657368696e6781526020017f2067616d652e00000000000000000000000000000000000000000000000000008152506136d6565b613963565b6040805183815260e060020a63ffffffff89160260208201529051908190036024019020613870906127a1565b925061387f565b50601f935060015b865475ffffffff0000000000000000000000000000000000001916609060020a63ffffffff85811682029290921776ff00000000000000000000000000000000000000000000191660b060020a60ff898116918202929092177affffffff0000000000000000000000000000000000000000000000191660b860020a4386160217808c55604080514281529490910485166020850152838101919091529084166060830152519188169133600160a060020a0316917f5de8219970cf1855f1b8ccfe2f57fb5579fd91696de0e60b6ef6e47475b59f43916080918190039190910190a35b50505050505050565b600080808085151561397d576139d3565b600092505b505060348506600281900a84811615156139bb57938417936006830260020a82029390931792600190920191858314156139bb576139d3565b60408051978852519687900360200190962095613982565b5050509392505050565b600080808063ffffffff851615156139f85760009350613a39565b5060005b6005811015613a39576006810260020a603f8102935063ffffffff86851616811515613a2457fe5b04600281900a949094179391506001016139fc565b505050919050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b61018060405190810160405280600c906020820280388339509192915050565b60a0604051908101604052806005906020820280388339509192915050565b600183019183908215613b525791602002820160005b83821115613b2257835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613ae2565b8015613b505782816101000a81549061ffff0219169055600201602081600101049283019260010302613b22565b505b5061134c92610e749250905b8082111561134c57805461ffff19168155600101613b5e5600a165627a7a723058200f5cc22a5e24af0d745887ab53349d299b815c565830a0854ebe2c3c9483c09f0029608060405234801561001057600080fd5b5060405160208061084a833981016040525160028054600160a060020a031916600160a060020a039092169190911790556107fa806100506000396000f30060806040526004361061008d5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632ddbd13a811461009257806368c6b11a146100b957806370a08231146100dd5780637bb98a68146100fe5780638da5cb5b146101ac578063949d225d146101dd578063f29ee125146101f2578063f5d82b6b1461023b575b600080fd5b34801561009e57600080fd5b506100a7610261565b60408051918252519081900360200190f35b3480156100c557600080fd5b506100a7600160a060020a0360043516602435610267565b3480156100e957600080fd5b506100a7600160a060020a0360043516610386565b34801561010a57600080fd5b506101136103a1565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561015757818101518382015260200161013f565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561019657818101518382015260200161017e565b5050505090500194505050505060405180910390f35b3480156101b857600080fd5b506101c1610578565b60408051600160a060020a039092168252519081900360200190f35b3480156101e957600080fd5b506100a7610587565b3480156101fe57600080fd5b50610213600160a060020a0360043516610692565b60408051938452600160a060020a039283166020850152911682820152519081900360600190f35b34801561024757600080fd5b5061025f600160a060020a03600435166024356106bf565b005b60005481565b6002546000908190819033600160a060020a0390811691161461028957600080fd5b600160a060020a038516158061029d575083155b156102a75761037e565b5050600160a060020a038316600090815260016020526040902080548015156102cf5761037e565b80841061036a576000805482900381556001838101805460028087018054600160a060020a039081168752602086905260408088208701805495831673ffffffffffffffffffffffffffffffffffffffff1996871617905591549454811687528187208301805495821695851695909517909455928a168552918420938455918301805483169055919091018054909116905591508161037e565b600080548590039055815484900382558392505b505092915050565b600160a060020a031660009081526001602052604090205490565b6060806000806103af6107ae565b6103b7610587565b9250826040519080825280602002602001820160405280156103e3578160200160208202803883390190505b50945082604051908082528060200260200182016040528015610410578160200160208202803883390190505b50600080805260016020908152604080516060810182527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495481527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4a54600160a060020a03908116938201939093527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4b5490921690820152919550925090505b60008160200151600160a060020a0316111561057157806020015185838151811015156104d957fe5b600160a060020a03928316602091820290920181019190915282810151909116600090815260019091526040902054845185908490811061051657fe5b602090810290910181019190915290810151600160a060020a039081166000908152600180845260409182902082516060810184528154815281830154851695810195909552600201549092169083015291909101906104b0565b5050509091565b600254600160a060020a031681565b60006105916107ae565b506000805260016020908152604080516060810182527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495481527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4a54600160a060020a03908116938201939093527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4b54909216908201525b60008160200151600160a060020a0316111561068e57602090810151600160a060020a03908116600090815260018084526040918290208251606081018452815481528183015485169581019590955260020154909216908301529190910190610629565b5090565b6001602081905260009182526040909120805491810154600290910154600160a060020a03918216911683565b60025460009033600160a060020a039081169116146106dd57600080fd5b600160a060020a03831615806106f1575081155b156106fb576107a9565b50600160a060020a03821660009081526001602052604090208054151561079a57600160208190527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4a8054918301805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039485161790915581548316600090815260408120600201805494881694831685179055805281541690911790555b60008054830190558054820181555b505050565b6040805160608101825260008082526020820181905291810191909152905600a165627a7a72305820481de3258a41964b0a173757c3bd81e77a025c5fb49fd84d1c808900658d65a00029608060405234801561001057600080fd5b50604051602080610777833981016040525160018054600160a060020a031916600160a060020a03909216919091179055610727806100506000396000f3006080604052600436106100825763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630a3b0a4f811461008757806321887c3d146100bc57806329092d0e146100dd5780638da5cb5b146100fe578063949d225d1461012f578063da0321cd14610156578063f29ee125146101bb575b600080fd5b34801561009357600080fd5b506100a8600160a060020a0360043516610206565b604080519115158252519081900360200190f35b3480156100c857600080fd5b506100a8600160a060020a0360043516610319565b3480156100e957600080fd5b506100a8600160a060020a0360043516610337565b34801561010a57600080fd5b50610113610447565b60408051600160a060020a039092168252519081900360200190f35b34801561013b57600080fd5b50610144610456565b60408051918252519081900360200190f35b34801561016257600080fd5b5061016b610550565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101a757818101518382015260200161018f565b505050509050019250505060405180910390f35b3480156101c757600080fd5b506101dc600160a060020a03600435166106ab565b604080519315158452600160a060020a039283166020850152911682820152519081900360600190f35b6001546000908190819033600160a060020a0390811691161461022857600080fd5b600160a060020a038416151561023d57610312565b600160a060020a0384166000908152602081905260409020805490925060ff161561026757610312565b50805460ff19166001908117808355600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5805461010090819004600160a060020a03908116820274ffffffffffffffffffffffffffffffffffffffff001995861617875582548290048116845260409093208501805493891673ffffffffffffffffffffffffffffffffffffffff199094168417905581549202919092161781559092505b5050919050565b600160a060020a031660009081526020819052604090205460ff1690565b600154600090819033600160a060020a0390811691161461035757600080fd5b600160a060020a038316151561036c57610441565b50600160a060020a0382166000908152602081905260409020805460ff16151561039557610441565b805460018083018054600160a060020a03908116600090815260208190526040808220805474ffffffffffffffffffffffffffffffffffffffff00191661010097889004851688021790559254865495909504821681528281208401805495831673ffffffffffffffffffffffffffffffffffffffff19968716179055908716815220805474ffffffffffffffffffffffffffffffffffffffffff191681558101805490921690915591505b50919050565b600154600160a060020a031681565b60006104606106db565b5060008080526020908152604080516060810182527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55460ff8116151582526101009004600160a060020a03908116938201939093527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb654909216908201525b60008160200151600160a060020a0316111561054c57602090810151600160a060020a0390811660009081528083526040908190208151606081018352815460ff81161515825261010090048416948101949094526001908101549092169083015291909101906104e0565b5090565b606060008061055d6106db565b610565610456565b925082604051908082528060200260200182016040528015610591578160200160208202803883390190505b5060008080526020818152604080516060810182527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55460ff8116151582526101009004600160a060020a03908116938201939093527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb65490921690820152919550925090505b60008160200151600160a060020a031611156106a5578060200151848381518110151561064157fe5b600160a060020a03928316602091820290920181019190915291820151811660009081528083526040908190208151606081018352815460ff8116151582526101009004841694810194909452600190810154909216908301529190910190610618565b50505090565b6000602081905290815260409020805460019091015460ff821691600160a060020a036101009091048116911683565b6040805160608101825260008082526020820181905291810191909152905600a165627a7a72305820c6f7d5e3ae73be767a40c6a21a1f5854450849bca9362b9bde94831850befb8700290000000000000000000000009c6386aba3907ad0e2177e74684f3ac986070981