From owner-freebsd-bluetooth@FreeBSD.ORG Tue Dec 1 23:24:18 2009 Return-Path: Delivered-To: freebsd-bluetooth@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C89F51065703 for ; Tue, 1 Dec 2009 23:24:18 +0000 (UTC) (envelope-from maksim.yevmenkin@gmail.com) Received: from mail-px0-f190.google.com (mail-px0-f190.google.com [209.85.216.190]) by mx1.freebsd.org (Postfix) with ESMTP id 9A77C8FC17 for ; Tue, 1 Dec 2009 23:24:18 +0000 (UTC) Received: by pxi28 with SMTP id 28so4078880pxi.7 for ; Tue, 01 Dec 2009 15:24:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=xStVCasxOJw8wtVoAf5FXhCFni5Nh7Y79bzMlYdp0WU=; b=fFws12yaJvyD5pabDmTrv2mhHZswf2hFY5Pu+xjt5g4PHLQKntjQg8AOcx7XWgt5it HoNFBSqNP9B2q0LkxZyBmZSga4Vz6H4WggMZQppphutya/YMTEjBYuz1K/lKztHAV2Tn ZqV3+Q5Qz1I61Qo4QA6DUayfp1l2c+Xbroe1A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=rWrIhywM7TfxoCVKj5Y1N5z0/bBPAyYEIU6ot2nGUyBsPGr7uiVSgtRrZmIZpwL/D6 Ec1lJw/Af68YXVoPd5b7UApZFHotCXHgbr1cgilrQ4o2X6b0IiQyaPUJD9bh1nM3wahM oYleKkGzDtlWr/b81xMpvBystEkJKt6hM7kWQ= MIME-Version: 1.0 Received: by 10.115.84.40 with SMTP id m40mr12269817wal.192.1259709858175; Tue, 01 Dec 2009 15:24:18 -0800 (PST) In-Reply-To: <1259694948.961003.27487.nullmailer@galant.ukfsn.org> References: <20091201125054.44a00147@zelz27> <1259694948.961003.27487.nullmailer@galant.ukfsn.org> Date: Tue, 1 Dec 2009 15:24:18 -0800 Message-ID: From: Maksim Yevmenkin To: Iain Hibbert , Matthias Drochner Content-Type: multipart/mixed; boundary=0016e64ccb9c9ddf0b0479b30e8b Cc: freebsd-bluetooth@freebsd.org Subject: Re: patch to make obexapp work with BSD iconv(3) X-BeenThere: freebsd-bluetooth@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Using Bluetooth in FreeBSD environments List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Dec 2009 23:24:18 -0000 --0016e64ccb9c9ddf0b0479b30e8b Content-Type: text/plain; charset=ISO-8859-1 On Tue, Dec 1, 2009 at 11:15 AM, Iain Hibbert wrote: > On Tue, 1 Dec 2009, Matthias Drochner wrote: > >> iconv_open(3), this is more robust than trying to interpret >> the locale string > > btw nl_langinfo(3) is defined to always return a valid pointer, so the > > if (locale == NULL) > return (-1); > > is not required.. > > also, the locale variable can be private to obexapp_util_locale_init() as > it is not used elsewhere ok, so, combined patch would look something like the attached. could you please give it a try and see if it still works? thanks, max --0016e64ccb9c9ddf0b0479b30e8b Content-Type: text/plain; charset=US-ASCII; name="obexapp.patch.txt" Content-Disposition: attachment; filename="obexapp.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g2papss40 SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3ZzL3BvcnRz L29iZXhhcHAvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKZGlmZiAtdSAtcjEu MTEgTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTIzIEFwciAyMDA3IDE4OjI5OjE4IC0wMDAwCTEuMTEK KysrIE1ha2VmaWxlCTEgRGVjIDIwMDkgMjA6MDA6MTkgLTAwMDAKQEAgLTE0LDggKzE0LDcgQEAK IERFQlVHX0ZMQUdTPQktZwogCiBDRkxBR1MrPQktSS91c3IvbG9jYWwvaW5jbHVkZSBcCi0JCS1J L3Vzci9sb2NhbC9pbmNsdWRlL29wZW5vYmV4IFwKLQkJLWZuby1zdHJpY3QtYWxpYXNpbmcKKwkJ LUkvdXNyL2xvY2FsL2luY2x1ZGUvb3Blbm9iZXgKIAogRFBBREQ9CQkke0xJQkJMVUVUT09USH0g JHtMSUJTRFB9ICR7TElCQlNEWE1MfSAke0xJQlJFQURMSU5FfQogTERBREQ9CQktTC91c3IvbGli IC1ML3Vzci9sb2NhbC9saWIgXApJbmRleDogY2xpZW50LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L3Vzci9sb2NhbC9jdnMvcG9ydHMvb2JleGFwcC9jbGllbnQuYyx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4xOApkaWZmIC11IC1yMS4xOCBjbGllbnQuYwotLS0gY2xpZW50LmMJOSBBcHIgMjAwOSAy MzoxNjozMSAtMDAwMAkxLjE4CisrKyBjbGllbnQuYwkxIERlYyAyMDA5IDE5OjQwOjMyIC0wMDAw CkBAIC0xMjE5LDkgKzEyMTksOCBAQAogCQlpbnQgb2JleF9yc3ApCiB7CiAJY29udGV4dF9wCQkg Y29udGV4dCA9IChjb250ZXh0X3ApIE9CRVhfR2V0VXNlckRhdGEoaGFuZGxlKTsKLQlvYmV4X2Nv bm5lY3RfaGRyX3QgICAgICAqaGRyID0gTlVMTDsKIAlvYmV4X2hlYWRlcmRhdGFfdAkgaHY7Ci0J dWludDhfdAkJCSBoaTsKKwl1aW50OF90CQkJIGhpLCAqZGF0YSA9IE5VTEw7CiAJdWludDMyX3QJ CSBobGVuOwogCiAJbG9nX2RlYnVnKCIlcygpOiBDb25uZWN0IGNvbXBsZXRlZCwgcmVzcG9uc2Ug JSN4IiwgX19mdW5jX18sIG9iZXhfcnNwKTsKQEAgLTEyMzIsMTAgKzEyMzEsMTIgQEAKIAlpZiAo b2JleF9yc3AgIT0gT0JFWF9SU1BfU1VDQ0VTUykKIAkJcmV0dXJuIChvYmV4X3JzcCk7CiAKLQlp ZiAoT0JFWF9PYmplY3RHZXROb25IZHJEYXRhKG9iamVjdCwgKHVpbnQ4X3QgKiopICZoZHIpID09 IHNpemVvZigqaGRyKSkKKwlpZiAoT0JFWF9PYmplY3RHZXROb25IZHJEYXRhKG9iamVjdCwgJmRh dGEpID09IHNpemVvZihvYmV4X2Nvbm5lY3RfaGRyX3QpKQogCQlsb2dfZGVidWcoIiVzKCk6IE9C RVggY29ubmVjdCBoZWFkZXI6ICIgXAotCQkJInZlcnNpb249JSN4LCBmbGFncz0lI3gsIG10dT0l ZCIsIF9fZnVuY19fLCAKLQkJCWhkci0+dmVyc2lvbiwgaGRyLT5mbGFncywgbnRvaHMoaGRyLT5t dHUpKTsKKwkJCSJ2ZXJzaW9uPSUjeCwgZmxhZ3M9JSN4LCBtdHU9JWQiLCBfX2Z1bmNfXywKKwkJ CSgob2JleF9jb25uZWN0X2hkcl90ICopIGRhdGEpLT52ZXJzaW9uLAorCQkJKChvYmV4X2Nvbm5l Y3RfaGRyX3QgKikgZGF0YSktPmZsYWdzLAorCQkJbnRvaHMoKChvYmV4X2Nvbm5lY3RfaGRyX3Qg KikgZGF0YSktPm10dSkpOwogCWVsc2UKIAkJbG9nX2VycigiJXMoKTogSW52YWxpZCBPQkVYIGNv bm5lY3QgaGVhZGVyPyEiLCBfX2Z1bmNfXyk7CiAKSW5kZXg6IHNlcnZlci5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC91c3IvbG9jYWwvY3ZzL3BvcnRzL29iZXhhcHAvc2VydmVyLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtdSAtcjEuMTIgc2VydmVyLmMKLS0tIHNlcnZlci5jCTIw IEF1ZyAyMDA5IDIxOjU3OjE4IC0wMDAwCTEuMTIKKysrIHNlcnZlci5jCTEgRGVjIDIwMDkgMjA6 MDQ6MzMgLTAwMDAKQEAgLTQ3MSwxOSArNDcxLDIwIEBACiBvYmV4YXBwX3NlcnZlcl9yZXF1ZXN0 X2Nvbm5lY3Qob2JleF90ICpoYW5kbGUsIG9iZXhfb2JqZWN0X3QgKm9iamVjdCwKIAkJX191bnVz ZWQgaW50IG9iZXhfcnNwKQogewotCW9iZXhfY29ubmVjdF9oZHJfdCAgICAgICpoZHIgPSBOVUxM OwogCW9iZXhfaGVhZGVyZGF0YV90CSBodjsKLQl1aW50OF90CQkJIGhpOworCXVpbnQ4X3QJCQkg aGksICpkYXRhID0gTlVMTDsKIAl1aW50MzJfdAkJIGhsZW47CiAJdWludDhfdCBjb25zdAkJKnRh cmdldCA9IE5VTEw7CiAJaW50CQkJIHRhcmdldF9sZW4gPSAwOwogCiAJbG9nX2RlYnVnKCIlcygp IiwgX19mdW5jX18pOwogCi0JaWYgKE9CRVhfT2JqZWN0R2V0Tm9uSGRyRGF0YShvYmplY3QsICh1 aW50OF90ICoqKSAmaGRyKSA9PSBzaXplb2YoKmhkcikpCisJaWYgKE9CRVhfT2JqZWN0R2V0Tm9u SGRyRGF0YShvYmplY3QsICZkYXRhKSA9PSBzaXplb2Yob2JleF9jb25uZWN0X2hkcl90KSkKIAkJ bG9nX2RlYnVnKCIlcygpOiBPQkVYIGNvbm5lY3QgaGVhZGVyOiB2ZXJzaW9uPSUjeCwgIiBcCi0J CQkiZmxhZ3M9JSN4LCBtdHU9JWQiLCBfX2Z1bmNfXywgaGRyLT52ZXJzaW9uLCBoZHItPmZsYWdz LAotCQkJbnRvaHMoaGRyLT5tdHUpKTsKKwkJCSJmbGFncz0lI3gsIG10dT0lZCIsIF9fZnVuY19f LAorCQkJKChvYmV4X2Nvbm5lY3RfaGRyX3QgKikgZGF0YSktPnZlcnNpb24sCisJCQkoKG9iZXhf Y29ubmVjdF9oZHJfdCAqKSBkYXRhKS0+ZmxhZ3MsCisJCQludG9ocygoKG9iZXhfY29ubmVjdF9o ZHJfdCAqKSBkYXRhKS0+bXR1KSk7CiAJZWxzZQogCQlsb2dfZXJyKCIlcygpOiBJbnZhbGlkIE9C RVggY29ubmVjdCBoZWFkZXI/ISIsIF9fZnVuY19fKTsKIApAQCAtMTA4Niw5ICsxMDg3LDggQEAK IAkJX191bnVzZWQgaW50IG9iZXhfcnNwKQogewogCWNvbnRleHRfcAkJIGNvbnRleHQgPSAoY29u dGV4dF9wKSBPQkVYX0dldFVzZXJEYXRhKGhhbmRsZSk7Ci0Jb2JleF9zZXRwYXRoX2hkcl90CSpo ZHIgPSBOVUxMOwogCW9iZXhfaGVhZGVyZGF0YV90CSBodjsKLQl1aW50OF90CQkJIGhpOworCXVp bnQ4X3QJCQkgaGksIGZsYWdzID0gMHhmZiwgKmRhdGEgPSBOVUxMOwogCXVpbnQzMl90CQkgaGxl bjsKIAlpbnQJCQkgZ290X25hbWUgPSAwOwogCkBAIC0xMDk2LDEwICsxMDk2LDEyIEBACiAKIAlj b250ZXh0LT5maWxlWzBdID0gJ1wwJzsKIAotCWlmIChPQkVYX09iamVjdEdldE5vbkhkckRhdGEo b2JqZWN0LCAodWludDhfdCAqKikgJmhkcikgPT0gc2l6ZW9mKCpoZHIpKQotICAgICAgICAgICAg ICAgIGxvZ19kZWJ1ZygiJXMoKTogT0JFWCBzZXRwYXRoIGhlYWRlcjogZmxhZ3M9JSN4LCBjb25z dGFudHM9JWQiLAotCQkJX19mdW5jX18sIGhkci0+ZmxhZ3MsIGhkci0+Y29uc3RhbnRzKTsKLQll bHNlCisJaWYgKE9CRVhfT2JqZWN0R2V0Tm9uSGRyRGF0YShvYmplY3QsICZkYXRhKSA9PSBzaXpl b2Yob2JleF9zZXRwYXRoX2hkcl90KSkgeworCQlmbGFncyA9ICgob2JleF9zZXRwYXRoX2hkcl90 ICopIGRhdGEpLT5mbGFnczsKKworCQlsb2dfZGVidWcoIiVzKCk6IE9CRVggc2V0cGF0aCBoZWFk ZXI6IGZsYWdzPSUjeCwgY29uc3RhbnRzPSVkIiwKKwkJCV9fZnVuY19fLCBmbGFncywgKChvYmV4 X3NldHBhdGhfaGRyX3QgKikgZGF0YSktPmNvbnN0YW50cyk7CisJfSBlbHNlCiAJCWxvZ19lcnIo IiVzKCk6IEludmFsaWQgT0JFWCBzZXRwYXRoIGhlYWRlcj8hIiwgX19mdW5jX18pOwogCiAJd2hp bGUgKE9CRVhfT2JqZWN0R2V0TmV4dEhlYWRlcihoYW5kbGUsIG9iamVjdCwgJmhpLCAmaHYsICZo bGVuKSkgewpAQCAtMTE1MSw5ICsxMTUzLDkgQEAKIAkJICogZGlyZWN0b3J5KSBtZWFucyAiY2Qg Li4iLiBFdmVyeXRoaW5nIGVsc2UgaXMgZm9yYmlkZGVuLgogCQkgKi8KIAkKLQkJaWYgKGhkci0+ ZmxhZ3MgIT0gMHgzKSB7CisJCWlmIChmbGFncyAhPSAweDMpIHsKIAkJCWxvZ19lcnIoIiVzKCk6 IEludmFsaWQgZmxhZ3MgZm9yICdjZCAuLicsIGZsYWdzPSUjeCIsCi0JCQkJX19mdW5jX18sIGhk ci0+ZmxhZ3MpOworCQkJCV9fZnVuY19fLCBmbGFncyk7CiAJCQkJCiAJCQlyZXR1cm4gKE9CRVhB UFBfUEFDS19SU1BfQ09ERVMoT0JFWF9SU1BfRk9SQklEREVOLAogCQkJCQkJCU9CRVhfUlNQX0ZP UkJJRERFTikpOwpAQCAtMTE2OSw5ICsxMTcxLDkgQEAKIAkJICogJ2NkIC8nLiBFdmVyeXRoaW5n IGVsc2UgaXMgZm9yYmlkZGVuCiAJCSAqLwogCi0JCWlmIChoZHItPmZsYWdzICE9IDB4Mikgewor CQlpZiAoZmxhZ3MgIT0gMHgyKSB7CiAJCQlsb2dfZXJyKCIlcygpOiBJbnZhbGlkIGZsYWdzIGZv ciAnY2QgLycsIGZsYWdzPSUjeCIsCi0JCQkJX19mdW5jX18sIGhkci0+ZmxhZ3MpOworCQkJCV9f ZnVuY19fLCBmbGFncyk7CiAJCQkJCiAJCQlyZXR1cm4gKE9CRVhBUFBfUEFDS19SU1BfQ09ERVMo T0JFWF9SU1BfRk9SQklEREVOLAogCQkJCQkJCU9CRVhfUlNQX0ZPUkJJRERFTikpOwpAQCAtMTE4 MCw3ICsxMTgyLDcgQEAKIAkJc3RybGNweShjb250ZXh0LT5maWxlLCBjb250ZXh0LT5yb290LCBQ QVRIX01BWCk7CiAJfQogCi0JaWYgKGhkci0+ZmxhZ3MgPT0gMCkgeworCWlmIChmbGFncyA9PSAw KSB7CiAJCWlmIChta2Rpcihjb250ZXh0LT5maWxlLCAwNzU1KSA8IDAgJiYgZXJybm8gIT0gRUVY SVNUKSB7CiAJCQlsb2dfZXJyKCIlcygpOiBta2RpciglcykgZmFpbGVkLiAlcyAoJWQpIiwKIAkJ CQlfX2Z1bmNfXywgY29udGV4dC0+ZmlsZSwgCkluZGV4OiB1dGlsLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL3Vzci9sb2NhbC9jdnMvcG9ydHMvb2JleGFwcC91dGlsLmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMTUKZGlmZiAtdSAtcjEuMTUgdXRpbC5jCi0tLSB1dGlsLmMJMjAgQXVnIDIwMDkg MjE6NTc6MTggLTAwMDAJMS4xNQorKysgdXRpbC5jCTEgRGVjIDIwMDkgMTk6NTg6NTMgLTAwMDAK QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPGVycm5vLmg+ CiAjaW5jbHVkZSA8aWNvbnYuaD4KKyNpbmNsdWRlIDxsYW5naW5mby5oPgogI2luY2x1ZGUgPGxp Ymdlbi5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPGxvY2FsZS5oPgpAQCAtNTYs NyArNTcsNiBAQAogICogSW5pdCBsb2NhbGUKICAqLwogCi1zdGF0aWMgY2hhciBjb25zdAkqbG9j YWxlID0gTlVMTDsKIHN0YXRpYyBpbnQzMl90CQkgdXRmMTYgPSAwOwogc3RhdGljIGljb252X3QJ CSB1dGY4MmxvY2FsZSA9IChpY29udl90KSAtMTsKIHN0YXRpYyBpY29udl90CQkgbG9jYWxlMnV0 ZjggPSAoaWNvbnZfdCkgLTE7CkBAIC02NiwyNSArNjYsMTAgQEAKIGludAogb2JleGFwcF91dGls X2xvY2FsZV9pbml0KHZvaWQpCiB7Ci0JaW50CW9uZSA9IDE7CisJY2hhciBjb25zdAkqbG9jYWxl OwogCi0JbG9jYWxlID0gc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7Ci0JaWYgKGxvY2FsZSA9PSBO VUxMKQotCQlyZXR1cm4gKC0xKTsKLQotCWlmIChzdHJjbXAobG9jYWxlLCAiQVNDSUkiKSA9PSAw IHx8Ci0JICAgIHN0cmNtcChsb2NhbGUsICJDIikgPT0gMCB8fAotCSAgICBzdHJjbXAobG9jYWxl LCAiUE9TSVgiKSA9PSAwIHx8Ci0JICAgIHN0cmNtcChsb2NhbGUsICJVUy1BU0NJSSIpID09IDAp Ci0JCWxvY2FsZSA9ICJlbl9VUy5VUy1BU0NJSSI7Ci0KLQlsb2NhbGUgPSBzdHJjaHIobG9jYWxl LCAnLicpOwotCWlmIChsb2NhbGUgPT0gTlVMTCkKLQkJcmV0dXJuICgtMSk7Ci0KLQlsb2NhbGUg Kys7Ci0JaWYgKGxvY2FsZVswXSA9PSAnXDAnKQotCQlyZXR1cm4gKC0xKTsKKwlzZXRsb2NhbGUo TENfQ1RZUEUsICIiKTsKKwlsb2NhbGUgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKIAogCXV0ZjE2 ID0gKHN0cnN0cihsb2NhbGUsICJVVEYtMTYiKSAhPSBOVUxMKT8gMSA6IDA7CiAKQEAgLTk0LDcg Kzc5LDYgQEAKIAkJcmV0dXJuICgtMSk7CiAKIAlpY29udih1dGY4MmxvY2FsZSwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCk7Ci0JaWNvbnZjdGwodXRmODJsb2NhbGUsIElDT05WX1NFVF9ESVNDQVJE X0lMU0VRLCAmb25lKTsKIAogCS8qIGN1cnJlbnQgbG9jYWxlIC0+IFVURi04ICovCiAJbG9jYWxl MnV0ZjggPSBpY29udl9vcGVuKCJVVEYtOCIsIGxvY2FsZSk7CkBAIC0xMDQsNyArODgsNiBAQAog CX0KIAogCWljb252KGxvY2FsZTJ1dGY4LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKLQlpY29u dmN0bChsb2NhbGUydXRmOCwgSUNPTlZfU0VUX0RJU0NBUkRfSUxTRVEsICZvbmUpOwogCiAJLyog VVRGLTE2QkUgLT4gY3VycmVudCBsb2NhbGUgKi8KIAl1dGYxNmJlMmxvY2FsZSA9IGljb252X29w ZW4obG9jYWxlLCAiVVRGLTE2QkUiKTsKQEAgLTExNCw3ICs5Nyw2IEBACiAJfQogCiAJaWNvbnYo dXRmMTZiZTJsb2NhbGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwotCWljb252Y3RsKHV0ZjE2 YmUybG9jYWxlLCBJQ09OVl9TRVRfRElTQ0FSRF9JTFNFUSwgJm9uZSk7CiAKIAkvKiBjdXJyZW50 IGxvY2FsZSAtPiBVVEYtMTZCRSAqLwogCWxvY2FsZTJ1dGYxNmJlID0gaWNvbnZfb3BlbigiVVRG LTE2QkUiLCBsb2NhbGUpOwpAQCAtMTI0LDcgKzEwNiw2IEBACiAJfQogCiAJaWNvbnYobG9jYWxl MnV0ZjE2YmUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwotCWljb252Y3RsKGxvY2FsZTJ1dGYx NmJlLCBJQ09OVl9TRVRfRElTQ0FSRF9JTFNFUSwgJm9uZSk7CiAKIAlyZXR1cm4gKDApOwogfQo= --0016e64ccb9c9ddf0b0479b30e8b--