--Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =46rom Hans Bakker: Subject: WindFinder ion Date: Monday 26 November 2007 =46rom: "Hans Bakker" To: shawn.starr@rogers.com, panel-devel-request@kde.org Hi Shawn and others, (for the ones not knowing yet what I was busy with: I'm trying to make a WindFinder.com plugin for the KDE4 weather engine) here's everything I coded today. I added a few functions at the end of the weather formula files for converting wind speeds from knots. The conversion formulas were based upon the formulas in the google gadget windfinder ion, but are fairly trivial (look on wikipedia for the conversion constants http://en.wikipedia.org/wiki/Knot_%28speed%29 ) In the WindFinder ion i have parsing the stations list now in that way that it only looks at stations, and ignores the other information about country and continent. It only looks at the current observation, parsing forecasts would require parsing an additional xml file (xmlforecast.xml instead of xmlreport.xml); I believe the format is the same so we could try to reuse parseWeatherBlock for that later. The updateWeather method must still be implemented. Kind regards, Hans Bakker PS sorry for annoying everybody with accidentally sending the message before it was finished (A) =2D------------------------------------------------------ --Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/x-c++src; name="ion_windfinder.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ion_windfinder.cpp LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwNyBieSBTaGF3biBTdGFy ciA8c2hhd24uc3RhcnJAcm9nZXJzLmNvbT4gICAgICAgICAgICAqCiAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSAgKgogKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCiAqICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig ICAgICoKICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgICAgICoKICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgogKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICAqCiAqICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAqCiAqICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg ICAgICAgICAgICAgICoKICogICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQSAgICAgICAgICAqCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgovKiBJb24gZm9yIFdpbmRGaW5kZXIgWE1MIGRhdGEgKi8KCiNp bmNsdWRlICJpb25fd2luZGZpbmRlci5oIgoKY2xhc3MgV2luZEZpbmRlcklvbjo6UHJpdmF0ZSA6 IHB1YmxpYyBRT2JqZWN0CnsKcHVibGljOgogICAgUHJpdmF0ZSgpIHt9CiAgICB+UHJpdmF0ZSgp IHt9Cgpwcml2YXRlOgogICAgc3RydWN0IFhNTE1hcEluZm8gewogICAgICAgIFFTdHJpbmcgc3Rh dGlvbk5hbWU7CiAgICAgICAgUVN0cmluZyBjb3VudHJ5TmFtZTsKCVFTdHJpbmcgY29udGluZW50 TmFtZTsKICAgICAgICBRU3RyaW5nIHN0YXRpb25JRDsKICAgIH07CgpwdWJsaWM6CiAgICAvLyBL ZXkgZGljdHMKICAgIFFIYXNoPFFTdHJpbmcsIFdpbmRGaW5kZXJJb246OlByaXZhdGU6OlhNTE1h cEluZm8+IG1fcGxhY2U7CiAgICBRSGFzaDxRU3RyaW5nLCBRU3RyaW5nPiBtX2xvY2F0aW9uczsK ICAgIFFTdHJpbmcgbV9pZDsKICAgIFFTdHJpbmcgbV9jb3VudHJ5OwogICAgUVN0cmluZyBtX3N0 YXRpb25OYW1lOwoKICAgIC8vIFdlYXRoZXIgaW5mb3JtYXRpb24KICAgIFFIYXNoPFFTdHJpbmcs IFdlYXRoZXJEYXRhPiBtX3dlYXRoZXJEYXRhOwoKICAgIC8vIFN0b3JlIEtJTyBqb2JzCiAgICBR TWFwPEtKb2IgKiwgUVhtbFN0cmVhbVJlYWRlcio+IG1fam9iWG1sOwogICAgUU1hcDxLSm9iICos IFFTdHJpbmc+IG1fam9iTGlzdDsKICAgIFFYbWxTdHJlYW1SZWFkZXIgbV94bWxTZXR1cDsKICAg IEtVcmwgKm1fdXJsOwogICAgS0lPOjpUcmFuc2ZlckpvYiAqbV9qb2I7CgogICAgYm9vbCBtX3Vz ZVVUQzsgIC8vIElvbiBvcHRpb246IFRpbWV6b25lIG1heSBiZSBsb2NhbCB0aW1lIG9yIFVUQyB0 aW1lCiAgICBib29sIG1fdXNlTWV0cmljOyAvLyBJb24gb3B0aW9uOiBVbml0cyBtYXkgYmUgTWV0 cmljIG9yIEltcGVyaWFsCiAgICBib29sIG1fd2luZEluTWV0ZXJzOyAvLyBJb24gb3B0aW9uOiBE aXNwbGF5IHdpbmQgZm9ybWF0IGluIG1ldGVycyBwZXIgc2Vjb25kIG9ubHkKCiAgICBXZWF0aGVy Rm9ybXVsYSBtX2Zvcm11bGE7Cn07CgoKLy8gY3RvciwgZHRvcgpXaW5kRmluZGVySW9uOjpXaW5k RmluZGVySW9uKFFPYmplY3QgKnBhcmVudCwgY29uc3QgUVZhcmlhbnRMaXN0ICZhcmdzKQogICAg ICAgIDogSW9uSW50ZXJmYWNlKHBhcmVudCksIGQobmV3IFByaXZhdGUoKSkKewogICAgUV9VTlVT RUQoYXJncykKfQoKV2luZEZpbmRlcklvbjo6fldpbmRGaW5kZXJJb24oKQp7CiAgICAvLyBEZXN0 cm95IGVhY2ggd2FybmluZyBzdG9yZWQgaW4gYSBRVmVjdG9yCiAgICBmb3JlYWNoKFdlYXRoZXJE YXRhIGl0ZW0sIGQtPm1fd2VhdGhlckRhdGEpIHsKICAgICAgICBmb3JlYWNoKFdlYXRoZXJEYXRh OjpXYXJuaW5nSW5mbyAqd2FybmluZywgaXRlbS53YXJuaW5ncykgewogICAgICAgICAgICBpZiAo d2FybmluZykgewogICAgICAgICAgICAgICAgZGVsZXRlIHdhcm5pbmc7CiAgICAgICAgICAgIH0K ICAgICAgICB9CiAgICAgICAgZm9yZWFjaChXZWF0aGVyRGF0YTo6Rm9yZWNhc3RJbmZvICpmb3Jl Y2FzdCwgaXRlbS5mb3JlY2FzdHMpIHsKICAgICAgICAgICAgaWYgKGZvcmVjYXN0KSB7CiAgICAg ICAgICAgICAgICBkZWxldGUgZm9yZWNhc3Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9 CgogICAgLy8gRGVzdHJveSBkcHRyCiAgICBkZWxldGUgZDsKfQoKLy8gR2V0IHRoZSBtYXN0ZXIg bGlzdCBvZiBsb2NhdGlvbnMgdG8gYmUgcGFyc2VkCnZvaWQgV2luZEZpbmRlcklvbjo6aW5pdCgp CnsKICAgIC8vIEdldCB0aGUgcmVhbCBjaXR5IFhNTCBVUkwgc28gd2UgY2FuIHBhcnNlIHRoaXMK ICAgIGdldFhNTFNldHVwKCk7Cn0KClFTdHJpbmdMaXN0IFdpbmRGaW5kZXJJb246OnZhbGlkYXRl KGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkgY29uc3QKewogICAgUVN0cmluZ0xpc3QgcGxhY2VMaXN0 OwogICAgUUhhc2g8UVN0cmluZywgUVN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZC0+bV9s b2NhdGlvbnMuY29uc3RCZWdpbigpOwogICAgd2hpbGUgKGl0ICE9IGQtPm1fbG9jYXRpb25zLmNv bnN0RW5kKCkpIHsKICAgICAgICBpZiAoaXQudmFsdWUoKS50b0xvd2VyKCkuY29udGFpbnMoc291 cmNlLnRvTG93ZXIoKSkpIHsKICAgICAgICAgICAgcGxhY2VMaXN0LmFwcGVuZChpdC52YWx1ZSgp LnNwbGl0KCI6IilbMV0pOwogICAgICAgIH0KICAgICAgICArK2l0OwogICAgfQogICAKICAgIC8v IENoZWNrIGlmIHBsYWNlTGlzdCBpcyBlbXB0eSBpZiBzbywgcmV0dXJuIG5vdGhpbmcuCiAgICBp ZiAocGxhY2VMaXN0LmlzRW1wdHkoKSkgewogICAgICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwog ICAgfQogICAgcGxhY2VMaXN0LnNvcnQoKTsKICAgIHJldHVybiBwbGFjZUxpc3Q7Cn0KCi8vIEdl dCBhIHNwZWNpZmljIElvbidzIGRhdGEKYm9vbCBXaW5kRmluZGVySW9uOjp1cGRhdGVJb25Tb3Vy Y2UoY29uc3QgUVN0cmluZyYgc291cmNlKQp7CiAgICBrRGVidWcoKSA8PCAidXBkYXRlSW9uU291 cmNlKCkgU09VUkNFOiAiIDw8IHNvdXJjZTsKICAgIC8vIFdlIGV4cGVjdCB0aGUgYXBwbGV0IHRv IHNlbmQgdGhlIHNvdXJjZSBpbiB0aGUgZm9sbG93aW5nIHRva2VuaXphdGlvbjoKICAgIC8vIGlv bm5hbWU6dmFsaWRhdGU6cGxhY2VfbmFtZSAtIFRyaWdnZXJzIHZhbGlkYXRpb24gb2YgcGxhY2UK ICAgIC8vIGlvbm5hbWU6d2VhdGhlcjpwbGFjZV9uYW1lIC0gVHJpZ2dlcnMgcmVjZWl2aW5nIHdl YXRoZXIgb2YgcGxhY2UKICAgCiAgICBRU3RyaW5nTGlzdCBzb3VyY2VBY3Rpb24gPSBzb3VyY2Uu c3BsaXQoJzonKTsKICAgIGlmIChzb3VyY2VBY3Rpb25bMV0gPT0gUVN0cmluZygidmFsaWRhdGUi KSkgewogICAgICAgIGtEZWJ1ZygpIDw8ICJJbml0aWF0ZSBWYWxpZGF0aW5nIG9mIHBsYWNlOiAi IDw8IHNvdXJjZUFjdGlvblsyXTsKICAgIAogICAgICAgIFFTdHJpbmdMaXN0IHJlc3VsdCA9IHRo aXMtPnZhbGlkYXRlKFFTdHJpbmcoIiUxOiUyIikuYXJnKHNvdXJjZUFjdGlvblswXSkuYXJnKHNv dXJjZUFjdGlvblsyXSkpOwoKICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA9PSAxKSB7CiAgICAg ICAgICAgIHNldERhdGEoc291cmNlLCAidmFsaWRhdGUiLCBRU3RyaW5nKCJlbnZjYW46dmFsaWQ6 c2luZ2xlOiUxIikuYXJnKHJlc3VsdC5qb2luKCI6IikpKTsKICAgICAgICAgICAgcmV0dXJuIHRy dWU7CiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc2l6ZSgpID4gMSkgewogICAgICAgICAgICBz ZXREYXRhKHNvdXJjZSwgInZhbGlkYXRlIiwgUVN0cmluZygiZW52Y2FuOnZhbGlkOm11bHRpcGxl OiUxIikuYXJnKHJlc3VsdC5qb2luKCI6IikpKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg ICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc2l6ZSgpID09IDApIHsKICAgICAgICAgICAgc2V0RGF0 YShzb3VyY2UsICJ2YWxpZGF0ZSIsIFFTdHJpbmcoImVudmNhbjppbnZhbGlkOnNpbmdsZTolMSIp LmFyZyhzb3VyY2VBY3Rpb25bMl0pKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg fQoKICAgICB9IGVsc2UgaWYgKHNvdXJjZUFjdGlvblsxXSA9PSBRU3RyaW5nKCJ3ZWF0aGVyIikp IHsKICAgICAgICBnZXRYTUxEYXRhKFFTdHJpbmcoIiUxOiUyIikuYXJnKHNvdXJjZUFjdGlvblsw XSkuYXJnKHNvdXJjZUFjdGlvblsyXSkpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg ICByZXR1cm4gZmFsc2U7Cn0KCi8vIFBhcnNlcyBzdGF0aW9uIGxpc3QgYW5kIGdldHMgdGhlIGNv cnJlY3Qgc3RhdGlvbiBiYXNlZCBvbiBJRCBudW1iZXIKdm9pZCBXaW5kRmluZGVySW9uOjpnZXRY TUxTZXR1cCgpCnsKCiAgICBkLT5tX3VybCA9IG5ldyBLVXJsKCJodHRwOi8vd3d3LndpbmRmaW5k ZXIuY29tL3dpbmQtY2dpL3htbHN0YXRpb25zLnBsIik7CgogICAgS0lPOjpUcmFuc2ZlckpvYiAq am9iID0gS0lPOjpnZXQoZC0+bV91cmwtPnVybCgpLCBLSU86Ok5vUmVsb2FkLCBLSU86OkhpZGVQ cm9ncmVzc0luZm8pOwoKICAgIGlmIChqb2IpIHsKICAgICAgICBjb25uZWN0KGpvYiwgU0lHTkFM KGRhdGEoS0lPOjpKb2IgKiwgY29uc3QgUUJ5dGVBcnJheSAmKSksIHRoaXMsCiAgICAgICAgICAg ICAgICBTTE9UKHNldHVwX3Nsb3REYXRhQXJyaXZlZChLSU86OkpvYiAqLCBjb25zdCBRQnl0ZUFy cmF5ICYpKSk7CiAgICAgICAgY29ubmVjdChqb2IsIFNJR05BTChyZXN1bHQoS0pvYiAqKSksIHRo aXMsIFNMT1Qoc2V0dXBfc2xvdEpvYkZpbmlzaGVkKEtKb2IgKikpKTsKICAgIH0KfQoKLy8gR2V0 cyBzcGVjaWZpYyBzdGF0aW9uIFhNTCBkYXRhCnZvaWQgV2luZEZpbmRlcklvbjo6Z2V0WE1MRGF0 YShjb25zdCBRU3RyaW5nJiBzb3VyY2UpCnsKICAgIEtVcmwgdXJsOwogICAgdXJsID0gImh0dHA6 Ly93d3cud2luZGZpbmRlci5jb20vd2luZC1jZ2kveG1scmVwb3J0LnBsP0NVU1RPTUVSPW1hY29z JlNUQVRJT05TPSIgKyBkLT5tX3BsYWNlW3NvdXJjZV0uc3RhdGlvbklEOwoKICAgIGtEZWJ1Zygp IDw8ICJVUkwgTG9jYXRpb246ICIgPDwgdXJsLnVybCgpOwoKICAgIGQtPm1fam9iID0gS0lPOjpn ZXQodXJsLnVybCgpLCBLSU86OlJlbG9hZCwgS0lPOjpIaWRlUHJvZ3Jlc3NJbmZvKTsKICAgIGQt Pm1fam9iWG1sLmluc2VydChkLT5tX2pvYiwgbmV3IFFYbWxTdHJlYW1SZWFkZXIpOwogICAgZC0+ bV9qb2JMaXN0Lmluc2VydChkLT5tX2pvYiwgc291cmNlKTsKCiAgICBpZiAoZC0+bV9qb2IpIHsK ICAgICAgICBjb25uZWN0KGQtPm1fam9iLCBTSUdOQUwoZGF0YShLSU86OkpvYiAqLCBjb25zdCBR Qnl0ZUFycmF5ICYpKSwgdGhpcywKICAgICAgICAgICAgICAgIFNMT1Qoc2xvdERhdGFBcnJpdmVk KEtJTzo6Sm9iICosIGNvbnN0IFFCeXRlQXJyYXkgJikpKTsKICAgICAgICBjb25uZWN0KGQtPm1f am9iLCBTSUdOQUwocmVzdWx0KEtKb2IgKikpLCB0aGlzLCBTTE9UKHNsb3RKb2JGaW5pc2hlZChL Sm9iICopKSk7CiAgICB9Cn0KCnZvaWQgV2luZEZpbmRlcklvbjo6c2V0dXBfc2xvdERhdGFBcnJp dmVkKEtJTzo6Sm9iICpqb2IsIGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEpCnsKICAgIFFfVU5VU0VE KGpvYikKCiAgICBpZiAoZGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICByZXR1cm47CiAgICB9Cgog ICAgLy8gU2VuZCB0byB4bWwuCiAgICBkLT5tX3htbFNldHVwLmFkZERhdGEoZGF0YS5kYXRhKCkp Owp9Cgp2b2lkIFdpbmRGaW5kZXJJb246OnNsb3REYXRhQXJyaXZlZChLSU86OkpvYiAqam9iLCBj b25zdCBRQnl0ZUFycmF5ICZkYXRhKQp7CgogICAgaWYgKGRhdGEuaXNFbXB0eSgpIHx8ICFkLT5t X2pvYlhtbC5jb250YWlucyhqb2IpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFNl bmQgdG8geG1sLgogICAgZC0+bV9qb2JYbWxbam9iXS0+YWRkRGF0YShkYXRhLmRhdGEoKSk7Cn0K CnZvaWQgV2luZEZpbmRlcklvbjo6c2xvdEpvYkZpbmlzaGVkKEtKb2IgKmpvYikKewogICAgLy8g RHVhbCB1c2UgbWV0aG9kLCBpZiB3ZSdyZSBmZXRjaGluZyBsb2NhdGlvbiBkYXRhIHRvIHBhcnNl IHdlIG5lZWQgdG8gZG8gdGhpcyBmaXJzdAogICAgcmVhZFhNTERhdGEoZC0+bV9qb2JMaXN0W2pv Yl0sICpkLT5tX2pvYlhtbFtqb2JdKTsKICAgIGQtPm1fam9iTGlzdC5yZW1vdmUoam9iKTsKICAg IGRlbGV0ZSBkLT5tX2pvYlhtbFtqb2JdOwogICAgZC0+bV9qb2JYbWwucmVtb3ZlKGpvYik7Cn0K CnZvaWQgV2luZEZpbmRlcklvbjo6c2V0dXBfc2xvdEpvYkZpbmlzaGVkKEtKb2IgKmpvYikKewog ICAgUV9VTlVTRUQoam9iKQogICAgcmVhZFhNTFNldHVwKCk7CiAgICB0aGlzLT5zZXRJbml0aWFs aXplZCh0cnVlKTsKfQoKLy8gUGFyc2UgdGhlIHN0YXRpb24gbGlzdCBhbmQgc3RvcmUgaW50byBh IFFNYXAKYm9vbCBXaW5kRmluZGVySW9uOjpyZWFkWE1MU2V0dXAoKQp7CiAgICB3aGlsZSAoIWQt Pm1feG1sU2V0dXAuYXRFbmQoKSkgewogICAgICAgIGQtPm1feG1sU2V0dXAucmVhZE5leHQoKTsK CiAgICAgICAgaWYgKGQtPm1feG1sU2V0dXAuaXNTdGFydEVsZW1lbnQoKSkgewogICAgICAgICAg ICBpZiAoZC0+bV94bWxTZXR1cC5uYW1lKCkgPT0gInN0YXRpb25zIikgewogICAgICAgICAgICAg ICAgcGFyc2VTdGF0aW9ucygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0 dXJuICFkLT5tX3htbFNldHVwLmVycm9yKCk7Cn0KCnZvaWQgV2luZEZpbmRlcklvbjo6cGFyc2VT dGF0aW9ucygpCnsKICAgIFFTdHJpbmcgdG1wOwogICAgd2hpbGUgKCFkLT5tX3htbFNldHVwLmF0 RW5kKCkpIHsKICAgICAgICBkLT5tX3htbFNldHVwLnJlYWROZXh0KCk7CgogICAgICAgIGlmIChk LT5tX3htbFNldHVwLmlzRW5kRWxlbWVudCgpICYmIGQtPm1feG1sU2V0dXAubmFtZSgpID09ICJz dGF0aW9uIikgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChkLT5t X3htbFNldHVwLmlzU3RhcnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgaWYgKGQtPm1feG1sU2V0 dXAubmFtZSgpID09ICJzdGF0aW9uIikgewoJCWQtPm1faWQgPSBkLT5tX3htbFNldHVwLmF0dHJp YnV0ZXMoKS52YWx1ZSgiaWQiKS50b1N0cmluZygpOwoJCWQtPm1fc3RhdGlvbk5hbWUgPSBkLT5t X3htbFNldHVwLmF0dHJpYnV0ZXMoKS52YWx1ZSgibmFtZSIpLnRvU3RyaW5nKCk7CgogICAgICAg ICAgICAgICAgdG1wID0gIndpbmRmaW5kZXI6IiArIGQtPm1fc3RhdGlvbl9uYW1lOyAvLyBCdWls ZCB0aGUga2V5IG5hbWUuCiAgICAgICAgICAgICAgICBkLT5tX3BsYWNlW3RtcF0uc3RhdGlvbklE ID0gZC0+bV9pZDsKICAgICAgICAgICAgICAgIGQtPm1fcGxhY2VbdG1wXS5zdGF0aW9uTmFtZSA9 IGQtPm1fc3RhdGlvbl9uYW1lOwoKICAgICAgICAgICAgICAgIGQtPm1fbG9jYXRpb25zW3RtcF0g PSB0bXA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwYXJzZVVua25vd25F bGVtZW50KGQtPm1feG1sU2V0dXApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cgov LyBoYW5kbGUgd2hlbiBubyBYTUwgdGFnIGlzIGZvdW5kCnZvaWQgV2luZEZpbmRlcklvbjo6cGFy c2VVbmtub3duRWxlbWVudChRWG1sU3RyZWFtUmVhZGVyJiB4bWwpCnsKCiAgICB3aGlsZSAoIXht bC5hdEVuZCgpKSB7CiAgICAgICAgeG1sLnJlYWROZXh0KCk7CgogICAgICAgIGlmICh4bWwuaXNF bmRFbGVtZW50KCkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAo eG1sLmlzU3RhcnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgcGFyc2VVbmtub3duRWxlbWVudCh4 bWwpOwogICAgICAgIH0KICAgIH0KfQoKLy8gVXNlciB0b2dnbGVhYmxlIHZhbHVlcyBzZXQgZnJv bSB0aGUgZGF0YWVuZ2luZSA8LT4gUGxhc21hIEFwcGxldAp2b2lkIFdpbmRGaW5kZXJJb246Om9w dGlvbihpbnQgb3B0aW9uLCBjb25zdCBRVmFyaWFudCYgdmFsdWUpCnsKICAgIHN3aXRjaCAob3B0 aW9uKSB7CiAgICBjYXNlIElvbkludGVyZmFjZTo6VU5JVFM6CiAgICAgICAgLy8gU2V0IHRoZSBV bml0cyB1c2VkIChEZXBlbmRzIG9uIElvbikKICAgICAgICBpZiAodmFsdWUudG9JbnQoKSA9PSBL TG9jYWxlOjpNZXRyaWMpIHsKICAgICAgICAgICAgZC0+bV91c2VNZXRyaWMgPSB0cnVlOwogICAg ICAgIH0KICAgICAgICBpZiAodmFsdWUudG9JbnQoKSA9PSBLTG9jYWxlOjpJbXBlcmlhbCkgewog ICAgICAgICAgICBkLT5tX3VzZU1ldHJpYyA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBicmVh azsKICAgIGNhc2UgSW9uSW50ZXJmYWNlOjpUSU1FRk9STUFUOgogICAgICAgIGlmICh2YWx1ZS50 b0Jvb2woKSkgewogICAgICAgICAgICBkLT5tX3VzZVVUQyA9IHRydWU7CiAgICAgICAgfQogICAg ICAgIGJyZWFrOwogICAgY2FzZSBJb25JbnRlcmZhY2U6OldJTkRGT1JNQVQ6CiAgICAgICAgaWYg KHZhbHVlLnRvQm9vbCgpKSB7CiAgICAgICAgICAgZC0+bV93aW5kSW5NZXRlcnMgPSB0cnVlOwog ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgZC0+bV93aW5kSW5NZXRlcnMgPSBmYWxzZTsKICAg ICAgICB9CiAgICAgICAgYnJlYWs7CiAgICB9Cn0KCldlYXRoZXJEYXRhIFdpbmRGaW5kZXJJb246 OnBhcnNlV2VhdGhlckJsb2NrKFdlYXRoZXJEYXRhJiBkYXRhLCBRWG1sU3RyZWFtUmVhZGVyJiB4 bWwpCnsKICAgIHdoaWxlICgheG1sLmF0RW5kKCkpIHsKICAgICAgICB4bWwucmVhZE5leHQoKTsK CiAgICAgICAgaWYgKHhtbC5pc1N0YXJ0RWxlbWVudCgpKSB7CiAgICAgICAgICAgIGlmICh4bWwu bmFtZSgpID09ICJzdGF0aW9uIikgewogICAgICAgICAgICAgICAgZGF0YS5zdGF0aW9uTmFtZT14 bWwuYXR0cmlidXRlcygpLnZhbHVlKCJuYW1lIikudG9TdHJpbmcoKTsKCQlkYXRhLnN0YXRpb25J RD14bWwuYXR0cmlidXRlcygpLnZhbHVlKCJpZCIpLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0K ICAgICAgICAgICAgZWxzZSBpZiAoeG1sLm5hbWUoKSA9PSAiZGF0ZSIpIHsKICAgICAgICAgICAg ICAgIGRhdGEub2JzRGF0ZT14bWwucmVhZEVsZW1lbnRUZXh0KCk7CiAgICAgICAgICAgIH0KICAg ICAgICAgICAgZWxzZSBpZiAoeG1sLm5hbWUoKSA9PSAidGltZSIpIHsKICAgICAgICAgICAgICAg IGRhdGEub2JzVGltZXN0YW1wPXhtbC5yZWFkRWxlbWVudFRleHQoKTsKICAgICAgICAgICAgfQog ICAgICAgICAgICBlbHNlIGlmICh4bWwubmFtZSgpID09ICJhaXJfdGVtcGVyYXR1cmUiKSB7CgkJ ZGF0YS5haXJfdGVtcGVyYXR1cmU9eG1sLnJlYWRFbGVtZW50VGV4dCgpOwogICAgICAgICAgICB9 CgkgICAgZWxzZSBpZiAoeG1sLm5hbWUoKSA9PSAid2F0ZXJfdGVtcGVyYXR1cmUiKSB7CiAgICAg ICAgICAgICAgICBkYXRhLndhdGVyX3RlbXBlcmF0dXJlPXhtbC5yZWFkRWxlbWVudFRleHQoKTsK ICAgICAgICAgICAgfQoJICAgIGVsc2UgaWYgKHhtbC5uYW1lKCkgPT0gIndpbmRfZGlyZWN0aW9u IikgewogICAgICAgICAgICAgICAgZGF0YS53aW5kRGlyZWN0aW9uPXhtbC5yZWFkRWxlbWVudFRl eHQoKTsKICAgICAgICAgICAgfQoJICAgIGVsc2UgaWYgKHhtbC5uYW1lKCkgPT0gIndpbmRfc3Bl ZWQiKSB7CiAgICAgICAgICAgICAgICBkYXRhLndpbmRTcGVlZD14bWwucmVhZEVsZW1lbnRUZXh0 KCk7CiAgICAgICAgICAgIH0KCSAgICBlbHNlIGlmICh4bWwubmFtZSgpID09ICJ3aW5kX2d1c3Rz IikgewogICAgICAgICAgICAgICAgZGF0YS53aW5kR3VzdD14bWwucmVhZEVsZW1lbnRUZXh0KCk7 CiAgICAgICAgICAgIH0KLyoKCSAgICBlbHNlIGlmICh4bWwubmFtZSgpID09ICJ3ZWF0aGVyIikg ewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KKi8KCSAgICBlbHNlIGlmICh4bWwubmFt ZSgpID09ICJwcmVjaXBpdGF0aW9uIikgewogICAgICAgICAgICAgICAgZGF0YS5wcmVjaXBpdGF0 aW9uPXhtbC5yZWFkRWxlbWVudFRleHQoKTsKICAgICAgICAgICAgfQoJICAgIGVsc2UgaWYgKHht bC5uYW1lKCkgPT0gIndhdmVfaGVpZ2h0IikgewogICAgICAgICAgICAgICAgZGF0YS53YXZlSGVp Z2h0PXhtbC5yZWFkRWxlbWVudFRleHQoKTsKICAgICAgICAgICAgfQoJICAgIGVsc2UgaWYgKHht bC5uYW1lKCkgPT0gIndhdmVfZGlyZWN0aW9uIikgewogICAgICAgICAgICAgICAgZGF0YS53YXZl RGlyZWN0aW9uPXhtbC5yZWFkRWxlbWVudFRleHQoKTsKICAgICAgICAgICAgfQoJICAgIGVsc2Ug aWYgKHhtbC5uYW1lKCkgPT0gIndhdmVfcGVyaW9kIikgewogICAgICAgICAgICAgICAgZGF0YS53 YXZlUGVyaW9kPXhtbC5yZWFkRWxlbWVudFRleHQoKTsKICAgICAgICAgICAgfQoJICAgIGVsc2Ug ewogICAgICAgICAgICAgICAgcGFyc2VVbmtub3duRWxlbWVudCh4bWwpOwogICAgICAgICAgICB9 CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRhdGE7Cn0KCi8vIFBhcnNlIFdlYXRoZXIgZGF0 YSBtYWluIGxvb3AsIGZyb20gaGVyZSB3ZSBoYXZlIHRvIGRlY2VuZCBpbnRvIGVhY2ggdGFnIHBh aXIKYm9vbCBXaW5kRmluZGVySW9uOjpyZWFkWE1MRGF0YShjb25zdCBRU3RyaW5nJiBzb3VyY2Us IFFYbWxTdHJlYW1SZWFkZXImIHhtbCkKewogICAgV2VhdGhlckRhdGEgZGF0YTsKICAgIGRhdGEu Y29tZm9ydHRlbXAgPSAiTi9BIjsKICAgIGRhdGEucmVjb3JkSGlnaCA9IDAuMDsKICAgIGRhdGEu cmVjb3JkTG93ID0gMC4wOwoKICAgIHdoaWxlICgheG1sLmF0RW5kKCkpIHsKICAgICAgICB4bWwu cmVhZE5leHQoKTsKCiAgICAgICAgaWYgKHhtbC5pc0VuZEVsZW1lbnQoKSkgewogICAgICAgICAg ICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICh4bWwuaXNTdGFydEVsZW1lbnQoKSkgewog ICAgICAgICAgICBpZiAoeG1sLm5hbWUoKSA9PSAicmVwb3J0IikgewogICAgICAgICAgICAgICAg ZGF0YSA9IHBhcnNlV2VhdGhlclNpdGVCbG9jayhkYXRhLCB4bWwpOwogICAgICAgICAgICB9IGVs c2UgewogICAgICAgICAgICAgICAgcGFyc2VVbmtub3duRWxlbWVudCh4bWwpOwogICAgICAgICAg ICB9CiAgICAgICAgfQogICAgfQoKICAgIGQtPm1fd2VhdGhlckRhdGFbc291cmNlXSA9IGRhdGE7 CiAgICB1cGRhdGVXZWF0aGVyKHNvdXJjZSk7CiAgICByZXR1cm4gIXhtbC5lcnJvcigpOwp9CgpR U3RyaW5nIFdpbmRGaW5kZXJJb246OmNvdW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlKQp7CiAg ICByZXR1cm4gIk4vQSI7Ly9kLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0uY291bnRyeU5hbWU7Cn0K UVN0cmluZyBXaW5kRmluZGVySW9uOjpjb250aW5lbnQoY29uc3QgUVN0cmluZyYgc291cmNlKQp7 CiAgICByZXR1cm4gIk4vQSI7Ly9kLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0uc2hvcnRUZXJyaXRv cnlOYW1lOwp9ClFTdHJpbmcgV2luZEZpbmRlcklvbjo6Y2l0eShjb25zdCBRU3RyaW5nJiBzb3Vy Y2UpCnsKICAgIHJldHVybiBkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0uc3RhdGlvbk5hbWU7Cn0K UVN0cmluZyBXaW5kRmluZGVySW9uOjpyZWdpb24oY29uc3QgUVN0cmluZyYgc291cmNlKQp7CiAg ICByZXR1cm4gIk4vQSI7ZC0+bV93ZWF0aGVyRGF0YVtzb3VyY2VdLnJlZ2lvbk5hbWU7Cn0KUVN0 cmluZyBXaW5kRmluZGVySW9uOjpzdGF0aW9uKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKewogICAg aWYgKCFkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0uc3RhdGlvbklELmlzRW1wdHkoKSkgewogICAg ICAgICByZXR1cm4gZC0+bV93ZWF0aGVyRGF0YVtzb3VyY2VdLnN0YXRpb25JRC50b1VwcGVyKCk7 CiAgICB9CiAgICAKICAgIHJldHVybiBRU3RyaW5nKCJOL0EiKTsKfQpRU3RyaW5nIEVudkNhbmFk YUlvbjo6b2JzZXJ2YXRpb25UaW1lKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKewogICAgcmV0dXJu IGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS5vYnNUaW1lc3RhbXA7Cn0KUVN0cmluZyBFbnZDYW5h ZGFJb246Om9ic2VydmF0aW9uRGF0ZShjb25zdCBRU3RyaW5nJiBzb3VyY2UpCnsKICAgIHJldHVy biBkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0ub2JzRGF0ZTsKfQoKUU1hcDxRU3RyaW5nLCBRU3Ry aW5nPiBXaW5kRmluZGVySW9uOjphaXJfdGVtcGVyYXR1cmUoY29uc3QgUVN0cmluZyYgc291cmNl KQp7CiAgICBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IGFpcl90ZW1wZXJhdHVyZUluZm87CiAgICBp ZiAoZC0+bV91c2VNZXRyaWMpIHsKICAgICAgICBpZiAoIWQtPm1fd2VhdGhlckRhdGFbc291cmNl XS5haXJfdGVtcGVyYXR1cmUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIGFpcl90ZW1wZXJhdHVy ZUluZm8uaW5zZXJ0KCJhaXIgdGVtcGVyYXR1cmUiLCBRU3RyaW5nKCIlMSIpLmFyZyhRU3RyaW5n OjpudW1iZXIoZC0+bV93ZWF0aGVyRGF0YVtzb3VyY2VdLmFpcl90ZW1wZXJhdHVyZS50b0Zsb2F0 KCksICdmJywgMSkpKTsKICAgICAgICB9CiAgICAgICAgYWlyX3RlbXBlcmF0dXJlSW5mby5pbnNl cnQoInRlbXBlcmF0dXJlVW5pdCIsIFFTdHJpbmcoIiUxQyIpLmFyZyhRQ2hhcigxNzYpKSk7CiAg ICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoIWQtPm1fd2VhdGhlckRhdGFbc291cmNlXS5haXJf dGVtcGVyYXR1cmUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIGFpcl90ZW1wZXJhdHVyZUluZm8u aW5zZXJ0KCJhaXIgdGVtcGVyYXR1cmUiLCBRU3RyaW5nKCIlMSIpLmFyZyhRU3RyaW5nOjpudW1i ZXIoZC0+bV9mb3JtdWxhLmNlbHNpdXNUb0YoZC0+bV93ZWF0aGVyRGF0YVtzb3VyY2VdLmFpcl90 ZW1wZXJhdHVyZS50b0Zsb2F0KCkpLCAnZicsIDEpKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgYWlyX3RlbXBlcmF0dXJlSW5mby5pbnNlcnQoImFpciB0ZW1wZXJhdHVyZSIsICJOL0Ei KTsKICAgICAgICB9CglhaXJfdGVtcGVyYXR1cmVJbmZvLmluc2VydCgidGVtcGVyYXR1cmVVbml0 IiwgUVN0cmluZygiJTFGIikuYXJnKFFDaGFyKDE3NikpKTsKICAgIH0KICAgIHJldHVybiBhaXJf dGVtcGVyYXR1cmVJbmZvOwp9CgpRTWFwPFFTdHJpbmcsIFFTdHJpbmc+IFdpbmRGaW5kZXJJb246 OndhdGVyX3RlbXBlcmF0dXJlKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSkKewogICAgUU1hcDxRU3Ry aW5nLCBRU3RyaW5nPiB3YXRlcl90ZW1wZXJhdHVyZUluZm87CiAgICBpZiAoZC0+bV91c2VNZXRy aWMpIHsKICAgICAgICBpZiAoIWQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53YXRlcl90ZW1wZXJh dHVyZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgd2F0ZXJfdGVtcGVyYXR1cmVJbmZvLmluc2Vy dCgid2F0ZXIgdGVtcGVyYXR1cmUiLCBRU3RyaW5nKCIlMSIpLmFyZyhRU3RyaW5nOjpudW1iZXIo ZC0+bV93ZWF0aGVyRGF0YVtzb3VyY2VdLndhdGVyX3RlbXBlcmF0dXJlLnRvRmxvYXQoKSwgJ2Yn LCAxKSkpOwogICAgICAgIH0KICAgICAgICB3YXRlcl90ZW1wZXJhdHVyZUluZm8uaW5zZXJ0KCJ0 ZW1wZXJhdHVyZVVuaXQiLCBRU3RyaW5nKCIlMUMiKS5hcmcoUUNoYXIoMTc2KSkpOwogICAgfQog ICAgZWxzZSB7CiAgICAgICAgaWYgKCFkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0ud2F0ZXJfdGVt cGVyYXR1cmUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIHdhdGVyX3RlbXBlcmF0dXJlSW5mby5p bnNlcnQoIndhdGVyIHRlbXBlcmF0dXJlIiwgUVN0cmluZygiJTEiKS5hcmcoUVN0cmluZzo6bnVt YmVyKGQtPm1fZm9ybXVsYS5jZWxzaXVzVG9GKGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53YXRl cl90ZW1wZXJhdHVyZS50b0Zsb2F0KCkpLCAnZicsIDEpKSk7CiAgICAgICAgfSBlbHNlIHsKICAg ICAgICAgICAgd2F0ZXJfdGVtcGVyYXR1cmVJbmZvLmluc2VydCgid2F0ZXIgdGVtcGVyYXR1cmUi LCAiTi9BIik7CiAgICAgICAgfQoJd2F0ZXJfdGVtcGVyYXR1cmVJbmZvLmluc2VydCgidGVtcGVy YXR1cmVVbml0IiwgUVN0cmluZygiJTFGIikuYXJnKFFDaGFyKDE3NikpKTsKICAgIH0KICAgIHJl dHVybiB3YXRlcl90ZW1wZXJhdHVyZUluZm87Cn0KClFNYXA8UVN0cmluZywgUVN0cmluZz4gV2lu ZEZpbmRlcklvbjo6d2luZChjb25zdCBRU3RyaW5nJiBzb3VyY2UpCnsKICAgIFFNYXA8UVN0cmlu ZywgUVN0cmluZz4gd2luZEluZm87CgogICAgLy8gTWF5IG5vdCBoYXZlIGFueSB3aW5kcwogICAg aWYgKGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53aW5kU3BlZWQuaXNFbXB0eSgpKSB7CiAgICAg ICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kU3BlZWQiLCAiTi9BIik7CiAgICAgICAgd2luZEluZm8u aW5zZXJ0KCJ3aW5kVW5pdCIsICJOL0EiKTsKICAgIH0gZWxzZSBpZiAoZC0+bV93ZWF0aGVyRGF0 YVtzb3VyY2VdLndpbmRTcGVlZC50b0ludCgpID09IDApIHsKICAgICAgICB3aW5kSW5mby5pbnNl cnQoIndpbmRTcGVlZCIsICJDYWxtIik7CiAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kVW5p dCIsICJOL0EiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGQtPm1fdXNlTWV0cmljKSB7CiAg ICAgICAgICAgIGlmIChkLT5tX3dpbmRJbk1ldGVycykgewogICAgICAgICAgICAgICAgd2luZElu Zm8uaW5zZXJ0KCJ3aW5kU3BlZWQiLCBRU3RyaW5nKCIlMSIpLmFyZyhRU3RyaW5nOjpudW1iZXIo ZC0+bV9mb3JtdWxhLmtub3RzVG9NUyhkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0ud2luZFNwZWVk LnRvSW50KCkpLCAnZicsIDIpKSk7CiAgICAgICAgICAgICAgICB3aW5kSW5mby5pbnNlcnQoIndp bmRVbml0IiwgIm0vcyIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd2lu ZEluZm8uaW5zZXJ0KCJ3aW5kU3BlZWQiLCBRU3RyaW5nKCIlMSIpLmFyZyhRU3RyaW5nOjpudW1i ZXIoZC0+bV9mb3JtdWxhLmtub3RzVG9LTShkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0ud2luZFNw ZWVkLnRvSW50KCkpLCAnZicsIDIpKSk7CiAgICAgICAgICAgICAgICB3aW5kSW5mby5pbnNlcnQo IndpbmRVbml0IiwgImttL2giKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAg ICAgICAgIHdpbmRJbmZvLmluc2VydCgid2luZFNwZWVkIiwgUVN0cmluZygiJTEiKS5hcmcoUVN0 cmluZzo6bnVtYmVyKGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53aW5kU3BlZWQudG9JbnQoKSkp KTsKICAgICAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kVW5pdCIsICJrdHMiKTsKICAgICAg ICB9CiAgICB9CgogICAgLy8gTWF5IG5vdCBhbHdheXMgaGF2ZSBndXN0eSB3aW5kcwogICAgaWYg KGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53aW5kR3VzdC5pc0VtcHR5KCkpIHsKICAgICAgICB3 aW5kSW5mby5pbnNlcnQoIndpbmRHdXN0IiwgIk4vQSIpOwogICAgICAgIHdpbmRJbmZvLmluc2Vy dCgid2luZEd1c3RVbml0IiwgIk4vQSIpOwogICAgfSBlbHNlIHsKICAgICAgICBpZiAoZC0+bV91 c2VNZXRyaWMpIHsKICAgICAgICAgICAgaWYgKGQtPm1fd2luZEluTWV0ZXJzKSB7IAogICAgICAg ICAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kR3VzdCIsIFFTdHJpbmcoIiUxIikuYXJnKFFT dHJpbmc6Om51bWJlcihkLT5tX2Zvcm11bGEua25vdHNUb01TKGQtPm1fd2VhdGhlckRhdGFbc291 cmNlXS53aW5kR3VzdC50b0ludCgpKSwgJ2YnLCAyKSkpOwogICAgICAgICAgICAgICAgd2luZElu Zm8uaW5zZXJ0KCJ3aW5kR3VzdFVuaXQiLCAibS9zIik7CiAgICAgICAgICAgIH0gZWxzZSB7IAog ICAgICAgICAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kR3VzdCIsIFFTdHJpbmcoIiUxIiku YXJnKFFTdHJpbmc6Om51bWJlcihkLT5tX2Zvcm11bGEua25vdHNUb0tNKGQtPm1fd2VhdGhlckRh dGFbc291cmNlXS53aW5kR3VzdC50b0ludCgpKSwgJ2YnLCAyKSkpOwogICAgICAgICAgICAgICAg d2luZEluZm8uaW5zZXJ0KCJ3aW5kR3VzdFVuaXQiLCAia20vaCIpOwogICAgICAgICAgICB9CiAg ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kR3VzdCIsIFFT dHJpbmcoIiUxIikuYXJnKFFTdHJpbmc6Om51bWJlcihkLT5tX3dlYXRoZXJEYXRhW3NvdXJjZV0u d2luZEd1c3QudG9JbnQoKSkpKTsKICAgICAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5kR3Vz dFVuaXQiLCAia3RzIik7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChkLT5tX3dlYXRoZXJEYXRh W3NvdXJjZV0ud2luZERpcmVjdGlvbi5pc0VtcHR5KCkgJiYgZC0+bV93ZWF0aGVyRGF0YVtzb3Vy Y2VdLndpbmRTcGVlZC5pc0VtcHR5KCkpIHsKICAgICAgICB3aW5kSW5mby5pbnNlcnQoIndpbmRE aXJlY3Rpb24iLCAiTi9BIik7CiAgICB9IGVsc2UgaWYgKGQtPm1fd2VhdGhlckRhdGFbc291cmNl XS53aW5kU3BlZWQudG9JbnQoKSA9PSAwKSB7CiAgICAgICAgd2luZEluZm8uaW5zZXJ0KCJ3aW5k RGlyZWN0aW9uIiwgIlZSIik7CiAgICB9IGVsc2UgewogICAgICAgIHdpbmRJbmZvLmluc2VydCgi d2luZERpcmVjdGlvbiIsIGQtPm1fd2VhdGhlckRhdGFbc291cmNlXS53aW5kRGlyZWN0aW9uKTsK ICAgIH0KICAgIHJldHVybiB3aW5kSW5mbzsKfQoKCiNpbmNsdWRlICJpb25fd2luZGZpbmRlci5t b2MiCg== --Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/x-chdr; name="ion_windfinder.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ion_windfinder.h LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwNyBieSBTaGF3biBTdGFy ciA8c2hhd24uc3RhcnJAcm9nZXJzLmNvbT4gICAgICAgICAgICAqCiAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSAgKgogKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCiAqICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig ICAgICoKICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgICAgICoKICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgogKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICAqCiAqICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAqCiAqICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg ICAgICAgICAgICAgICoKICogICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQSAgICAgICAgICAqCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgovKiBJb24gZm9yIFdpbmRGaW5kZXIgWE1MIGRhdGEgKi8KCiNp Zm5kZWYgX0lPTl9XSU5ERklOREVSX0hfCiNkZWZpbmUgX0lPTl9XSU5ERklOREVSX0hfCgojaW5j bHVkZSA8UXRYbWwvUVhtbFN0cmVhbVJlYWRlcj4KI2luY2x1ZGUgPFF0Q29yZS9RU3RyaW5nTGlz dD4KI2luY2x1ZGUgPFFEZWJ1Zz4KI2luY2x1ZGUgPGt1cmwuaD4KI2luY2x1ZGUgPGtpby9qb2Iu aD4KI2luY2x1ZGUgPGtpby9zY2hlZHVsZXIuaD4KI2luY2x1ZGUgPGtkZW1hY3Jvcy5oPgojaW5j bHVkZSA8cGxhc21hL2RhdGFlbmdpbmUuaD4KI2luY2x1ZGUgImlvbi5oIgojaW5jbHVkZSAid2Vh dGhlcl9mb3JtdWxhLmgiCgpjbGFzcyBXZWF0aGVyRGF0YQp7CgpwdWJsaWM6CiAgICBRU3RyaW5n IHN0YXRpb25OYW1lOwogICAgUVN0cmluZyBjb3VudHJ5TmFtZTsKICAgIFFTdHJpbmcgY29udGlu ZW50TmFtZTsKICAgIFFTdHJpbmcgc3RhdGlvbklEOwoKICAgIC8vIEN1cnJlbnQgb2JzZXJ2YXRp b24gaW5mb3JtYXRpb24uCiAgICBRU3RyaW5nIG9ic1RpbWVzdGFtcDsKICAgIFFTdHJpbmcgb2Jz RGF0ZTsKICAgIFFTdHJpbmcgYWlyX3RlbXBlcmF0dXJlOwogICAgUVN0cmluZyB3YXRlcl90ZW1w ZXJhdHVyZTsKICAgIFFTdHJpbmcgd2luZFNwZWVkOwogICAgUVN0cmluZyB3aW5kR3VzdDsKICAg IFFTdHJpbmcgd2luZERpcmVjdGlvbjsKICAgIFFTdHJpbmcgcHJlY2lwaXRhdGlvbjsKICAgIFFT dHJpbmcgd2F2ZUhlaWdodDsKICAgIFFTdHJpbmcgd2F2ZURpcmVjdGlvbjsKICAgIFFTdHJpbmcg d2F2ZVBlcmlvZDsKfTsKCmNsYXNzIEtERV9FWFBPUlQgV2luZEZpbmRlcklvbiA6IHB1YmxpYyBJ b25JbnRlcmZhY2UKewogICAgUV9PQkpFQ1QKCnB1YmxpYzoKICAgIFdpbmRGaW5kZXJJb24oUU9i amVjdCAqcGFyZW50LCBjb25zdCBRVmFyaWFudExpc3QgJmFyZ3MpOwogICAgfldpbmRGaW5kZXJJ b24oKTsKICAgIHZvaWQgaW5pdCgpOyAgLy8gU2V0dXAgdGhlIGNpdHkgbG9jYXRpb24sIGZldGNo aW5nIHRoZSBjb3JyZWN0IFVSTCBuYW1lLgogICAgYm9vbCB1cGRhdGVJb25Tb3VyY2UoY29uc3Qg UVN0cmluZyYgc291cmNlKTsgLy8gU3luYyBkYXRhIHNvdXJjZSB3aXRoIEFwcGxldAogICAgdm9p ZCBvcHRpb24oaW50IG9wdGlvbiwgY29uc3QgUVZhcmlhbnQmIHZhbHVlKTsKICAgIHZvaWQgdXBk YXRlV2VhdGhlcihjb25zdCBRU3RyaW5nJiBzb3VyY2UpOwoKcHJvdGVjdGVkIHNsb3RzOgogICAg dm9pZCBzZXR1cF9zbG90RGF0YUFycml2ZWQoS0lPOjpKb2IgKiwgY29uc3QgUUJ5dGVBcnJheSAm KTsKICAgIHZvaWQgc2V0dXBfc2xvdEpvYkZpbmlzaGVkKEtKb2IgKik7CgogICAgdm9pZCBzbG90 RGF0YUFycml2ZWQoS0lPOjpKb2IgKiwgY29uc3QgUUJ5dGVBcnJheSAmKTsKICAgIHZvaWQgc2xv dEpvYkZpbmlzaGVkKEtKb2IgKik7Cgpwcml2YXRlOgogICAgLyogV2luZEZpbmRlciBNZXRob2Rz IC0gSW50ZXJuYWwgZm9yIElvbiAqLwoKICAgIC8vIFBsYWNlIGluZm9ybWF0aW9uCiAgICBRU3Ry aW5nIGNvdW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlKTsKICAgIFFTdHJpbmcgY29udGluZW50 KGNvbnN0IFFTdHJpbmcmIHNvdXJjZSk7CiAgICBRU3RyaW5nIGNpdHkoY29uc3QgUVN0cmluZyYg c291cmNlKTsKICAgIFFTdHJpbmcgcmVnaW9uKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSk7CiAgICBR U3RyaW5nIHN0YXRpb24oY29uc3QgUVN0cmluZyYgc291cmNlKTsKCiAgICAvLyBDdXJyZW50IENv bmRpdGlvbnMgV2VhdGhlciBpbmZvCiAgICBRU3RyaW5nIG9ic2VydmF0aW9uVGltZShjb25zdCBR U3RyaW5nJiBzb3VyY2UpOyAgICAKICAgIFFTdHJpbmcgb2JzZXJ2YXRpb25EYXRlKGNvbnN0IFFT dHJpbmcmIHNvdXJjZSk7CgogICAgUU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBhaXJfdGVtcGVyYXR1 cmUoY29uc3QgUVN0cmluZyYgc291cmNlKTsKICAgIFFNYXA8UVN0cmluZywgUVN0cmluZz4gd2F0 ZXJfdGVtcGVyYXR1cmUoY29uc3QgUVN0cmluZyYgc291cmNlKTsKICAgIFFNYXA8UVN0cmluZywg UVN0cmluZz4gd2luZChjb25zdCBRU3RyaW5nJiBzb3VyY2UpOwoKICAgIC8vIExvYWQgYW5kIFBh cnNlIHRoZSBwbGFjZSBYTUwgbGlzdGluZwogICAgdm9pZCBnZXRYTUxTZXR1cCh2b2lkKTsKICAg IGJvb2wgcmVhZFhNTFNldHVwKHZvaWQpOwoKICAgIC8vIExvYWQgYW5kIHBhcnNlIHRoZSBzcGVj aWZpYyBwbGFjZShzKQogICAgdm9pZCBnZXRYTUxEYXRhKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSk7 CiAgICBib29sIHJlYWRYTUxEYXRhKGNvbnN0IFFTdHJpbmcmIHNvdXJjZSwgUVhtbFN0cmVhbVJl YWRlciYgeG1sKTsKCiAgICAvLyBDaGVjayBpZiBwbGFjZSBzcGVjaWZpZWQgaXMgdmFsaWQgb3Ig bm90CiAgICBRU3RyaW5nTGlzdCB2YWxpZGF0ZShjb25zdCBRU3RyaW5nJiBzb3VyY2UpIGNvbnN0 OwoKICAgIC8vIENhdGNoYWxsIGZvciB1bmtub3duIFhNTCB0YWdzCiAgICB2b2lkIHBhcnNlVW5r bm93bkVsZW1lbnQoUVhtbFN0cmVhbVJlYWRlciYgeG1sKTsKCiAgICAvLyBQYXJzZSB3ZWF0aGVy IFhNTCBkYXRhCiAgICBXZWF0aGVyRGF0YSBwYXJzZVdlYXRoZXJCbG9jayhXZWF0aGVyRGF0YSYg ZGF0YSwgUVhtbFN0cmVhbVJlYWRlciYgeG1sKTsKCnByaXZhdGU6CiAgICBjbGFzcyBQcml2YXRl OwogICAgUHJpdmF0ZSAqY29uc3QgZDsKfTsKCktfRVhQT1JUX1BMQVNNQV9JT04oZW52Y2FuLCBF bnZDYW5hZGFJb24pCgojZW5kaWYK --Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/x-c++src; name="weather_formula.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=weather_formula.cpp LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwNyBieSBTaGF3biBTdGFy ciA8c2hhd24uc3RhcnJAcm9nZXJzLmNvbT4gICAgICAgICAgICAqCiAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSAgKgogKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCiAqICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig ICAgICoKICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgICAgICoKICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgogKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICAqCiAqICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAqCiAqICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg ICAgICAgICAgICAgICoKICogICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQSAgICAgICAgICAqCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgojaW5jbHVkZSAid2VhdGhlcl9mb3JtdWxhLmgiCiNpbmNsdWRl IDxtYXRoLmg+CgpXZWF0aGVyRm9ybXVsYTo6V2VhdGhlckZvcm11bGEoKQp7Cn0KCldlYXRoZXJG b3JtdWxhOjp+V2VhdGhlckZvcm11bGEoKQp7Cn0KCmZsb2F0IFdlYXRoZXJGb3JtdWxhOjpjZWxz aXVzVG9GKGZsb2F0IHRlbXBlcmF0dXJlKSBjb25zdAp7CiAgICByZXR1cm4gKHRlbXBlcmF0dXJl ICogOSAvIDUgKyAzMik7Cn0KCmZsb2F0IFdlYXRoZXJGb3JtdWxhOjpmYWhyZW5oZWl0VG9DKGZs b2F0IHRlbXBlcmF0dXJlKSBjb25zdAp7CiAgICByZXR1cm4gKHRlbXBlcmF0dXJlIC0gMzIpICog NSAvIDk7Cn0KCmZsb2F0IFdlYXRoZXJGb3JtdWxhOjptaWxlc1RvS00oZmxvYXQgbWlsZXMpIGNv bnN0CnsKICAgIHJldHVybiAoMS42MDkzNDQgKiBtaWxlcyk7Cn0KCmZsb2F0IFdlYXRoZXJGb3Jt dWxhOjpraWxvbWV0ZXJzVG9NSShmbG9hdCBrbSkgY29uc3QKewogICAgcmV0dXJuICgwLjYyMTM3 MTE5MiAqIGttKTsKfQoKZmxvYXQgV2VhdGhlckZvcm11bGE6OmtpbG9wYXNjYWxzVG9JbmNoZXMo ZmxvYXQga3BhKSBjb25zdAp7CiAgICByZXR1cm4gKCgwLjAyOTUyOTk3ICoga3BhKSAqIDEwKTsK fQoKZmxvYXQgV2VhdGhlckZvcm11bGE6OmluY2hlc1RvS2lsb3Bhc2NhbHMoZmxvYXQgaW5jaGVz KSBjb25zdAp7CiAgICByZXR1cm4gKGluY2hlcyAqIDMuMzg2Mzg5KTsKfQoKZmxvYXQgV2VhdGhl ckZvcm11bGE6OmNlbnRpbWV0ZXJzVG9JTihmbG9hdCBjbSkgY29uc3QgCnsKICAgIHJldHVybiAo Y20gKiAwLjM5MzcwMDc4Nyk7Cn0KCmZsb2F0IFdlYXRoZXJGb3JtdWxhOjppbmNoZXNUb0NNKGZs b2F0IGluY2gpIGNvbnN0CnsKICAgIHJldHVybiAoaW5jaCAqIDIuNTQpOwp9CgpmbG9hdCBXZWF0 aGVyRm9ybXVsYTo6bWlsbGltZXRlcnNUb0lOKGZsb2F0IG1tKSBjb25zdAp7CiAgICByZXR1cm4g KG1tICogMC4wMzkzNzAwNzg3KTsKfQoKZmxvYXQgV2VhdGhlckZvcm11bGE6OmluY2hlc1RvTU0o ZmxvYXQgaW5jaCkgY29uc3QKewogICAgcmV0dXJuIChpbmNoICogMjUuNCk7Cn0KCmZsb2F0IFdl YXRoZXJGb3JtdWxhOjpraWxvbWV0ZXJzVG9NUyhmbG9hdCBrbSkgY29uc3QKewogICAgcmV0dXJu IChrbSAqIDAuMjc3Nzc4KTsKfQoKZmxvYXQgV2VhdGhlckZvcm11bGE6Om1pbGVzVG9NUyhmbG9h dCBtaWxlcykgY29uc3QKewogICAgcmV0dXJuIChtaWxlcyAqIDAuNDQ3MDQpOwp9CgpmbG9hdCBX ZWF0aGVyRm9ybXVsYTo6a25vdHNUb01TKGZsb2F0IGtub3RzKSBjb25zdAp7CiAgICByZXR1cm4g KGtub3RzICogMS45NDM4KTsKfQoKZmxvYXQgV2VhdGhlckZvcm11bGE6Omtub3RzVG9LTShmbG9h dCBrbm90cykgY29uc3QKewogICAgcmV0dXJuIE1hdGguZmxvb3Ioa25vdHMgKiAxLjg1MiArIDAu NSk7Cn0K --Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/x-chdr; name="weather_formula.h" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=weather_formula.h LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgogKiAgIENvcHlyaWdodCAoQykgMjAwNyBieSBTaGF3biBTdGFy ciA8c2hhd24uc3RhcnJAcm9nZXJzLmNvbT4gICAgICAgICAgICAqCiAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSAgKgogKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAqCiAqICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig ICAgICoKICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCiAqICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws ICAgICAgICoKICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgKgogKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgICAgICAgICAqCiAqICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAqCiAqICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAg ICAgICAgICAgICAgICoKICogICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogKiAgIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQSAgICAgICAgICAqCiAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgovKiBNZXRlb3JvbG9naWNhbCBmb3JtdWxhIGNsYXNzICovCgoj aWZuZGVmIF9XRUFUSEVSRk9STVVMQV9ICiNkZWZpbmUgX1dFQVRIRVJGT1JNVUxBX0gKCiNpbmNs dWRlIDxrZGVtYWNyb3MuaD4KCmNsYXNzIEtERV9FWFBPUlQgV2VhdGhlckZvcm11bGEKewpwdWJs aWM6CiAgICBXZWF0aGVyRm9ybXVsYSgpOwogICAgfldlYXRoZXJGb3JtdWxhKCk7CiAgICAvLyBD b252ZXJ0IFRlbXBlcmF0dXJlcywgcHJlc3N1cmVzCiAgICBmbG9hdCBjZWxzaXVzVG9GKGZsb2F0 IHRlbXBlcmF0dXJlKSBjb25zdDsKICAgIGZsb2F0IGZhaHJlbmhlaXRUb0MoZmxvYXQgdGVtcGVy YXR1cmUpIGNvbnN0OwogICAgZmxvYXQgbWlsZXNUb0tNKGZsb2F0IG1pbGVzKSBjb25zdDsKICAg IGZsb2F0IGtpbG9tZXRlcnNUb01JKGZsb2F0IGttKSBjb25zdDsKICAgIGZsb2F0IGtpbG9wYXNj YWxzVG9JbmNoZXMoZmxvYXQga3BhKSBjb25zdDsKICAgIGZsb2F0IGluY2hlc1RvS2lsb3Bhc2Nh bHMoZmxvYXQgaW5jaGVzKSBjb25zdDsKICAgIGZsb2F0IGNlbnRpbWV0ZXJzVG9JTihmbG9hdCBj bSkgY29uc3Q7CiAgICBmbG9hdCBpbmNoZXNUb0NNKGZsb2F0IGluY2gpIGNvbnN0OwogICAgZmxv YXQgbWlsbGltZXRlcnNUb0lOKGZsb2F0IG1tKSBjb25zdDsKICAgIGZsb2F0IGluY2hlc1RvTU0o ZmxvYXQgaW5jaCkgY29uc3Q7CgogICAgLy8gV2luZHMgbWVhc3VyZWQgaW4gbWV0ZXJzIHBlciBz ZWNvbmQKICAgIGZsb2F0IGtpbG9tZXRlcnNUb01TKGZsb2F0IGttKSBjb25zdDsKICAgIGZsb2F0 IG1pbGVzVG9NUyhmbG9hdCBtaWxlcykgY29uc3Q7CiAgICBmbG9hdCBrbm90c1RvTVMoZmxvYXQg a25vdHMpIGNvbnN0OwogICAgZmxvYXQga25vdHNUb0tNKGZsb2F0IGtub3RzKSBjb25zdDsKCn07 CgojZW5kaWYK --Boundary-00=_na3SHNCbYc3sMLT Content-Type: application/x-desktop; name="ion-windfinder.desktop" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ion-windfinder.desktop W0Rlc2t0b3AgRW50cnldCk5hbWU9V2luZEZpbmRlcgpDb21tZW50PVhNTCBEYXRhIGZyb20gV2lu ZEZpbmRlcgpDb21tZW50W25sXT1YTUwtZ2VnZXZlbnMgdmFuIFdpbmRGaW5kZXIKWC1LREUtU2Vy dmljZVR5cGVzPVdlYXRoZXJFbmdpbmUvSW9uClR5cGU9U2VydmljZQpJY29uPW5vbmV5ZXQKWC1L REUtTGlicmFyeT1pb25fd2luZGZpbmRlcgpYLUlvbk5hbWU9d2luZGZpbmRlcgo= --Boundary-00=_na3SHNCbYc3sMLT Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Panel-devel mailing list Panel-devel@kde.org https://mail.kde.org/mailman/listinfo/panel-devel --Boundary-00=_na3SHNCbYc3sMLT--