<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>31690</bug_id>
          
          <creation_ts>2009-11-19 14:52:32 -0800</creation_ts>
          <short_desc>Make SocketStreamHandleCFNet work on Windows</short_desc>
          <delta_ts>2009-11-19 16:55:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>dimich</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>165100</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-19 14:52:32 -0800</bug_when>
    <thetext>We should not use main thread&apos;s CFRunLoop, because it doesn&apos;t have one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165113</commentid>
    <comment_count>1</comment_count>
      <attachid>43529</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-19 15:14:13 -0800</bug_when>
    <thetext>Created attachment 43529
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165115</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-19 15:15:23 -0800</bug_when>
    <thetext>CC&apos;ing Dave and Dmitry, because they dealt with callOnMainThreadAndWait before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165142</commentid>
    <comment_count>3</comment_count>
      <attachid>43529</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-19 16:26:54 -0800</bug_when>
    <thetext>Comment on attachment 43529
proposed patch

&gt; +    bool needToSchedule = false;

Stray unused local variable.

&gt; +// Blocks the thread until the call finishes on the main thread. This can easily cause deadlocks.
&gt; +void callOnMainThreadAndWait(MainThreadFunction*, void* context);

I would reword the second sentence as &quot;Misusing this can easily cause deadlocks.&quot;

&gt; +    // Must add a source to the run loop to prevent CFRunLoopRun() from exiting

Need a period.

&gt; +    CFRunLoopSourceContext ctxt = {0, (void*)1 /*must be non-NULL*/, 0, 0, 0, 0, 0, 0, 0, emptyPerform};

Can&apos;t we use something that&apos;s actually a pointer? We could use a local variable to name it. Like this, for example:

    void* arbitraryNonZeroPointer = loaderRL;

&gt; +    CFRunLoopAddSource(loaderRL, bogusSource,kCFRunLoopDefaultMode);

Missing a space after the comma here.

&gt; +        while (loaderRL == 0) {
&gt; +            // FIXME: Sleep 10? that can&apos;t be right...
&gt; +            Sleep(10);
&gt; +        }

We would normally use !loaderRL, right?

How about calling the global variable loaderRunLoopObject instead of loaderRL?

I just realized I&apos;m reviewing the moved code. Oops.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165151</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-19 16:55:00 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/51222&gt;. Addressed most of the above comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43529</attachid>
            <date>2009-11-19 15:14:13 -0800</date>
            <delta_ts>2009-11-19 16:26:54 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>SocketThread.txt</filename>
            <type>text/plain</type>
            <size>23825</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjA2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMTEtMTkgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMxNjkwCisgICAgICAgIE1ha2UgU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQgd29yayBvbiBX
aW5kb3dzCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdURjo6RnVuY3Rpb25XaXRoQ29udGV4dDo6RnVuY3Rpb25XaXRoQ29udGV4dCk6CisgICAg
ICAgIChXVEY6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV1RG
OjpjYWxsT25NYWluVGhyZWFkQW5kV2FpdCk6CisgICAgICAgICogd3RmL01haW5UaHJlYWQuaDoK
KyAgICAgICAgUmUtYWRkIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KCksIHdoaWNoIHdhcyByZW1v
dmVkIGluIGJ1ZyAyMzkyNi4KKwogMjAwOS0xMS0xOSAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4x
LmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYJKHJldmlzaW9u
IDUxMTg3KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QCBFWFBPUlRTCiAgICAgP2NhbGN1bGF0ZWRGdW5jdGlvbk5hbWVARGVidWdnZXJDYWxsRnJhbWVA
SlNDQEBRQkU/QVZVU3RyaW5nQDJAWFoKICAgICA/Y2FsbEBKU0NAQFlBP0FWSlNWYWx1ZUAxQFBB
VkV4ZWNTdGF0ZUAxQFYyMUBXNENhbGxUeXBlQDFAQUJUQ2FsbERhdGFAMUAxQUJWQXJnTGlzdEAx
QEBaCiAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKKyAgICA/Y2Fs
bE9uTWFpblRocmVhZEFuZFdhaXRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/Y2hhbmdlUHJv
dG90eXBlVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0
dXJlQEpTQ0BAQFdURkBAUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9jaGVja1NhbWVJZGVudGlm
aWVyVGFibGVASWRlbnRpZmllckBKU0NAQENBWFBBVkV4ZWNTdGF0ZUAyQFBBVVJlcEBVU3RyaW5n
QDJAQFoKICAgICA/Y2hlY2tTYW1lSWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQ
QVZKU0dsb2JhbERhdGFAMkBQQVVSZXBAVVN0cmluZ0AyQEBaCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01h
aW5UaHJlYWQuY3BwCShyZXZpc2lvbiA1MTE4NykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWlu
VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEyIEBAIG5hbWVzcGFjZSBX
VEYgewogc3RydWN0IEZ1bmN0aW9uV2l0aENvbnRleHQgewogICAgIE1haW5UaHJlYWRGdW5jdGlv
biogZnVuY3Rpb247CiAgICAgdm9pZCogY29udGV4dDsKKyAgICBUaHJlYWRDb25kaXRpb24qIHN5
bmNGbGFnOwogCi0gICAgRnVuY3Rpb25XaXRoQ29udGV4dChNYWluVGhyZWFkRnVuY3Rpb24qIGZ1
bmN0aW9uID0gMCwgdm9pZCogY29udGV4dCA9IDApCisgICAgRnVuY3Rpb25XaXRoQ29udGV4dChN
YWluVGhyZWFkRnVuY3Rpb24qIGZ1bmN0aW9uID0gMCwgdm9pZCogY29udGV4dCA9IDAsIFRocmVh
ZENvbmRpdGlvbiogc3luY0ZsYWcgPSAwKQogICAgICAgICA6IGZ1bmN0aW9uKGZ1bmN0aW9uKQog
ICAgICAgICAsIGNvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBzeW5jRmxhZyhzeW5jRmxhZykK
ICAgICB7IAogICAgIH0KIH07CkBAIC05Miw2ICs5NCw4IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlv
bnNGcm9tTWFpblRocmVhZCgpCiAgICAgICAgIH0KIAogICAgICAgICBpbnZvY2F0aW9uLmZ1bmN0
aW9uKGludm9jYXRpb24uY29udGV4dCk7CisgICAgICAgIGlmIChpbnZvY2F0aW9uLnN5bmNGbGFn
KQorICAgICAgICAgICAgaW52b2NhdGlvbi5zeW5jRmxhZy0+c2lnbmFsKCk7CiAKICAgICAgICAg
Ly8gSWYgd2UgYXJlIHJ1bm5pbmcgYWNjdW11bGF0ZWQgZnVuY3Rpb25zIGZvciB0b28gbG9uZyBz
byBVSSBtYXkgYmVjb21lIHVucmVzcG9uc2l2ZSwgd2UgbmVlZCB0bwogICAgICAgICAvLyB5aWVs
ZCBzbyB0aGUgdXNlciBpbnB1dCBjYW4gYmUgcHJvY2Vzc2VkLiBPdGhlcndpc2UgdXNlciBtYXkg
bm90IGJlIGFibGUgdG8gZXZlbiBjbG9zZSB0aGUgd2luZG93LgpAQCAtMTE3LDYgKzEyMSwyNSBA
QCB2b2lkIGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uCiAgICAgICAgIHNjaGVk
dWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0KIAordm9pZCBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rpb24qIGZ1bmN0aW9uLCB2b2lkKiBjb250ZXh0
KQoreworICAgIEFTU0VSVChmdW5jdGlvbik7CisKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsK
KyAgICAgICAgZnVuY3Rpb24oY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBUaHJlYWRDb25kaXRpb24gc3luY0ZsYWc7CisgICAgTXV0ZXgmIGZ1bmN0aW9uUXVldWVNdXRl
eCA9IG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgoKTsKKyAgICBNdXRleExvY2tlciBsb2Nr
ZXIoZnVuY3Rpb25RdWV1ZU11dGV4KTsKKyAgICBmdW5jdGlvblF1ZXVlKCkuYXBwZW5kKEZ1bmN0
aW9uV2l0aENvbnRleHQoZnVuY3Rpb24sIGNvbnRleHQsICZzeW5jRmxhZykpOworICAgIGJvb2wg
bmVlZFRvU2NoZWR1bGUgPSBmYWxzZTsKKyAgICBpZiAoZnVuY3Rpb25RdWV1ZSgpLnNpemUoKSA9
PSAxKQorICAgICAgICBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCk7Cisg
ICAgc3luY0ZsYWcud2FpdChmdW5jdGlvblF1ZXVlTXV0ZXgpOworfQorCiB2b2lkIHNldE1haW5U
aHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuaAkocmV2aXNpb24gNTExODcpCisr
KyBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw5IEBAIHR5cGVkZWYgdm9pZCBNYWluVGhyZWFkRnVuY3Rpb24odm9pZCopOwogCiB2b2lk
IGNhbGxPbk1haW5UaHJlYWQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CiAK
Ky8vIEJsb2NrcyB0aGUgdGhyZWFkIHVudGlsIHRoZSBjYWxsIGZpbmlzaGVzIG9uIHRoZSBtYWlu
IHRocmVhZC4gVGhpcyBjYW4gZWFzaWx5IGNhdXNlIGRlYWRsb2Nrcy4KK3ZvaWQgY2FsbE9uTWFp
blRocmVhZEFuZFdhaXQoTWFpblRocmVhZEZ1bmN0aW9uKiwgdm9pZCogY29udGV4dCk7CisKIHZv
aWQgc2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCk7CiAKIC8vIE11c3Qg
YmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkIChEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRv
IHRoaXMgcnVsZSkuCkBAIC01Miw2ICs1NSw3IEBAIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9t
TWFpblRocmVhZCgpOwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Y2FsbE9uTWFp
blRocmVhZDsKK3VzaW5nIFdURjo6Y2FsbE9uTWFpblRocmVhZEFuZFdhaXQ7CiB1c2luZyBXVEY6
OnNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQ7CiAKICNlbmRpZiAvLyBNYWluVGhyZWFkX2gK
SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTIwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMTEtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNjkwCisgICAgICAgIE1h
a2UgU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQgd29yayBvbiBXaW5kb3dzCisKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogQWRkZWQgTG9hZGVyUnVuTG9vcENGLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOiBSZW1vdmVkIGxvYWRl
clJ1bkxvb3AoKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9v
cENGLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbXB0eVBlcmZvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6cnVuTG9hZGVyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1
bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmg6
IEFkZGVkLgorICAgICAgICBNb3ZlZCB0aGUgcnVuIGxvb3AgdGhhdCB3ZSB1c2UgZm9yIENGTmV0
d29yayBmcm9tIFJlc291cmNlSGFuZGxlIHRvIGl0cyBvd24gZmlsZSwgYmVjYXVzZQorICAgICAg
ICBpdCdzIG5lZWRlZCBmb3IgbW9yZSB0aGFuIGp1c3QgcmVzb3VyY2UgbG9hZGluZy4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6IFVzZSBs
b2FkZXJSdW5Mb29wKCkgZnJvbSBpdHMgbmV3IGxvY2F0aW9uLgorCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHA6IChXZWJDb3JlOjpETlNSZXNvbHZlUXVldWU6OnJl
c29sdmUpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlLmg6IEFkZGVkIHN0YXRpYyBjYWxsYmFja3MgZm9yIGZvcndhcmRpbmcgZXZlbnRz
IHRvCisgICAgICAgIG1haW4gdGhyZWFkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUpOiBVc2UgbG9hZGVyUnVuTG9vcCgpIG9uIFdp
bmRvd3MgaW5zdGVhZCBvZgorICAgICAgICBpbm9wZXJhYmxlIG1haW4gcnVuIGxvb3AuCisKKyAg
ICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbzo6TWFpblRocmVhZEV2
ZW50Q2FsbGJhY2tJbmZvKTogCisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6
OnJlYWRTdHJlYW1DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU6OndyaXRlU3RyZWFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlOjpyZWFkU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsYmFja01haW5UaHJlYWQpOgorICAg
ICAgICBGb3J3YXJkIHN0cmVhbSBldmVudHMgdG8gbWFpbiB0aHJlYWQgb24gV2luZG93cy4KKwog
MjAwOS0xMS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhdmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHJldmlzaW9uIDUxMTg3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzc3OSw2ICs3Nzc5LDEwIEBACiAJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCINCiAJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNJbnNwZWN0b3JCYWNrZW5kLmNwcCINCisJ
CQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0K
IAkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQpAQCAtNzgyOSwxMCArNzgzMyw2IEBACiAJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTSW5zcGVjdG9yQmFja2VuZC5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJ
PEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSW5zcGVjdG9yQmFja2VuZC5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTI0Mjg5LDYgKzI0Mjg5LDE0IEBACiAJCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcY2ZcTG9hZGVyUnVuTG9vcENGLmNwcCINCisJCQkJCQk+DQorCQkJ
CQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
bmV0d29ya1xjZlxMb2FkZXJSdW5Mb29wQ0YuaCINCisJCQkJCQk+DQorCQkJCQk8L0ZpbGU+DQor
CQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxS
ZXNvdXJjZUVycm9yLmgiDQogCQkJCQkJPg0KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAg
LTI1MTc0LDExICsyNTE4MiwxMSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxUZXh0Qm91bmRhcmllcy5oIg0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFRleHRCb3VuZGFyaWVzLmNwcCIN
CiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVx0ZXh0XFRleHRCb3VuZGFyaWVzLmNwcCINCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cdGV4dFxUZXh0Qm91bmRhcmllcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQogCQkJCTxGaWxlDQpAQCAtMzM3OTUsMTkgKzMzODAzLDE5IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSVNPRGF0ZVRpbWUuY3Bw
Ig0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSW1hZ2VEYXRhLmNwcCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSVNPRGF0ZVRp
bWUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEltYWdlRGF0YS5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZURh
dGEuY3BwIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSVNPRGF0ZVRpbWUuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJ
bWFnZURhdGEuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXElTT0RhdGVUaW1lLmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gNTExODcpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEz
OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlKFNjaGVkdWxlUGFpciopOwogICAgIHZv
aWQgdW5zY2hlZHVsZShTY2hlZHVsZVBhaXIqKTsKICNlbGlmIFVTRShDRk5FVFdPUkspCi0gICAg
c3RhdGljIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCk7CiAgICAgQ0ZVUkxDb25uZWN0aW9u
UmVmIGNvbm5lY3Rpb24oKSBjb25zdDsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgcmVsZWFzZUNv
bm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIHN0YXRpYyB2b2lkIHNldEhvc3RBbGxvd3NBbnlI
VFRQU0NlcnRpZmljYXRlKGNvbnN0IFN0cmluZyYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCShyZXZpc2lvbiA1MTE4NykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBQTEFURk9STShXSU4pCi0j
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIgLy8gZm9yIGxvYWRlclJ1bkxvb3AoKQorI2luY2x1
ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgogI2VuZGlmCiAKICNpZmRlZiBCVUlMRElOR19PTl9USUdF
UgpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpyZXNvbHZlKGNvbnN0
IFN0cmkKICAgICBDRkhvc3RTY2hlZHVsZVdpdGhSdW5Mb29wKGhvc3QuZ2V0KCksIENGUnVuTG9v
cEdldE1haW4oKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbHNlCiAgICAgLy8gT24gV2lu
ZG93cywgd2UgcnVuIGEgc2VwYXJhdGUgdGhyZWFkIHdpdGggQ0ZSdW5Mb29wLCB3aGljaCBpcyB3
aGVyZSBjbGllbnRDYWxsYmFjayB3aWxsIGJlIGNhbGxlZC4KLSAgICBDRkhvc3RTY2hlZHVsZVdp
dGhSdW5Mb29wKGhvc3QuZ2V0KCksIFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZIb3N0U2NoZWR1bGVXaXRoUnVuTG9vcChob3N0
LmdldCgpLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAjZW5kaWYK
ICAgICBDRkhvc3RTdGFydEluZm9SZXNvbHV0aW9uKGhvc3QuZ2V0KCksIGtDRkhvc3RBZGRyZXNz
ZXMsIDApOwogICAgIGhvc3QucmVsZWFzZVJlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVh
c2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TG9hZGVyUnVuTG9vcENGLmgiCisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIENGUnVuTG9vcFJlZiBsb2FkZXJSTCA9IDA7CisKK3N0
YXRpYyB2b2lkIGVtcHR5UGVyZm9ybSh2b2lkKikgCit7Cit9CisKK3N0YXRpYyB2b2lkKiBydW5M
b2FkZXJUaHJlYWQodm9pZCopCit7CisgICAgbG9hZGVyUkwgPSBDRlJ1bkxvb3BHZXRDdXJyZW50
KCk7CisKKyAgICAvLyBNdXN0IGFkZCBhIHNvdXJjZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVu
dCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcKKyAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0
IGN0eHQgPSB7MCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1OVUxMKi8sIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIGVtcHR5UGVyZm9ybX07CisgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNl
ID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZjdHh0KTsKKyAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UobG9hZGVyUkwsIGJvZ3VzU291cmNlLGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisKKyAg
ICBDRlJ1bkxvb3BSdW4oKTsKKworICAgIHJldHVybiAwOworfQorCitDRlJ1bkxvb3BSZWYgbG9h
ZGVyUnVuTG9vcCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWxv
YWRlclJMKSB7CisgICAgICAgIGNyZWF0ZVRocmVhZChydW5Mb2FkZXJUaHJlYWQsIDAsICJXZWJD
b3JlOiBDRk5ldHdvcmsgTG9hZGVyIik7CisgICAgICAgIHdoaWxlIChsb2FkZXJSTCA9PSAwKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogU2xlZXAgMTA/IHRoYXQgY2FuJ3QgYmUgcmlnaHQuLi4K
KyAgICAgICAgICAgIFNsZWVwKDEwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbG9h
ZGVyUkw7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIG5hdGl2ZQoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJS
dW5Mb29wQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9h
ZGVyUnVuTG9vcENGLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTG9hZGVyUnVuTG9vcENGLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIExvYWRlclJ1bkxvb3BDRl9oCisjZGVmaW5lIExvYWRlclJ1bkxvb3BD
Rl9oCisKKyNpZiAhUExBVEZPUk0oV0lOKQorI2Vycm9yIFRoaXMgY29kZSBpcyBub3QgbmVlZGVk
IG9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIFdpbmRvd3MsIGJlY2F1c2UgbWFpbiB0aHJlYWQncyBD
RlJ1bkxvb3AgY2FuIGJlIHVzZWQuCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitD
RlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpOworCit9CisKKyNlbmRpZiAvLyBMb2FkZXJSdW5M
b29wX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiA1MTE4NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENG
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkBAIC0zMjIsMzcgKzMyMyw2IEBAIENGQXJyYXlS
ZWYgYXJyYXlGcm9tRm9ybURhdGEoY29uc3QgRm9ybUQKICAgICByZXR1cm4gYTsKIH0KIAotdm9p
ZCBlbXB0eVBlcmZvcm0odm9pZCogdW51c2VkKSAKLXsKLX0KLQotc3RhdGljIENGUnVuTG9vcFJl
ZiBsb2FkZXJSTCA9IDA7Ci12b2lkKiBydW5Mb2FkZXJUaHJlYWQodm9pZCAqdW51c2VkKQotewot
ICAgIGxvYWRlclJMID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotCi0gICAgLy8gTXVzdCBhZGQg
YSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBl
eGl0aW5nCi0gICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lkICopMSAv
Km11c3QgYmUgbm9uLU5VTEwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsK
LSAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVh
dGUoMCwgMCwgJmN0eHQpOwotICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSTCwgYm9ndXNT
b3VyY2Usa0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKLQotICAgIENGUnVuTG9vcFJ1bigpOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KLUNGUnVuTG9vcFJlZiBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVu
TG9vcCgpCi17Ci0gICAgaWYgKCFsb2FkZXJSTCkgewotICAgICAgICBjcmVhdGVUaHJlYWQocnVu
TG9hZGVyVGhyZWFkLCAwLCAiV2ViQ29yZTogQ0ZOZXR3b3JrIExvYWRlciIpOwotICAgICAgICB3
aGlsZSAobG9hZGVyUkwgPT0gMCkgewotICAgICAgICAgICAgLy8gRklYTUU6IHNsZWVwIDEwPyB0
aGF0IGNhbid0IGJlIHJpZ2h0Li4uCi0gICAgICAgICAgICBTbGVlcCgxMCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgcmV0dXJuIGxvYWRlclJMOwotfQotCiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVm
IG1ha2VGaW5hbFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIHNo
b3VsZENvbnRlbnRTbmlmZikKIHsKICAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG5ld1JlcXVl
c3QgPSBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBy
ZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgJKHJldmlzaW9uIDUxMTg3KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBzdHJlYW1JbmZvKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgcmVhZFN0cmVhbUNhbGxiYWNrKENGUmVhZFN0cmVhbVJlZiwgQ0ZT
dHJlYW1FdmVudFR5cGUsIHZvaWQqIGNsaWVudENhbGxCYWNrSW5mbyk7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHdyaXRlU3RyZWFtQ2FsbGJhY2soQ0ZXcml0ZVN0cmVhbVJlZiwgQ0ZTdHJlYW1FdmVu
dFR5cGUsIHZvaWQqIGNsaWVudENhbGxCYWNrSW5mbyk7Ci0KKyNpZiBQTEFURk9STShXSU4pCisg
ICAgICAgIHN0YXRpYyB2b2lkIHJlYWRTdHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9pZCogaW52
b2NhdGlvbik7CisgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlU3RyZWFtQ2FsbGJhY2tNYWluVGhy
ZWFkKHZvaWQqIGludm9jYXRpb24pOworI2VuZGlmCiAgICAgICAgIHZvaWQgcmVhZFN0cmVhbUNh
bGxiYWNrKENGU3RyZWFtRXZlbnRUeXBlKTsKICAgICAgICAgdm9pZCB3cml0ZVN0cmVhbUNhbGxi
YWNrKENGU3RyZWFtRXZlbnRUeXBlKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiA1
MTE4NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVD
Rk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSwxNiBAQAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgogI2luY2x1ZGUgIlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNp
ZiBkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSB8fCBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BB
UkQpCiAjaW5jbHVkZSA8U3lzdGVtQ29uZmlndXJhdGlvbi9TeXN0ZW1Db25maWd1cmF0aW9uLmg+
CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdJTikKKyNpbmNsdWRlICJMb2FkZXJSdW5Mb29wQ0Yu
aCIKKyNlbmRpZgorCiAjaWZkZWYgQlVJTERJTkdfT05fVElHRVIKICNkZWZpbmUgQ0ZOX0VYUE9S
VCBleHRlcm4KICNlbmRpZgpAQCAtNzcsOSArODIsMTQgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpT
b2NrZXRTdHJlYW1IYW5kbGUoYwogICAgIENGUmVhZFN0cmVhbVNldENsaWVudChtX3JlYWRTdHJl
YW0uZ2V0KCksIHN0YXRpY19jYXN0PENGT3B0aW9uRmxhZ3M+KC0xKSwgcmVhZFN0cmVhbUNhbGxi
YWNrLCAmY2xpZW50Q29udGV4dCk7CiAgICAgQ0ZXcml0ZVN0cmVhbVNldENsaWVudChtX3dyaXRl
U3RyZWFtLmdldCgpLCBzdGF0aWNfY2FzdDxDRk9wdGlvbkZsYWdzPigtMSksIHdyaXRlU3RyZWFt
Q2FsbGJhY2ssICZjbGllbnRDb250ZXh0KTsKIAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBDRlJl
YWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKG1fcmVhZFN0cmVhbS5nZXQoKSwgbG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOworICAgIENGV3JpdGVTdHJlYW1TY2hlZHVs
ZVdpdGhSdW5Mb29wKG1fd3JpdGVTdHJlYW0uZ2V0KCksIGxvYWRlclJ1bkxvb3AoKSwga0NGUnVu
TG9vcERlZmF1bHRNb2RlKTsKKyNlbHNlCiAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVu
TG9vcChtX3JlYWRTdHJlYW0uZ2V0KCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSwga0NGUnVuTG9v
cENvbW1vbk1vZGVzKTsKICAgICBDRldyaXRlU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChtX3dy
aXRlU3RyZWFtLmdldCgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7Ci0gICAgCisjZW5kaWYKKwogICAgIENGUmVhZFN0cmVhbU9wZW4obV9yZWFkU3RyZWFt
LmdldCgpKTsKICAgICBDRldyaXRlU3RyZWFtT3BlbihtX3dyaXRlU3RyZWFtLmdldCgpKTsKIApA
QCAtMjQwLDIwICsyNTAsNTIgQEAgQ0ZTdHJpbmdSZWYgU29ja2V0U3RyZWFtSGFuZGxlOjpjb3B5
Q0ZTdAogICAgIHJldHVybiAoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3Vy
bC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAorc3RydWN0IE1haW5UaHJlYWRFdmVu
dENhbGxiYWNrSW5mbyB7DQorICAgIE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyhDRlN0cmVh
bUV2ZW50VHlwZSB0eXBlLCBTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkgOiB0eXBlKHR5cGUp
LCBoYW5kbGUoaGFuZGxlKSB7IH0NCisgICAgQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZTsNCisgICAg
U29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGU7DQorfTsNCisKIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1F
dmVudFR5cGUgdHlwZSwgdm9pZCogY2xpZW50Q2FsbEJhY2tJbmZvKQogewogICAgIFNvY2tldFN0
cmVhbUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlKj4oY2xp
ZW50Q2FsbEJhY2tJbmZvKTsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbSwgc3RyZWFtID09IGhh
bmRsZS0+bV9yZWFkU3RyZWFtLmdldCgpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgTWFpblRo
cmVhZEV2ZW50Q2FsbGJhY2tJbmZvIGluZm8odHlwZSwgaGFuZGxlKTsKKyAgICBjYWxsT25NYWlu
VGhyZWFkQW5kV2FpdChyZWFkU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFkLCAmaW5mbyk7CisjZWxz
ZQorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaGFuZGxlLT5yZWFkU3RyZWFtQ2Fs
bGJhY2sodHlwZSk7CisjZW5kaWYKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OndyaXRl
U3RyZWFtQ2FsbGJhY2soQ0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXZlbnRUeXBl
IHR5cGUsIHZvaWQqIGNsaWVudENhbGxCYWNrSW5mbykKIHsKICAgICBTb2NrZXRTdHJlYW1IYW5k
bGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGNsaWVudENhbGxC
YWNrSW5mbyk7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW0sIHN0cmVhbSA9PSBoYW5kbGUtPm1f
d3JpdGVTdHJlYW0uZ2V0KCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBNYWluVGhyZWFkRXZl
bnRDYWxsYmFja0luZm8gaW5mbyh0eXBlLCBoYW5kbGUpOworICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KHdyaXRlU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFkLCAmaW5mbyk7CisjZWxzZQorICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaGFuZGxlLT53cml0ZVN0cmVhbUNhbGxiYWNr
KHR5cGUpOworI2VuZGlmCiB9CiAKKyNpZiBQTEFURk9STShXSU4pCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6cmVhZFN0cmVhbUNhbGxiYWNrTWFpblRocmVhZCh2b2lkKiBpbnZvY2F0aW9uKQ0K
K3sNCisgICAgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8
TWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvKj4oaW52b2NhdGlvbik7DQorICAgIGluZm8tPmhh
bmRsZS0+cmVhZFN0cmVhbUNhbGxiYWNrKGluZm8tPnR5cGUpOw0KK30NCisNCit2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6d3JpdGVTdHJlYW1DYWxsYmFja01haW5UaHJlYWQodm9pZCogaW52b2Nh
dGlvbikNCit7DQorICAgIE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyogaW5mbyA9IHN0YXRp
Y19jYXN0PE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyo+KGludm9jYXRpb24pOw0KKyAgICBp
bmZvLT5oYW5kbGUtPndyaXRlU3RyZWFtQ2FsbGJhY2soaW5mby0+dHlwZSk7DQorfQ0KKyNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCisKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkU3RyZWFt
Q2FsbGJhY2soQ0ZTdHJlYW1FdmVudFR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2godHlwZSkgewpJ
bmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDUxMjA2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0xMS0xOSAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzE2OTAKKyAg
ICAgICAgTWFrZSBTb2NrZXRTdHJlYW1IYW5kbGVDRk5ldCB3b3JrIG9uIFdpbmRvd3MKKworICAg
ICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXQp
OgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJE
b3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbG9h
ZGVyUnVuTG9vcCgpIG5vdyBiZWluZyBpbiBpdHMgb3duIGhlYWRlci4KKwogMjAwOS0xMS0xOSAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCShyZXZpc2lv
biA1MTE4NykKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ0Yu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NyZWRl
bnRpYWxTdG9yYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJSdW5Mb29wQ0YuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTEx
Niw3ICsxMTcsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgCiAg
ICAgbV9kb3dubG9hZC5hZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGUoMCwgY2ZSZXF1ZXN0LCAm
Y2xpZW50KSk7CiAKICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VR
dWV1ZShtX2Rvd25sb2FkLmdldCgpKTsKLSAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9h
ZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQuZ2V0KCksIFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5M
b29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxl
RG93bmxvYWRXaXRoUnVuTG9vcChtX2Rvd25sb2FkLmdldCgpLCBsb2FkZXJSdW5Mb29wKCksIGtD
RlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAt
IEluaXRpYWxpemVkIGRvd25sb2FkIG9mIHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKIH0KQEAgLTE1NCw3ICsxNTUsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAgICAgfQogCiAgICAgQ0ZVUkxE
b3dubG9hZFNjaGVkdWxlV2l0aEN1cnJlbnRNZXNzYWdlUXVldWUobV9kb3dubG9hZC5nZXQoKSk7
Ci0gICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChtX2Rvd25sb2Fk
LmdldCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVs
dE1vZGUpOworICAgIENGVVJMRG93bmxvYWRTY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AobV9k
b3dubG9hZC5nZXQoKSwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwog
CiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxl
dGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVzIiwgd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CkBA
IC0yMDAsNyArMjAxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
aQogICAgICAgICBtX2Rlc3RpbmF0aW9uID0gU3RyaW5nKCk7CiAgICAgCiAgICAgQ0ZVUkxEb3du
bG9hZFNjaGVkdWxlV2l0aEN1cnJlbnRNZXNzYWdlUXVldWUobV9kb3dubG9hZC5nZXQoKSk7Ci0g
ICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChtX2Rvd25sb2FkLmdl
dCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUpOworICAgIENGVVJMRG93bmxvYWRTY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AobV9kb3du
bG9hZC5nZXQoKSwgbG9hZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAg
ICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUs
IHJlc3VtZWQgZG93bmxvYWQgb2YgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOwo=
</data>
<flag name="review"
          id="25254"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>