------ art_5047_3549652.1135074815988 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline SGVyZSdzIG1pbmUsIGNvbXBsZXRlIHdpdGggbWVzc3kgYWQtaG9jIHNvbHV0aW9ucyBnYWxvcmUu CgpCdHcsIHNob3VsZCB0aGVzZSBiZSB3cml0dGVuIGZyb20gc2NyYXRjaCBmb3IgdGhlIHF1aXo/ IFRoaXMgaXMgbW9yZQpsaWtlIGEgYm90IHRoYXQgaSB3cm90ZSBzb21lIHdlZWtzIGFnbyB0aGF0 IGJlZ2F0IGFub3RoZXIgYm90IHRoYXQKYmVnYXQgYW5vdGhlciBib3QgdGhhdCBiZWdhdCB0aGlz LgoKLS0KSWxtYXJpCg ------ art_5047_3549652.1135074815988 Content-Type: application/x-ruby; name="Kite2.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Kite2.rb" IyBVc2VzIGxpbmVhciB0YXJnZXR0aW5nIGFuZAojIG1vdmVzIGluIGEgd2F5IHRoYXQgZG9kZ2Vz IGxpbmVhciB0YXJnZXR0aW5nLgojIE5vdCB2ZXJ5IGdvb2QgZm9yIG1lbGVlLgojCnJlcXVpcmUg J3JvYm90JwpyZXF1aXJlICdtYXRyaXgnCgpjbGFzcyBOdW1lcmljCiAgZGVmIGRlZzJyYWQKICAg IHNlbGYgKiAwLjAxNzQ1MzI5MjUxOTk0MzMKICBlbmQKICBkZWYgcmFkMmRlZwogICAgc2VsZiAq IDU3LjI5NTc3OTUxMzA4MjMKICBlbmQKICBkZWYgc2lnbgogICAgc2VsZiAvIGFicwogIGVuZApl bmQKY2xhc3MgQXJyYXkKICBkZWYgYXZlcmFnZQogICAgaW5qZWN0e3xzLGl8cytpfSAvIHNpemUu dG9fZgogIGVuZAogIGRlZiBzZAogICAgYXZnID0gYXZlcmFnZQogICAgTWF0aC5zcXJ0KCBpbmpl Y3QoMCl7fHMsaXwgcysoaS1hdmcpKioyfSAvIChzaXplLTEuMCkgKQogIGVuZAplbmQKY2xhc3Mg VmVjdG9yCiAgZGVmIG5vcm1hbGl6ZQogICAgc2VsZiAqICgxLjAvc2VsZi5yKQogIGVuZAplbmQK CmNsYXNzIEtpdGUyCmluY2x1ZGUgUm9ib3QKCiAgZGVmIGluaXRpYWxpemUgKmFyZ3MsICZibG9j awogICAgc3VwZXIKICAgIEBydCA9IEByYWRhcl9zY2FuID0gMTUKICAgIEBtaW5fcmFkYXJfc2Nh biA9IDEuNQogICAgQG1heF9yYWRhcl9zY2FuID0gNjAuMAogICAgQGxvY2sgPSBmYWxzZQogICAg QGZpcmluZ190aHJlc2hvbGQgPSAyMC4wCiAgICBAd2FudGVkX3R1cm4gPSBAd2FudGVkX2d1bl90 dXJuID0gQHdhbnRlZF9yYWRhcl90dXJuID0gMAogICAgQHJ0dXJuX2RpciA9IDEKICAgIEByYWNj X2RpciA9IDEKICAgIEB0YXJnZXRfcG9zaXRpb25zID0gW10KICAgIEBzZF9saW1pdCA9IDMwCiAg ZW5kCgogIGRlZiB0aWNrIGV2ZW50cwogICAgQHByZXZfaGVhbHRoID0gZW5lcmd5IGlmIHRpbWUg PT0gMAogICAgaWYgZXZlbnRzWydyb2JvdF9zY2FubmVkJ10uZW1wdHk/CiAgICAgIEByYWRhcl9z Y2FuID0gW0ByYWRhcl9zY2FuICogMS41LCBAbWF4X3JhZGFyX3NjYW5dLm1pbgogICAgZWxzZQog ICAgICBAcmFkYXJfc2NhbiA9IFtAcmFkYXJfc2NhbiAqIDAuNSwgQG1pbl9yYWRhcl9zY2FuXS5t YXgKICAgIGVuZAogICAgQHJ0ID0gKHRpbWUvMiAlIDIgPCAxID8gLUByYWRhcl9zY2FuLzIuMCA6 IEByYWRhcl9zY2FuLzIuMCkgaWYgQHJhZGFyX3NjYW4uYWJzIDwgQG1heF9yYWRhcl9zY2FuIC0g MC4xCiAgICBAd2FudGVkX3JhZGFyX3R1cm4gKz0gQHJ0CiAgICBmaXJpbmdfc29sdXRpb24gZXZl bnRzCiAgICBAaGl0ID0gdW5sZXNzIGV2ZW50c1snZ290X2hpdCddLmVtcHR5PwogICAgICBAcmFj Y19kaXIgPSBAcmFjY19kaXIgLyBAcmFjY19kaXIuYWJzCiAgICAgIDIwCiAgICBlbHNlCiAgICAg IChAaGl0fHwwKSAtIDEKICAgIGVuZAogICAgQGhpdCA9IC0xCiAgICBpZiBAaGl0IDwgMAogICAg ICBAcmFjY19kaXIgPSAoQG1pbl9kaXN0YW5jZSBhbmQgQG1pbl9kaXN0YW5jZSA8IDQ1MCkgPyBA cmFjY19kaXIuc2lnbiA6IE1hdGguc2luKHRpbWUqMC4xK3JhbmQqMC4yKQogICAgZW5kCiAgICBh Y2NlbGVyYXRlKEByYWNjX2RpcikKICAgIGlmIGFwcHJvYWNoaW5nX3dhbGw/CiAgICAgIEB3YW50 ZWRfdHVybiA9IDYwICogQHJ0dXJuX2RpcgogICAgZWxzaWYgQHRhcmdldF9oZWFkaW5nIGFuZCBA d2FudGVkX3R1cm4gPD0gMQogICAgICBAd2FudGVkX3R1cm4gPSBoZWFkaW5nX2Rpc3RhbmNlKCgo QG1pbl9kaXN0YW5jZSBhbmQgQG1pbl9kaXN0YW5jZSA8IDQ1MCkgPyAoOTAtQHJ0dXJuX2Rpci5z aWduKjQ1KSotQHJhY2NfZGlyLnNpZ24gOiAwKStoZWFkaW5nLCA5MCtAdGFyZ2V0X2hlYWRpbmcp CiAgICBlbHNpZiByYW5kIDwgMC4zCiAgICAgIEB3YW50ZWRfdHVybiArPSByYW5kICogMTAgKiBA cmFjY19kaXIuc2lnbiAqIEBydHVybl9kaXIKICAgIGVsc2lmIHJhbmQgPCAwLjAxCiAgICAgIEBy dHVybl9kaXIgKj0gLTEKICAgIGVsc2lmIHJhbmQgPCAwLjAxCiAgICAgIEByYWNjX2RpciAqPSAt MQogICAgZW5kCiAgICB0dXJuX2h1bGwKICAgIHR1cm5fdHVycmV0CiAgICB0dXJuX3JhZGFyX2Rp c2gKICAgIEBwcmV2X2hlYWx0aCA9IGVuZXJneQogIGVuZAoKICBkZWYgZmlyaW5nX3NvbHV0aW9u IGV2ZW50cwogICAgdW5sZXNzIGV2ZW50c1sncm9ib3Rfc2Nhbm5lZCddLmVtcHR5PwogICAgICBs YXN0ID0gQHRhcmdldF9wb3NpdGlvbnMubGFzdCB8fCBWZWN0b3JbMCwwXQogICAgICBwb3NpdGlv biA9IGV2ZW50c1sncm9ib3Rfc2Nhbm5lZCddLm1hcHt8ZHwKICAgICAgICB0eCA9IHggKyBNYXRo LmNvcygocmFkYXJfaGVhZGluZyAtIEByYWRhcl9zY2FuLmFicyAvIDIuMCkuZGVnMnJhZCkgKiBk WzBdCiAgICAgICAgdHkgPSB5IC0gTWF0aC5zaW4oKHJhZGFyX2hlYWRpbmcgLSBAcmFkYXJfc2Nh bi5hYnMgLyAyLjApLmRlZzJyYWQpICogZFswXQogICAgICAgIFZlY3Rvclt0eCx0eV0KICAgICAg fS5taW57fGEsYnwgKGEgLSBsYXN0KS5yIDw9PiAoYiAtIGxhc3QpLnIgfQogICAgICBAdGFyZ2V0 X3Bvc2l0aW9ucy5wdXNoIHBvc2l0aW9uCiAgICAgIEBtaW5fZGlzdGFuY2UgPSBldmVudHNbJ3Jv Ym90X3NjYW5uZWQnXS5mbGF0dGVuLm1pbgogICAgZW5kCiAgICBAdGFyZ2V0X3Bvc2l0aW9ucy5z aGlmdCBpZiBAdGFyZ2V0X3Bvc2l0aW9ucy5zaXplID4gMTAKICAgIEBtaW5fZGlzdGFuY2UgPSBu aWwgaWYgQHRhcmdldF9wb3NpdGlvbnMuZW1wdHk/CiAgICBAdGFyZ2V0X2hlYWRpbmcgPSB0YXJn ZXRfaGVhZGluZwogICAgZ3RkID0gaGVhZGluZ19kaXN0YW5jZShndW5faGVhZGluZywgQHRhcmdl dF9oZWFkaW5nKSBpZiBAdGFyZ2V0X2hlYWRpbmcKICAgIEBmaXJlcG93ZXIgPSBbMTAwLjAgLyAo QHZzZHx8MTUwMCldLm1heCAvIDcuMAogICAgZmlyZSBAZmlyZXBvd2VyICogMC4yCiAgICBmaXJl IEBmaXJlcG93ZXIgaWYgQG9uX3RhcmdldAogICAgaWYgZ3RkIGFuZCBndGQuYWJzIDwgQGZpcmlu Z190aHJlc2hvbGQKICAgICAgQHdhbnRlZF9ndW5fdHVybiA9IGd0ZAogICAgICBAb25fdGFyZ2V0 ID0gdHJ1ZQogICAgZWxzZQogICAgICBAd2FudGVkX2d1bl90dXJuID0gZ3RkIHx8IChndW5fcmFk YXJfZGlzdGFuY2UvMy4wKQogICAgICBAb25fdGFyZ2V0ID0gZmFsc2UKICAgIGVuZAogIGVuZAoK ICBkZWYgYXZlcmFnZSBhcnIKICAgIGFyci5pbmplY3R7fHMsaXwgcytpfSAqICgxLjAvYXJyLnNp emUpCiAgZW5kCgogIGRlZiB0YXJnZXRfaGVhZGluZwogICAgcmV0dXJuIG5pbCBpZiBAdGFyZ2V0 X3Bvc2l0aW9ucy5zaXplIDwgMTAKICAgIHJldHVybiByYWRhcl9oZWFkaW5nIGlmIEBtaW5fZGlz dGFuY2UgYW5kIEBtaW5fZGlzdGFuY2UgPCAyMDAKICAgIGxwcyA9ICgwLi4uNSkubWFwe3xpfCBA dGFyZ2V0X3Bvc2l0aW9uc1tpKjIsMl0gfS5tYXB7fHB0YXwgYXZlcmFnZShwdGEpIH0KICAgIHA0 ID0gbHBzLmxhc3QKICAgIHZzID0gbHBzWzAuLi0yXS56aXAobHBzWzEuLi0xXSkubWFwe3xhLGJ8 IChiLWEpICogMC41IH0KICAgIEB2c2QgPSBNYXRoLnNxcnQodnMubWFwe3x2fCB2WzBdfS5zZCoq MiArIHZzLm1hcHt8dnwgdlsxXX0uc2QqKjIpCiAgICByZXR1cm4gbmlsIGlmIEB2c2QgPiBAc2Rf bGltaXQKICAgIGFjY3MgPSB2c1swLi4tMl0uemlwKHZzWzEuLi0xXSkubWFwe3xhLGJ8IChiLWEp IH0KICAgIEB2c2QgKz0gTWF0aC5zcXJ0KGFjY3MubWFwe3x2fCB2WzBdfS5zZCoqMiArIHZzLm1h cHt8dnwgdlsxXX0uc2QqKjIpCiAgICBAdnNkICo9IDAuNQogICAgdiA9IGF2ZXJhZ2UodnMpCiAg ICByZXR1cm4gaGVhZGluZ19mb3IoYXZlcmFnZShscHMpKSBpZiB2LnIgPCA0LjAKICAgIGFjYyA9 IGF2ZXJhZ2UoYWNjcykKICAgIHA0ID0gcDQgKyAodiowLjUpCiAgICBkaXN0YW5jZSA9IHA0IC0g VmVjdG9yW3gseV0KICAgIHNob3Rfc3BlZWQgPSAzMC4wCiAgICBhID0gZGlzdGFuY2VbMF0qKjIg KyBkaXN0YW5jZVsxXSoqMgogICAgYiA9IDIqZGlzdGFuY2VbMF0qdlswXSArIDIqZGlzdGFuY2Vb MV0qdlsxXQogICAgYyA9IHZbMF0qKjIgKyB2WzFdKioyIC0gc2hvdF9zcGVlZCoqMgogICAgZCA9 IGIqKjItNCphKmMKICAgIHJldHVybiBoZWFkaW5nX2ZvcihhdmVyYWdlKGxwcykpIGlmIGQgPCAw CiAgICB0ID0gMiphIC8gKC1iICsgTWF0aC5zcXJ0KGQpKQogICAgciA9IHYucgogICAgaWYgYWNj LnIgPiAwLjUKICAgICAgaWYgKHYgKyBhY2MqdCkuciA+IDguMAogICAgICAgIGlmICh2K2FjYyku ciA+IHYucgogICAgICAgICAgdiA9ICh2ICsgYWNjKjAuNSp0KS5ub3JtYWxpemUgKiA2LjAKICAg ICAgICBlbHNlCiAgICAgICAgICB2ID0gdi5ub3JtYWxpemUKICAgICAgICBlbmQKICAgICAgZWxz ZQogICAgICAgIHYgPSB2ICsgYWNjKjAuNSp0CiAgICAgIGVuZAogICAgZW5kCiAgICBlcCA9IHA0 ICsgdip0CiAgICBlc3RpbWF0ZWRfcG9zaXRpb24gPSBWZWN0b3JbCiAgICAgIFtzaXplLCBbYmF0 dGxlZmllbGRfd2lkdGgtc2l6ZSwgZXBbMF1dLm1pbl0ubWF4LAogICAgICBbc2l6ZSwgW2JhdHRs ZWZpZWxkX2hlaWdodC1zaXplLCBlcFsxXV0ubWluXS5tYXhdCiAgICBoZWFkaW5nX2Zvcihlc3Rp bWF0ZWRfcG9zaXRpb24pICsgKHJhbmQtMC41KSpAdnNkKjAuMgogIGVuZAoKICBkZWYgaGVhZGlu Z19mb3IocG9zaXRpb24pCiAgICBkaXN0YW5jZSA9IHBvc2l0aW9uIC0gVmVjdG9yW3gseV0KICAg IGhlYWRpbmcgPSAoTWF0aC5hdGFuMigtZGlzdGFuY2VbMV0sIGRpc3RhbmNlWzBdKSkucmFkMmRl ZwogICAgaGVhZGluZyArPSAzNjAgaWYgaGVhZGluZyA8IDAKICAgIGhlYWRpbmcKICBlbmQKCiAg ZGVmIGhlYWRpbmdfZGlzdGFuY2UgaDEsIGgyCiAgICBsaW1pdCBoMiAtIGgxLCAxODAKICBlbmQK CiAgZGVmIGxpbWl0IHZhbHVlLCBtCiAgICB2YWx1ZSAtPSAzNjAgaWYgdmFsdWUgPiAxODAKICAg IHZhbHVlICs9IDM2MCBpZiB2YWx1ZSA8IC0xODAKICAgIHZhbHVlID0gLW0gaWYgdmFsdWUgPCAt bQogICAgdmFsdWUgPSBtIGlmIHZhbHVlID4gbQogICAgcmV0dXJuIHZhbHVlCiAgZW5kCgogIGRl ZiBndW5fcmFkYXJfZGlzdGFuY2UKICAgIGhlYWRpbmdfZGlzdGFuY2UgZ3VuX2hlYWRpbmcsIHJh ZGFyX2hlYWRpbmcKICBlbmQKCiAgZGVmIHR1cm5faHVsbAogICAgdHVybl9hbXQgPSBbLTEwLjAs IFtAd2FudGVkX3R1cm4sIDEwLjBdLm1pbl0ubWF4CiAgICB0dXJuIHR1cm5fYW10CiAgICBAd2Fu dGVkX3R1cm4gLT0gdHVybl9hbXQKICAgIEB3YW50ZWRfZ3VuX3R1cm4gLT0gdHVybl9hbXQKICAg IEB3YW50ZWRfcmFkYXJfdHVybiAtPSB0dXJuX2FtdAogIGVuZAoKICBkZWYgdHVybl90dXJyZXQK ICAgIHR1cm5fYW10ID0gWy0zMC4wLCBbQHdhbnRlZF9ndW5fdHVybiwgMzAuMF0ubWluXS5tYXgK ICAgIHR1cm5fZ3VuIHR1cm5fYW10CiAgICBAd2FudGVkX2d1bl90dXJuIC09IHR1cm5fYW10CiAg ICBAd2FudGVkX3JhZGFyX3R1cm4gLT0gdHVybl9hbXQKICBlbmQKCiAgZGVmIHR1cm5fcmFkYXJf ZGlzaAogICAgdHVybl9hbXQgPSBbLTYwLjAsIFtAd2FudGVkX3JhZGFyX3R1cm4sIDYwLjBdLm1p bl0ubWF4CiAgICB0dXJuX3JhZGFyIHR1cm5fYW10CiAgICBAd2FudGVkX3JhZGFyX3R1cm4gLT0g dHVybl9hbXQKICBlbmQKCiAgZGVmIGFwcHJvYWNoaW5nX3dhbGw/CiAgICBpZiBub3QgKCAodmVs b2NpdHkgPiAwKSBeIGhlYWRpbmcuYmV0d2Vlbj8oMC4wLCAxODAuMCkgKQogICAgICB5IDwgMTAw CiAgICBlbHNlCiAgICAgIHkgPiBiYXR0bGVmaWVsZF9oZWlnaHQgLSAxMDAKICAgIGVuZCBvciBp ZiBub3QgKCAodmVsb2NpdHkgPiAwKSBeIGhlYWRpbmcuYmV0d2Vlbj8oOTAuMCwgMjcwLjApICkK ICAgICAgeCA8IDEwMAogICAgZWxzZQogICAgICB4ID4gYmF0dGxlZmllbGRfd2lkdGggLSAxMDAK ICAgIGVuZAogIGVuZAoKZW5kCg ------ art_5047_3549652.1135074815988--