60806040526040518060400160405280601e81526020017f4120506c617966756c2050616e6461204e465420436f6c6c656374696f6e0000815250600a90816200004a919062000464565b506040518060a00160405280606881526020016200258360689139600b908162000075919062000464565b503480156200008357600080fd5b506040518060400160405280600a81526020017f46756e6b7950616e6461000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f46504e4400000000000000000000000000000000000000000000000000000000815250816002908162000101919062000464565b50806003908162000113919062000464565b5062000124620001b360201b60201c565b6000819055506200013a620001b360201b60201c565b6200014a620001b860201b60201c565b10156200016a576200016963fed8210f60e01b620001e060201b60201c565b5b505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200054b565b600090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b8060005260046000fd5b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200026c57607f821691505b60208210810362000282576200028162000224565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002ad565b620002f88683620002ad565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003456200033f620003398462000310565b6200031a565b62000310565b9050919050565b6000819050919050565b620003618362000324565b6200037962000370826200034c565b848454620002ba565b825550505050565b600090565b6200039062000381565b6200039d81848462000356565b505050565b5b81811015620003c557620003b960008262000386565b600181019050620003a3565b5050565b601f8211156200041457620003de8162000288565b620003e9846200029d565b81016020851015620003f9578190505b6200041162000408856200029d565b830182620003a2565b50505b505050565b600082821c905092915050565b6000620004396000198460080262000419565b1980831691505092915050565b600062000454838362000426565b9150826002028217905092915050565b6200046f82620001ea565b67ffffffffffffffff8111156200048b576200048a620001f5565b5b62000497825462000253565b620004a4828285620003c9565b600060209050601f831160018114620004dc5760008415620004c7578287015190505b620004d3858262000446565b86555062000543565b601f198416620004ec8662000288565b60005b828110156200051657848901518255600182019150602085019450602081019050620004ef565b8683101562000536578489015162000532601f89168262000426565b8355505b6001600288020188555050505b505050505050565b612028806200055b6000396000f3fe6080604052600436106101145760003560e01c806370a08231116100a0578063b88d4fde11610064578063b88d4fde1461038a578063c87b56dd146103a6578063d9daab9b146103e3578063df3b47c51461040e578063e985e9c51461043957610114565b806370a08231146102a55780638da5cb5b146102e257806395d89b411461030d578063a0712d6814610338578063a22cb4651461036157610114565b806318160ddd116100e757806318160ddd146101da57806323b872dd1461020557806342842e0e146102215780636352211e1461023d57806366782bcb1461027a57610114565b806301ffc9a71461011957806306fdde0314610156578063081812fc14610181578063095ea7b3146101be575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b9190611777565b610476565b60405161014d91906117bf565b60405180910390f35b34801561016257600080fd5b5061016b610508565b604051610178919061186a565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a391906118c2565b61059a565b6040516101b59190611930565b60405180910390f35b6101d860048036038101906101d39190611977565b6105f8565b005b3480156101e657600080fd5b506101ef610608565b6040516101fc91906119c6565b60405180910390f35b61021f600480360381019061021a91906119e1565b610655565b005b61023b600480360381019061023691906119e1565b610916565b005b34801561024957600080fd5b50610264600480360381019061025f91906118c2565b610936565b6040516102719190611930565b60405180910390f35b34801561028657600080fd5b5061028f610948565b60405161029c91906119c6565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c79190611a34565b61094d565b6040516102d991906119c6565b60405180910390f35b3480156102ee57600080fd5b506102f76109e4565b6040516103049190611930565b60405180910390f35b34801561031957600080fd5b50610322610a0a565b60405161032f919061186a565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906118c2565b610a9c565b005b34801561036d57600080fd5b5061038860048036038101906103839190611a8d565b610b8f565b005b6103a4600480360381019061039f9190611c02565b610c9a565b005b3480156103b257600080fd5b506103cd60048036038101906103c891906118c2565b610cec565b6040516103da919061186a565b60405180910390f35b3480156103ef57600080fd5b506103f8610d69565b604051610405919061186a565b60405180910390f35b34801561041a57600080fd5b50610423610dfb565b604051610430919061186a565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190611c85565b610e89565b60405161046d91906117bf565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104d157506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806105015750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461051790611cf4565b80601f016020809104026020016040519081016040528092919081815260200182805461054390611cf4565b80156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b5050505050905090565b60006105a582610f1d565b6105ba576105b963cf4700e460e01b610fc9565b5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61060482826001610fd3565b5050565b6000610612611102565b600154600054030390507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610645611107565b1461065257600854810190505b90565b60006106608261112f565b905073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161693508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106d5576106d463a114810060e01b610fc9565b5b6000806106e184611248565b915091506106f781876106f261126f565b611277565b6107225761070c8661070761126f565b610e89565b610721576107206359c896be60e01b610fc9565b5b5b61072f86868660016112bb565b801561073a57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610808856107e48888876112c1565b7c0200000000000000000000000000000000000000000000000000000000176112e9565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084160361088e576000600185019050600060046000838152602001908152602001600020540361088c57600054811461088b578360046000838152602001908152602001600020819055505b5b505b600073ffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff161690508481887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460008103610900576108ff63ea553b3460e01b610fc9565b5b61090d8787876001611314565b50505050505050565b61093183838360405180602001604052806000815250610c9a565b505050565b60006109418261112f565b9050919050565b600581565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099357610992638f4eb60460e01b610fc9565b5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060038054610a1990611cf4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4590611cf4565b8015610a925780601f10610a6757610100808354040283529160200191610a92565b820191906000526020600020905b815481529060010190602001808311610a7557829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390611d71565b60405180910390fd5b600581610b37610608565b610b419190611dc0565b1115610b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7990611e66565b60405180910390fd5b610b8c338261131a565b50565b8060076000610b9c61126f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610c4961126f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610c8e91906117bf565b60405180910390a35050565b610ca5848484610655565b60008373ffffffffffffffffffffffffffffffffffffffff163b14610ce657610cd0848484846114a0565b610ce557610ce463d1a57ed660e01b610fc9565b5b5b50505050565b6060610cf782610f1d565b610d0c57610d0b63a14c4b5060e01b610fc9565b5b6000610d166115cf565b90506000815103610d365760405180602001604052806000815250610d61565b80610d4084611661565b604051602001610d51929190611ec2565b6040516020818303038152906040525b915050919050565b6060600a8054610d7890611cf4565b80601f0160208091040260200160405190810160405280929190818152602001828054610da490611cf4565b8015610df15780601f10610dc657610100808354040283529160200191610df1565b820191906000526020600020905b815481529060010190602001808311610dd457829003601f168201915b5050505050905090565b600a8054610e0890611cf4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3490611cf4565b8015610e815780601f10610e5657610100808354040283529160200191610e81565b820191906000526020600020905b815481529060010190602001808311610e6457829003601f168201915b505050505081565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600081610f28611102565b11610fc357610f35611107565b821115610f5f57610f5860046000848152602001908152602001600020546116b1565b9050610fc4565b600054821015610fc25760005b6000600460008581526020019081526020016000205491508103610f9b5782610f9490611ee6565b9250610f6c565b60007c01000000000000000000000000000000000000000000000000000000008216149150505b5b5b919050565b8060005260046000fd5b6000610fde83610936565b905081801561102057508073ffffffffffffffffffffffffffffffffffffffff1661100761126f565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561104c576110368161103161126f565b610e89565b61104b5761104a63cfb3b94260e01b610fc9565b5b5b836006600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550828473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a450505050565b600090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905090565b60008161113a611102565b11611232576004600083815260200190815260200160002054905061115d611107565b8211156111825761116d816116b1565b6112435761118163df2d9b4260e01b610fc9565b5b600081036112095760005482106111a4576111a363df2d9b4260e01b610fc9565b5b5b600460008360019003935083815260200190815260200160002054905060008103156112045760007c0100000000000000000000000000000000000000000000000000000000821603156112435761120363df2d9b4260e01b610fc9565b5b6111a5565b60007c010000000000000000000000000000000000000000000000000000000082160315611243575b61124263df2d9b4260e01b610fc9565b5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86112d88686846116f2565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600080549050600082036113395761133863b562e8dd60e01b610fc9565b5b61134660008483856112bb565b6113668361135760008660006112c1565b611360856116fb565b176112e9565b6004600083815260200190815260200160002081905550600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600073ffffffffffffffffffffffffffffffffffffffff8473ffffffffffffffffffffffffffffffffffffffff161690506000810361141e5761141d632e07630060e01b610fc9565b5b600083830190506000839050611432611107565b60018303111561144d5761144c6381647e3a60e01b610fc9565b5b5b808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a481816001019150810361144e578160008190555050505061149b6000848385611314565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026114c661126f565b8786866040518563ffffffff1660e01b81526004016114e89493929190611f64565b6020604051808303816000875af192505050801561152457506040513d601f19601f820116820180604052508101906115219190611fc5565b60015b61157c573d8060008114611554576040519150601f19603f3d011682016040523d82523d6000602084013e611559565b606091505b5060008151036115745761157363d1a57ed660e01b610fc9565b5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600b80546115de90611cf4565b80601f016020809104026020016040519081016040528092919081815260200182805461160a90611cf4565b80156116575780601f1061162c57610100808354040283529160200191611657565b820191906000526020600020905b81548152906001019060200180831161163a57829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b60011561169c57600184039350600a81066030018453600a810490508061167a575b50828103602084039350808452505050919050565b60007c0100000000000000000000000000000000000000000000000000000000821673ffffffffffffffffffffffffffffffffffffffff8316119050919050565b60009392505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117548161171f565b811461175f57600080fd5b50565b6000813590506117718161174b565b92915050565b60006020828403121561178d5761178c611715565b5b600061179b84828501611762565b91505092915050565b60008115159050919050565b6117b9816117a4565b82525050565b60006020820190506117d460008301846117b0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156118145780820151818401526020810190506117f9565b60008484015250505050565b6000601f19601f8301169050919050565b600061183c826117da565b61184681856117e5565b93506118568185602086016117f6565b61185f81611820565b840191505092915050565b600060208201905081810360008301526118848184611831565b905092915050565b6000819050919050565b61189f8161188c565b81146118aa57600080fd5b50565b6000813590506118bc81611896565b92915050565b6000602082840312156118d8576118d7611715565b5b60006118e6848285016118ad565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061191a826118ef565b9050919050565b61192a8161190f565b82525050565b60006020820190506119456000830184611921565b92915050565b6119548161190f565b811461195f57600080fd5b50565b6000813590506119718161194b565b92915050565b6000806040838503121561198e5761198d611715565b5b600061199c85828601611962565b92505060206119ad858286016118ad565b9150509250929050565b6119c08161188c565b82525050565b60006020820190506119db60008301846119b7565b92915050565b6000806000606084860312156119fa576119f9611715565b5b6000611a0886828701611962565b9350506020611a1986828701611962565b9250506040611a2a868287016118ad565b9150509250925092565b600060208284031215611a4a57611a49611715565b5b6000611a5884828501611962565b91505092915050565b611a6a816117a4565b8114611a7557600080fd5b50565b600081359050611a8781611a61565b92915050565b60008060408385031215611aa457611aa3611715565b5b6000611ab285828601611962565b9250506020611ac385828601611a78565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611b0f82611820565b810181811067ffffffffffffffff82111715611b2e57611b2d611ad7565b5b80604052505050565b6000611b4161170b565b9050611b4d8282611b06565b919050565b600067ffffffffffffffff821115611b6d57611b6c611ad7565b5b611b7682611820565b9050602081019050919050565b82818337600083830152505050565b6000611ba5611ba084611b52565b611b37565b905082815260208101848484011115611bc157611bc0611ad2565b5b611bcc848285611b83565b509392505050565b600082601f830112611be957611be8611acd565b5b8135611bf9848260208601611b92565b91505092915050565b60008060008060808587031215611c1c57611c1b611715565b5b6000611c2a87828801611962565b9450506020611c3b87828801611962565b9350506040611c4c878288016118ad565b925050606085013567ffffffffffffffff811115611c6d57611c6c61171a565b5b611c7987828801611bd4565b91505092959194509250565b60008060408385031215611c9c57611c9b611715565b5b6000611caa85828601611962565b9250506020611cbb85828601611962565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d0c57607f821691505b602082108103611d1f57611d1e611cc5565b5b50919050565b7f4f6e6c79204f6e7765722043616e204d696e7400000000000000000000000000600082015250565b6000611d5b6013836117e5565b9150611d6682611d25565b602082019050919050565b60006020820190508181036000830152611d8a81611d4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611dcb8261188c565b9150611dd68361188c565b9250828201905080821115611dee57611ded611d91565b5b92915050565b7f4e6f74204d6f7265207468616e2035204e46542063616e206265206d696e746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e506021836117e5565b9150611e5b82611df4565b604082019050919050565b60006020820190508181036000830152611e7f81611e43565b9050919050565b600081905092915050565b6000611e9c826117da565b611ea68185611e86565b9350611eb68185602086016117f6565b80840191505092915050565b6000611ece8285611e91565b9150611eda8284611e91565b91508190509392505050565b6000611ef18261188c565b915060008203611f0457611f03611d91565b5b600182039050919050565b600081519050919050565b600082825260208201905092915050565b6000611f3682611f0f565b611f408185611f1a565b9350611f508185602086016117f6565b611f5981611820565b840191505092915050565b6000608082019050611f796000830187611921565b611f866020830186611921565b611f9360408301856119b7565b8181036060830152611fa58184611f2b565b905095945050505050565b600081519050611fbf8161174b565b92915050565b600060208284031215611fdb57611fda611715565b5b6000611fe984828501611fb0565b9150509291505056fea26469706673582212200d7ee045682784946d5676e4739a24fd40879b34b012bb7a90de520223b1ef3d64736f6c6343000812003368747470733a2f2f677261792d656666696369656e742d706f72637570696e652d3332302e6d7970696e6174612e636c6f75642f697066732f516d64755562705a69525153484e465842587355414163744b746a694b4843444e50686d573678704e636368726a2f