<?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>65486</bug_id>
          
          <creation_ts>2011-08-01 14:27:53 -0700</creation_ts>
          <short_desc>[Chromium] WebSQLDatabase version handling is broken in multi-process browsers.</short_desc>
          <delta_ts>2011-08-01 17:22:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444874</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-01 14:27:53 -0700</bug_when>
    <thetext>[Chromium] WebSQLDatabase version handling is broken in multi-process browsers.

The WebCore::AbstractDatabase class maintains a global in-memory map of the version numbers associated with open database files. That map is not reliable in a multi-process system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444912</commentid>
    <comment_count>1</comment_count>
      <attachid>102567</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-01 15:10:57 -0700</bug_when>
    <thetext>Created attachment 102567
version handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444918</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-01 15:13:10 -0700</bug_when>
    <thetext>Attachment 102567 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/storage/AbstractDatabase.h:101:  The parameter name &quot;version&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/storage/AbstractDatabase.h:104:  The parameter name &quot;version&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/storage/AbstractDatabase.cpp:354:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444919</commentid>
    <comment_count>3</comment_count>
      <attachid>102569</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-01 15:18:34 -0700</bug_when>
    <thetext>Created attachment 102569
version handling - style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444924</commentid>
    <comment_count>4</comment_count>
      <attachid>102569</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-01 15:25:03 -0700</bug_when>
    <thetext>Comment on attachment 102569
version handling - style fix

Attachment 102569 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9290524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444941</commentid>
    <comment_count>5</comment_count>
      <attachid>102577</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-01 15:45:07 -0700</bug_when>
    <thetext>Created attachment 102577
version handling - fix unused local var error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445019</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-08-01 17:22:22 -0700</bug_when>
    <thetext>Committed r92155: &lt;http://trac.webkit.org/changeset/92155&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102567</attachid>
            <date>2011-08-01 15:10:57 -0700</date>
            <delta_ts>2011-08-01 15:18:34 -0700</delta_ts>
            <desc>version handling</desc>
            <filename>version.txt</filename>
            <type>text/plain</type>
            <size>23808</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMDEgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBXZWJT
UUxEYXRhYmFzZSB2ZXJzaW9uIGhhbmRsaW5nIGlzIGJyb2tlbiBpbiBtdWx0aS1wcm9jZXNzIGJy
b3dzZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU0ODYKKworICAgICAgICBUaGUgV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZSBjbGFzcyBtYWlu
dGFpbnMgYSBnbG9iYWwgaW4tbWVtb3J5IG1hcCBvZgorICAgICAgICB0aGUgdmVyc2lvbiBudW1i
ZXJzIGFzc29jaWF0ZWQgd2l0aCBvcGVuIGRhdGFiYXNlIGZpbGVzLCBidXQgdGhhdCBtYXAgaXMK
KyAgICAgICAgbm90IHJlbGlhYmxlIGluIGEgbXVsdGktcHJvY2VzcyBzeXN0ZW0gbGlrZSBDaHJv
bWUuIFNvIGluc3RlYWQgb2YgcmVseWluZworICAgICAgICBvbiB0aGUgY2FjaGVkIHZhbHVlcyBp
biB0aGF0IG1hcCwgd2UgcmVhZCB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgKGFuZAorICAg
ICAgICB1cGRhdGUgdGhlIGNhY2hlZCB2YWx1ZSkgd2hlcmUgcG9zc2libGUuIFRoZXJlIGFyZSB0
d28gZWRnZSBjYXNlcyB3aGVyZSB0aGF0J3MKKyAgICAgICAgbm90IHBvc3NpYmxlIGJlY2F1c2Ug
dGhlIHNjcmlwdGFibGUgaW50ZXJmYWNlIHJlcXVpcmVzIHN5bmNocm9ub3VzIGFjY2VzcworICAg
ICAgICB0byB0aGUgdmVyc2lvbjogdGhlIC52ZXJzaW9uIGF0dHJpYnV0ZSBnZXR0ZXIgYW5kIHRo
ZSAub3BlbkRhdGFiYXNlKCkgbWV0aG9kLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgaGF2
ZSBubyBjaG9pY2UgYnV0IHRvIHVzZSB0aGUgcG90ZW50aWFsbHkgc3RhbGUgY2FjaGVkIHZhbHVl
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gRXhpc3RpbmcgbGF5b3V0IHRlc3RzIGNvdmVyIHRoZSB2ZXJzaW9uIGhhbmRsaW5n
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbik6CisgICAg
ICAgICogc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6aGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0
KToKKyAgICAgICAgKiBzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmg6CisgICAgICAgICog
c3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJl
ZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3Rh
dGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uU3luYzo6YmVnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Lmg6CisKIDIwMTEtMDgtMDEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIzOTcyNT8pOiBSZXNvdXJjZXMgcmVtb3ZlZCBmcm9tIGRv
Y3VtZW50IGNhbiBub3QgYmUgZnJlZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJz
dHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9B
YnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIzNSwxMyArMjM2LDE3
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAKIFN0cmluZyBBYnN0
cmFjdERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOwotICAgIHJldHVybiBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCku
dGhyZWFkc2FmZUNvcHkoKTsKKyAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJz
IHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGFjY3VyYXRlLCBidXQgd2UgY2Fubm90IHJlYWQgdGhl
CisgICAgLy8gYWN0dWFsIHZlcnNpb24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aG91dCBwb3RlbnRp
YWxseSBpbmR1Y2luZyBhIGRlYWRsb2NrLgorICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgdmVy
c2lvbiBnZXR0ZXIgdG8gdGhlIERhdGFiYXNlQVBJLgorICAgIHJldHVybiBnZXRDYWNoZWRWZXJz
aW9uKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAw
MDA7CiBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hv
dWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGNv
bnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUgPSAzMDAwMDsKKyAgICBjb25zdCBpbnQgbm9T
cWxpdGVCdXN5V2FpdFRpbWUgPSAwOworCiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4o
bV9maWxlbmFtZSwgdHJ1ZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBk
YXRhYmFzZSBhdCBwYXRoICVzIiwgbV9maWxlbmFtZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yNTAsOCArMjU1LDYgQEAgYm9vbCBBYnN0cmFj
dERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gdHVybiBvbiBpbmNyZW1lbnRhbCBhdXRvLXZhY3V1bSBmb3IgZGF0YWJhc2UgJXMiLCBtX2Zp
bGVuYW1lLmFzY2lpKCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXpl
cik7Ci0gICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRBdXRob3JpemVyKG1fZGF0YWJhc2VBdXRob3Jp
emVyKTsKICAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG1heFNxbGl0ZUJ1c3lX
YWl0VGltZSk7CiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CkBAIC0yNjMsNDMgKzI2Niw2
NyBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgICAgICAg
ICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUgdXBkYXRlR3VpZFZlcnNp
b25NYXAoKSkuCiAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IGVudHJ5LT5zZWNvbmQuaXNO
dWxsKCkgPyBTdHJpbmcoIiIpIDogZW50cnktPnNlY29uZDsKICAgICAgICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiQ3VycmVudCBjYWNoZWQgdmVyc2lvbiBmb3IgZ3VpZCAlaSBpcyAlcyIsIG1fZ3Vp
ZCwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCkpOworCisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgICAgICAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRoZSBj
YWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUsIGJ1dAorICAgICAgICAgICAgLy8gd2UgY2Fu
bm90IHJlYWQgdGhlIGFjdHVhbCB2ZXJzaW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhvdXQgcG90
ZW50aWFsbHkKKyAgICAgICAgICAgIC8vIGluZHVjaW5nIGEgZm9ybSBvZiBkZWFkbG9jaywgYSBi
dXN5dGltZW91dCBlcnJvciB3aGVuIHRyeWluZyB0bworICAgICAgICAgICAgLy8gYWNjZXNzIHRo
ZSBkYXRhYmFzZS4gU28gd2UnbGwgdXNlIHRoZSBjYWNoZWQgdmFsdWUgaWYgd2UncmUgYWJsZSB0
byByZWFkCisgICAgICAgICAgICAvLyB0aGUgdmFsdWUgd2l0aG91dCB3YWl0aW5nLCBhbmQgb3Ro
ZXJ3aXNlIHVzZSB0aGUgY2FjaGVkIHZhbHVlICh3aGljaCBtYXkgYmUgb2ZmKS4KKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgb3BlbkRhdGFiYXNlIG1ldGhvZCB0byB0aGUgRGF0
YWJhc2VBUEkuCisgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG5v
U3FsaXRlQnVzeVdhaXRUaW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB2ZXJzaW9uRnJvbURhdGFi
YXNlOworICAgICAgICAgICAgaWYgKGdldFZlcnNpb25Gcm9tRGF0YWJhc2UodmVyc2lvbkZyb21E
YXRhYmFzZSwgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSB2ZXJz
aW9uRnJvbURhdGFiYXNlOworICAgICAgICAgICAgICAgIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKG1f
Z3VpZCwgY3VycmVudFZlcnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zcWxp
dGVEYXRhYmFzZS5zZXRCdXN5VGltZW91dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUpOworI2VuZGlm
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIk5vIGNhY2hl
ZCB2ZXJzaW9uIGZvciBndWlkICVpIiwgbV9ndWlkKTsKIAorICAgICAgICAgICAgU1FMaXRlVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24obV9zcWxpdGVEYXRhYmFzZSk7CisgICAgICAgICAgICB0cmFu
c2FjdGlvbi5iZWdpbigpOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi5pblByb2dyZXNz
KCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBiZWdpbiB0cmFuc2Fj
dGlvbiB3aGlsZSBvcGVuaW5nICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAg
ICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2Uu
dGFibGVFeGlzdHMoZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAg
bV9uZXcgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpICsg
IiAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSB0YWJsZSAlcyBpbiBk
YXRhYmFzZSAlcyIsIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBkYXRh
YmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIGhh
bmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rp
b24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9z
ZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWdldFZlcnNpb25Gcm9tRGF0YWJh
c2UoY3VycmVudFZlcnNpb24pKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFnZXRWZXJzaW9u
RnJvbURhdGFiYXNlKGN1cnJlbnRWZXJzaW9uLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBnZXQgY3VycmVudCB2ZXJzaW9uIGZyb20gZGF0YWJhc2UgJXMi
LCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBoYW5k
bGUgdG8gdGhlIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9s
bGJhY2soKTsKICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBp
ZiAoY3VycmVudFZlcnNpb24ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIlJldHJpZXZlZCBjdXJyZW50IHZlcnNpb24gJXMgZnJvbSBkYXRhYmFzZSAlcyIsIGN1
cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fbmV3IHx8IHNob3VsZFNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlKSB7CiAgICAgICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTZXR0
aW5nIHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgJXMgdGhhdCB3YXMganVzdCBjcmVhdGVkIiwgbV9l
eHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGlmICghc2V0VmVyc2lvbkluRGF0YWJhc2UobV9l
eHBlY3RlZFZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzZXRWZXJzaW9uSW5EYXRh
YmFzZShtX2V4cGVjdGVkVmVyc2lvbiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICVzIiwgbV9leHBl
Y3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAg
ICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxl
LgorICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAg
ICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY3VycmVu
dFZlcnNpb24gPSBtX2V4cGVjdGVkVmVyc2lvbjsKICAgICAgICAgICAgIH0KLQogICAgICAgICAg
ICAgdXBkYXRlR3VpZFZlcnNpb25NYXAobV9ndWlkLCBjdXJyZW50VmVyc2lvbik7CisgICAgICAg
ICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzE0LDEz
ICszNDEsMTggQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAg
ICAgICBMT0coU3RvcmFnZUFQSSwgInBhZ2UgZXhwZWN0cyB2ZXJzaW9uICVzIGZyb20gZGF0YWJh
c2UgJXMsIHdoaWNoIGFjdHVhbGx5IGhhcyB2ZXJzaW9uIG5hbWUgJXMgLSBvcGVuRGF0YWJhc2Uo
KSBjYWxsIHdpbGwgZmFpbCIsIG1fZXhwZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLAogICAg
ICAgICAgICAgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSwgY3VycmVudFZlcnNp
b24uYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAg
ICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxlLgogICAgICAgICBt
X3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIG1fc3FsaXRlRGF0YWJhc2Uu
c2V0QXV0aG9yaXplcihtX2RhdGFiYXNlQXV0aG9yaXplcik7CisKICAgICBtX29wZW5lZCA9IHRy
dWU7CiAKKyAgICBpZiAobV9uZXcgJiYgIXNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQor
ICAgICAgICBtX2V4cGVjdGVkVmVyc2lvbiA9ICIiOyAgLy8gVGhlIGNhbGxlciBwcm92aWRlZCBh
IGNyZWF0aW9uQ2FsbGJhY2sgd2hpY2ggd2lsbCBzZXQgdGhlIGV4cGVjdGVkIHZlcnNpb24uCisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzY0LDE0ICszOTYsMTcgQEAgY29uc3QgU3RyaW5n
JiBBYnN0cmFjdERhdGFiYXNlOjpkYXRhYmFzZQogICAgIHJldHVybiBrZXk7CiB9CiAKLWJvb2wg
QWJzdHJhY3REYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24p
Citib29sIEFic3RyYWN0RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2
ZXJzaW9uLCBib29sIHNob3VsZENhY2hlVmVyc2lvbikKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgZ2V0VmVyc2lvblF1ZXJ5LCAoIlNFTEVDVCB2YWx1ZSBGUk9NICIgKyBkYXRh
YmFzZUluZm9UYWJsZU5hbWUoKSArICIgV0hFUkUga2V5ID0gJyIgKyBkYXRhYmFzZVZlcnNpb25L
ZXkoKSArICInOyIpKTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAK
ICAgICBib29sIHJlc3VsdCA9IHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmFzZShtX3NxbGl0
ZURhdGFiYXNlLCBnZXRWZXJzaW9uUXVlcnkudGhyZWFkc2FmZUNvcHkoKSwgdmVyc2lvbik7Ci0g
ICAgaWYgKCFyZXN1bHQpCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAoc2hvdWxkQ2Fj
aGVWZXJzaW9uKQorICAgICAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbih2ZXJzaW9uKTsKKyAgICB9
IGVsc2UKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gcmV0cmlldmUgdmVyc2lvbiBmcm9t
IGRhdGFiYXNlICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAg
ICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZW5hYmxlKCk7CkBAIC0zNzksNyArNDE0LDcgQEAgYm9v
bCBBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQorYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpzZXRWZXJzaW9uSW5EYXRh
YmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9uKQogewog
ICAgIC8vIFRoZSBJTlNFUlQgd2lsbCByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5IGZvciB0aGUg
ZGF0YWJhc2Ugd2l0aCB0aGUgbmV3IHZlcnNpb24gbnVtYmVyLCBkdWUgdG8gdGhlIFVOSVFVRSBP
TiBDT05GTElDVCBSRVBMQUNFCiAgICAgLy8gY2xhdXNlIGluIHRoZSBDUkVBVEUgc3RhdGVtZW50
IChzZWUgRGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KCkpLgpAQCAtMzg4LDcgKzQyMywx
MCBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiCiAgICAgbV9kYXRh
YmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIAogICAgIGJvb2wgcmVzdWx0ID0gc2V0VGV4dFZh
bHVlSW5EYXRhYmFzZShtX3NxbGl0ZURhdGFiYXNlLCBzZXRWZXJzaW9uUXVlcnkudGhyZWFkc2Fm
ZUNvcHkoKSwgdmVyc2lvbik7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgaWYgKHJlc3VsdCkgewor
ICAgICAgICBpZiAoc2hvdWxkQ2FjaGVWZXJzaW9uKQorICAgICAgICAgICAgc2V0Q2FjaGVkVmVy
c2lvbih2ZXJzaW9uKTsKKyAgICB9IGVsc2UKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
c2V0IHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgKCVzKSIsIHZlcnNpb24uYXNjaWkoKS5kYXRhKCks
IHNldFZlcnNpb25RdWVyeS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9y
aXplci0+ZW5hYmxlKCk7CkBAIC0zOTYsMjIgKzQzNCwzNSBAQCBib29sIEFic3RyYWN0RGF0YWJh
c2U6OnNldFZlcnNpb25JbkRhdGFiCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBBYnN0
cmFjdERhdGFiYXNlOjp2ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkgY29uc3QKK3ZvaWQgQWJzdHJh
Y3REYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsK
LSAgICBpZiAoIW1fZXhwZWN0ZWRWZXJzaW9uLmlzRW1wdHkoKSkgewotICAgICAgICBNdXRleExv
Y2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotICAgICAgICByZXR1cm4gbV9leHBlY3RlZFZlcnNp
b24gPT0gZ3VpZFRvVmVyc2lvbk1hcCgpLmdldChtX2d1aWQpOwotICAgIH0KKyAgICBtX2V4cGVj
dGVkVmVyc2lvbiA9IHZlcnNpb24udGhyZWFkc2FmZUNvcHkoKTsKK30KIAotICAgIHJldHVybiB0
cnVlOworU3RyaW5nIEFic3RyYWN0RGF0YWJhc2U6OmdldENhY2hlZFZlcnNpb24oKSBjb25zdAor
eworICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7CisgICAgcmV0dXJuIGd1aWRU
b1ZlcnNpb25NYXAoKS5nZXQobV9ndWlkKS50aHJlYWRzYWZlQ29weSgpOwogfQogCi12b2lkIEFi
c3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24p
Cit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24oY29uc3QgU3RyaW5nJiBh
Y3R1YWxWZXJzaW9uKQogewotICAgIG1fZXhwZWN0ZWRWZXJzaW9uID0gdmVyc2lvbi50aHJlYWRz
YWZlQ29weSgpOwogICAgIC8vIFVwZGF0ZSB0aGUgaW4gbWVtb3J5IGRhdGFiYXNlIHZlcnNpb24g
bWFwLgogICAgIE11dGV4TG9ja2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7Ci0gICAgdXBkYXRlR3Vp
ZFZlcnNpb25NYXAobV9ndWlkLCB2ZXJzaW9uKTsKKyAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcCht
X2d1aWQsIGFjdHVhbFZlcnNpb24pOworfQorCitib29sIEFic3RyYWN0RGF0YWJhc2U6OmdldEFj
dHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihTdHJpbmcgJmFjdHVhbFZlcnNpb24pCit7CisgICAg
QVNTRVJUKG1fc3FsaXRlRGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIC8vIE5vdGU6IEluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMg
dGhlIGNhY2hlZCB2YWx1ZSBtYXkgYmUgaW5hY2N1cmF0ZS4KKyAgICAvLyBTbyB3ZSByZXRyaWV2
ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGUgY2FjaGVkIHZhbHVl
IGhlcmUuCisgICAgcmV0dXJuIGdldFZlcnNpb25Gcm9tRGF0YWJhc2UoYWN0dWFsVmVyc2lvbiwg
dHJ1ZSk7CisjZWxzZQorICAgIGFjdHVhbFZlcnNpb24gPSBnZXRDYWNoZWRWZXJzaW9uKCk7Cisg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKIH0KIAogdm9pZCBBYnN0cmFjdERhdGFiYXNlOjpkaXNh
YmxlQXV0aG9yaXplcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0
YWJhc2UuaAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3Ry
YWN0RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDYgQEAgcHVibGljOgog
ICAgIHZvaWQgaW50ZXJydXB0KCk7CiAgICAgYm9vbCBpc0ludGVycnVwdGVkKCk7CiAKLSAgICAv
LyBGSVhNRTogbW92ZSBhbGwgdmVyc2lvbi1yZWxhdGVkIG1ldGhvZHMgdG8gYSBEYXRhYmFzZVZl
cnNpb25UcmFja2VyIGNsYXNzCi0gICAgYm9vbCB2ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkgY29u
c3Q7Ci0gICAgdm9pZCBzZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsK
LSAgICBib29sIGdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2ZXJzaW9uKTsKLSAgICBi
b29sIHNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lvbik7Ci0KICAgICB2
b2lkIGRpc2FibGVBdXRob3JpemVyKCk7CiAgICAgdm9pZCBlbmFibGVBdXRob3JpemVyKCk7CiAg
ICAgdm9pZCBzZXRBdXRob3JpemVyUmVhZE9ubHkoKTsKQEAgLTkxLDYgKzg1LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbW1lZGlhdGVseSgpID0gMDsKIAogcHJvdGVjdGVk
OgorICAgIGZyaWVuZCBjbGFzcyBTUUxUcmFuc2FjdGlvblN5bmM7CisgICAgZnJpZW5kIGNsYXNz
IFNRTFRyYW5zYWN0aW9uOworICAgIGZyaWVuZCBjbGFzcyBDaGFuZ2VWZXJzaW9uV3JhcHBlcjsK
KwogICAgIEFic3RyYWN0RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOwogCkBAIC05OCw2ICs5NiwxNCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFz
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCisgICAgYm9vbCBnZXRWZXJzaW9uRnJvbURhdGFiYXNl
KFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24gPSB0cnVlKTsKKyAgICBi
b29sIHNldFZlcnNpb25JbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91
bGRDYWNoZVZlcnNpb24gPSB0cnVlKTsKKyAgICB2b2lkIHNldEV4cGVjdGVkVmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24pOworICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFZlcnNpb247IH0KKyAgICBTdHJpbmcgZ2V0Q2FjaGVk
VmVyc2lvbigpY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYg
dmVyc2lvbik7CisgICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5n
JiB2ZXJzaW9uKTsKKwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxl
TmFtZSgpOwogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lv
bldyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwCShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3
OCwxMSBAQCBib29sIENoYW5nZVZlcnNpb25XcmFwcGVyOjpwZXJmb3JtUG9zdGZsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmhhbmRsZUNvbW1pdEZh
aWxlZEFmdGVyUG9zdGZsaWdodChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCit7CisgICAg
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPnNldENhY2hlZFZlcnNpb24obV9vbGRWZXJzaW9uKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIu
aAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIHBlcmZvcm1QcmVmbGlnaHQoU1FMVHJhbnNhY3Rpb24qKTsKICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rpb24qKTsKLQogICAgIHZp
cnR1YWwgU1FMRXJyb3IqIHNxbEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9zcWxFcnJvci5nZXQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQo
U1FMVHJhbnNhY3Rpb24qKTsKIAogcHJpdmF0ZToKICAgICBDaGFuZ2VWZXJzaW9uV3JhcHBlcihj
b25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEy
ICsxMDksNyBAQCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6b3BlbkRhdGFiCiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRh
YmFzZSwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZl
cnNpb24pOwogCi0gICAgLy8gSWYgaXQncyBhIG5ldyBkYXRhYmFzZSBhbmQgYSBjcmVhdGlvbiBj
YWxsYmFjayB3YXMgcHJvdmlkZWQsIHJlc2V0IHRoZSBleHBlY3RlZAotICAgIC8vIHZlcnNpb24g
dG8gIiIgYW5kIHNjaGVkdWxlIHRoZSBjcmVhdGlvbiBjYWxsYmFjay4gQmVjYXVzZSBvZiBzb21l
IHN1YnRsZSBTdHJpbmcKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiBpc3N1ZXMsIHdlIGhhdmUgdG8g
cmVzZXQgbV9leHBlY3RlZFZlcnNpb24gaGVyZSBpbnN0ZWFkIG9mIGRvaW5nCi0gICAgLy8gaXQg
aW5zaWRlIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KCkgd2hpY2ggaXMgcnVuIG9uIHRoZSBEQiB0aHJl
YWQuCiAgICAgaWYgKGRhdGFiYXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkp
IHsKLSAgICAgICAgZGF0YWJhc2UtPm1fZXhwZWN0ZWRWZXJzaW9uID0gIiI7CiAgICAgICAgIExP
RyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZv
ciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBkYXRhYmFzZS0+bV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tU
YXNrOjpjcmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiA5MjEzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsNiBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpv
CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRl
eHQtPnNlY3VyaXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
IAogICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7
Ci0gICAgICAgIGRhdGFiYXNlLT5tX2V4cGVjdGVkVmVyc2lvbiA9ICIiOwogICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2Ug
JXBcbiIsIGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+aGFuZGxl
RXZlbnQoZGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KQEAgLTEyMyw4ICsxMjIsMTAgQEAgdm9pZCBE
YXRhYmFzZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKChlYyA9IHRyYW5zYWN0aW9uLT5jb21taXQoKSkpCisgICAgaWYgKChlYyA9
IHRyYW5zYWN0aW9uLT5jb21taXQoKSkpIHsKKyAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbihvbGRW
ZXJzaW9uKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHNldEV4cGVjdGVkVmVyc2lv
bihuZXdWZXJzaW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIFNRTFRyYW5z
YWN0aW9uOjpTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSoKICAgICAsIG1fbW9kaWZpZWREYXRhYmFz
ZShmYWxzZSkKICAgICAsIG1fbG9ja0FjcXVpcmVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShy
ZWFkT25seSkKKyAgICAsIG1faGFzVmVyc2lvbk1pc21hdGNoKGZhbHNlKQogewogICAgIEFTU0VS
VChtX2RhdGFiYXNlKTsKIH0KQEAgLTEwNSw5ICsxMDYsNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpleGVjdXRlU1FMKGNvbnN0IFN0CiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAg
ICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwogCi0gICAgaWYgKCFt
X2RhdGFiYXNlLT52ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkpCi0gICAgICAgIHN0YXRlbWVudC0+
c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpOwotCiAgICAgZW5xdWV1ZVN0YXRlbWVudChzdGF0
ZW1lbnQpOwogfQogCkBAIC0yNzIsOSArMjcwLDI2IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9w
ZW5UcmFuc2FjdGlvbkFuZFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIE5vdGU6
IFdlIGludGVudGlvbmFsbHkgcmV0cmlldmUgdGhlIGFjdHVhbCB2ZXJzaW9uIGV2ZW4gd2l0aCBh
biBlbXB0eSBleHBlY3RlZCB2ZXJzaW9uLgorICAgIC8vIEluIG11bHRpLXByb2Nlc3MgYnJvd3Nl
cnMsIHdlIHRha2UgdGhpcyBvcHBvcnRpbnV0aXkgdG8gdXBkYXRlIHRoZSBjYWNoZWQgdmFsdWUg
Zm9yCisgICAgLy8gdGhlIGFjdHVhbCB2ZXJzaW9uLiBJbiBzaW5nbGUtcHJvY2VzcyBicm93c2Vy
cywgdGhpcyBpcyBqdXN0IGEgbWFwIGxvb2t1cC4KKyAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsK
KyAgICBpZiAoIW1fZGF0YWJhc2UtPmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihhY3R1
YWxWZXJzaW9uKSkgeworICAgICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOwor
ICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLmNsZWFyKCk7CisgICAgICAgIG1fZGF0YWJhc2Ut
PmVuYWJsZUF1dGhvcml6ZXIoKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJy
b3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIHJlYWQgdmVyc2lv
biIpOworICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX2hhc1ZlcnNpb25NaXNtYXRjaCA9ICFtX2RhdGFiYXNlLT5leHBl
Y3RlZFZlcnNpb24oKS5pc0VtcHR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICht
X2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb24oKSAhPSBhY3R1YWxWZXJzaW9uKTsKKwogICAgIC8v
IFRyYW5zYWN0aW9uIFN0ZXBzIDMgLSBQZWZvcm0gcHJlZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRv
IHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5IGZhaWwKICAgICBpZiAobV93cmFwcGVyICYmICFt
X3dyYXBwZXItPnBlcmZvcm1QcmVmbGlnaHQodGhpcykpIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+
ZGlzYWJsZUF1dGhvcml6ZXIoKTsKICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5jbGVhcigp
OworICAgICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7CiAgICAgICAgIG1fdHJh
bnNhY3Rpb25FcnJvciA9IG1fd3JhcHBlci0+c3FsRXJyb3IoKTsKICAgICAgICAgaWYgKCFtX3Ry
YW5zYWN0aW9uRXJyb3IpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJv
cjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJlZCBz
ZXR0aW5nIHVwIHRyYW5zYWN0aW9uIik7CkBAIC0zNjksNiArMzg0LDkgQEAgYm9vbCBTUUxUcmFu
c2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogCiAgICAgbV9kYXRhYmFzZS0+cmVzZXRBdXRo
b3JpemVyKCk7CiAKKyAgICBpZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpCisgICAgICAgIG1fY3Vy
cmVudFN0YXRlbWVudC0+c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpOworCiAgICAgaWYgKG1f
Y3VycmVudFN0YXRlbWVudC0+ZXhlY3V0ZShtX2RhdGFiYXNlLmdldCgpKSkgewogICAgICAgICBp
ZiAobV9kYXRhYmFzZS0+bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpKSB7CiAgICAgICAgICAg
ICAvLyBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQgdGhlIGRhdGFiYXNl
IGZvciBsYXRlciBkZWxlZ2F0ZSBub3RpZmljYXRpb24KQEAgLTQ2NSw2ICs0ODMsOCBAQCB2b2lk
IFNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAKICAgICAvLyBJZiB0aGUgY29t
bWl0IGZhaWxlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgc3RpbGwgYmUgbWFya2VkIGFzICJpbiBw
cm9ncmVzcyIKICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Cisg
ICAgICAgIGlmIChtX3dyYXBwZXIpCisgICAgICAgICAgICBtX3dyYXBwZXItPmhhbmRsZUNvbW1p
dEZhaWxlZEFmdGVyUG9zdGZsaWdodCh0aGlzKTsKICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2tX
cmFwcGVyLmNsZWFyKCk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpj
cmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgImZhaWxlZCB0byBjb21taXQgdGhlIHRyYW5z
YWN0aW9uIik7CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gOTIxMzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uV3Jh
cHBlcigpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtUHJlZmxpZ2h0KFNRTFRyYW5zYWN0
aW9uKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtUG9zdGZsaWdodChTUUxUcmFuc2Fj
dGlvbiopID0gMDsKLQogICAgIHZpcnR1YWwgU1FMRXJyb3IqIHNxbEVycm9yKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQoU1FM
VHJhbnNhY3Rpb24qKSA9IDA7CiB9OwogCiBjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbj4gewpAQCAtMTIzLDYgKzEyMyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX21vZGlmaWVkRGF0YWJhc2U7CiAgICAgYm9vbCBtX2xvY2tB
Y3F1aXJlZDsKICAgICBib29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNt
YXRjaDsKIAogICAgIE11dGV4IG1fc3RhdGVtZW50TXV0ZXg7CiAgICAgRGVxdWU8UmVmUHRyPFNR
TFN0YXRlbWVudD4gPiBtX3N0YXRlbWVudFF1ZXVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDYgKzU4LDcgQEAgU1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMo
RAogICAgIDogbV9kYXRhYmFzZShkYikKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAg
LCBtX3JlYWRPbmx5KHJlYWRPbmx5KQorICAgICwgbV9oYXNWZXJzaW9uTWlzbWF0Y2goZmFsc2Up
CiAgICAgLCBtX21vZGlmaWVkRGF0YWJhc2UoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ2xp
ZW50KGFkb3B0UHRyKG5ldyBTUUxUcmFuc2FjdGlvbkNsaWVudCgpKSkKIHsKQEAgLTc5LDcgKzgw
LDcgQEAgUGFzc1JlZlB0cjxTUUxSZXN1bHRTZXQ+IFNRTFRyYW5zYWN0aW9uUwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UtPnZlcnNpb25NYXRjaGVzRXhw
ZWN0ZWQoKSkgeworICAgIGlmIChtX2hhc1ZlcnNpb25NaXNtYXRjaCkgewogICAgICAgICBlYyA9
IFNRTEV4Y2VwdGlvbjo6VkVSU0lPTl9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg
LTE1MCw2ICsxNTEsMTYgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2lu
KAogICAgICAgICByZXR1cm4gU1FMRXhjZXB0aW9uOjpEQVRBQkFTRV9FUlI7CiAgICAgfQogCisg
ICAgLy8gTm90ZTogV2UgaW50ZW50aW9uYWxseSByZXRyaWV2ZSB0aGUgYWN0dWFsIHZlcnNpb24g
ZXZlbiB3aXRoIGFuIGVtcHR5IGV4cGVjdGVkIHZlcnNpb24uCisgICAgLy8gSW4gbXVsdGktcHJv
Y2VzcyBicm93c2Vycywgd2UgdGFrZSB0aGlzIG9wcG9ydGludXRpeSB0byB1cGRhdGUgdGhlIGNh
Y2hlZCB2YWx1ZSBmb3IKKyAgICAvLyB0aGUgYWN0dWFsIHZlcnNpb24uIEluIHNpbmdsZS1wcm9j
ZXNzIGJyb3dzZXJzLCB0aGlzIGlzIGp1c3QgYSBtYXAgbG9va3VwLgorICAgIFN0cmluZyBhY3R1
YWxWZXJzaW9uOworICAgIGlmICghbV9kYXRhYmFzZS0+Z2V0QWN0dWFsVmVyc2lvbkZvclRyYW5z
YWN0aW9uKGFjdHVhbFZlcnNpb24pKSB7CisgICAgICAgIHJvbGxiYWNrKCk7CisgICAgICAgIHJl
dHVybiBTUUxFeGNlcHRpb246OkRBVEFCQVNFX0VSUjsKKyAgICB9CisgICAgbV9oYXNWZXJzaW9u
TWlzbWF0Y2ggPSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNFbXB0eSgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkg
IT0gYWN0dWFsVmVyc2lvbik7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaAkocmV2aXNpb24gOTIxMzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKERBVEFCQVNFKQogCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RGF0YWJhc2VT
eW5jPiBtX2RhdGFiYXNlOwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4g
bV9jYWxsYmFjazsKICAgICBib29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2hhc1ZlcnNpb25N
aXNtYXRjaDsKIAogICAgIGJvb2wgbV9tb2RpZmllZERhdGFiYXNlOwogICAgIE93blB0cjxTUUxU
cmFuc2FjdGlvbkNsaWVudD4gbV90cmFuc2FjdGlvbkNsaWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102569</attachid>
            <date>2011-08-01 15:18:34 -0700</date>
            <delta_ts>2011-08-01 15:45:07 -0700</delta_ts>
            <desc>version handling - style fix</desc>
            <filename>version2.txt</filename>
            <type>text/plain</type>
            <size>23791</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMDEgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBXZWJT
UUxEYXRhYmFzZSB2ZXJzaW9uIGhhbmRsaW5nIGlzIGJyb2tlbiBpbiBtdWx0aS1wcm9jZXNzIGJy
b3dzZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU0ODYKKworICAgICAgICBUaGUgV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZSBjbGFzcyBtYWlu
dGFpbnMgYSBnbG9iYWwgaW4tbWVtb3J5IG1hcCBvZgorICAgICAgICB0aGUgdmVyc2lvbiBudW1i
ZXJzIGFzc29jaWF0ZWQgd2l0aCBvcGVuIGRhdGFiYXNlIGZpbGVzLCBidXQgdGhhdCBtYXAgaXMK
KyAgICAgICAgbm90IHJlbGlhYmxlIGluIGEgbXVsdGktcHJvY2VzcyBzeXN0ZW0gbGlrZSBDaHJv
bWUuIFNvIGluc3RlYWQgb2YgcmVseWluZworICAgICAgICBvbiB0aGUgY2FjaGVkIHZhbHVlcyBp
biB0aGF0IG1hcCwgd2UgcmVhZCB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgKGFuZAorICAg
ICAgICB1cGRhdGUgdGhlIGNhY2hlZCB2YWx1ZSkgd2hlcmUgcG9zc2libGUuIFRoZXJlIGFyZSB0
d28gZWRnZSBjYXNlcyB3aGVyZSB0aGF0J3MKKyAgICAgICAgbm90IHBvc3NpYmxlIGJlY2F1c2Ug
dGhlIHNjcmlwdGFibGUgaW50ZXJmYWNlIHJlcXVpcmVzIHN5bmNocm9ub3VzIGFjY2VzcworICAg
ICAgICB0byB0aGUgdmVyc2lvbjogdGhlIC52ZXJzaW9uIGF0dHJpYnV0ZSBnZXR0ZXIgYW5kIHRo
ZSAub3BlbkRhdGFiYXNlKCkgbWV0aG9kLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgaGF2
ZSBubyBjaG9pY2UgYnV0IHRvIHVzZSB0aGUgcG90ZW50aWFsbHkgc3RhbGUgY2FjaGVkIHZhbHVl
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gRXhpc3RpbmcgbGF5b3V0IHRlc3RzIGNvdmVyIHRoZSB2ZXJzaW9uIGhhbmRsaW5n
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbik6CisgICAg
ICAgICogc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6aGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0
KToKKyAgICAgICAgKiBzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmg6CisgICAgICAgICog
c3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJl
ZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3Rh
dGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uU3luYzo6YmVnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Lmg6CisKIDIwMTEtMDgtMDEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIzOTcyNT8pOiBSZXNvdXJjZXMgcmVtb3ZlZCBmcm9tIGRv
Y3VtZW50IGNhbiBub3QgYmUgZnJlZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJz
dHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9B
YnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIzNSwxMyArMjM2LDE3
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAKIFN0cmluZyBBYnN0
cmFjdERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOwotICAgIHJldHVybiBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCku
dGhyZWFkc2FmZUNvcHkoKTsKKyAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJz
IHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGFjY3VyYXRlLCBidXQgd2UgY2Fubm90IHJlYWQgdGhl
CisgICAgLy8gYWN0dWFsIHZlcnNpb24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aG91dCBwb3RlbnRp
YWxseSBpbmR1Y2luZyBhIGRlYWRsb2NrLgorICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgdmVy
c2lvbiBnZXR0ZXIgdG8gdGhlIERhdGFiYXNlQVBJLgorICAgIHJldHVybiBnZXRDYWNoZWRWZXJz
aW9uKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAw
MDA7CiBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hv
dWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGNv
bnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUgPSAzMDAwMDsKKyAgICBjb25zdCBpbnQgbm9T
cWxpdGVCdXN5V2FpdFRpbWUgPSAwOworCiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4o
bV9maWxlbmFtZSwgdHJ1ZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBk
YXRhYmFzZSBhdCBwYXRoICVzIiwgbV9maWxlbmFtZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC0yNTAsOCArMjU1LDYgQEAgYm9vbCBBYnN0cmFj
dERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAgIGlmICghbV9zcWxpdGVEYXRhYmFzZS50
dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKSkKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gdHVybiBvbiBpbmNyZW1lbnRhbCBhdXRvLXZhY3V1bSBmb3IgZGF0YWJhc2UgJXMiLCBtX2Zp
bGVuYW1lLmFzY2lpKCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXpl
cik7Ci0gICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRBdXRob3JpemVyKG1fZGF0YWJhc2VBdXRob3Jp
emVyKTsKICAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG1heFNxbGl0ZUJ1c3lX
YWl0VGltZSk7CiAKICAgICBTdHJpbmcgY3VycmVudFZlcnNpb247CkBAIC0yNjMsNDMgKzI2Niw2
NyBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgICAgICAg
ICAvLyBNYXAgbnVsbCBzdHJpbmcgdG8gZW1wdHkgc3RyaW5nIChzZWUgdXBkYXRlR3VpZFZlcnNp
b25NYXAoKSkuCiAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IGVudHJ5LT5zZWNvbmQuaXNO
dWxsKCkgPyBTdHJpbmcoIiIpIDogZW50cnktPnNlY29uZDsKICAgICAgICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiQ3VycmVudCBjYWNoZWQgdmVyc2lvbiBmb3IgZ3VpZCAlaSBpcyAlcyIsIG1fZ3Vp
ZCwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCkpOworCisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgICAgICAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzIHRoZSBj
YWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUsIGJ1dAorICAgICAgICAgICAgLy8gd2UgY2Fu
bm90IHJlYWQgdGhlIGFjdHVhbCB2ZXJzaW9uIGZyb20gdGhlIGRhdGFiYXNlIHdpdGhvdXQgcG90
ZW50aWFsbHkKKyAgICAgICAgICAgIC8vIGluZHVjaW5nIGEgZm9ybSBvZiBkZWFkbG9jaywgYSBi
dXN5dGltZW91dCBlcnJvciB3aGVuIHRyeWluZyB0bworICAgICAgICAgICAgLy8gYWNjZXNzIHRo
ZSBkYXRhYmFzZS4gU28gd2UnbGwgdXNlIHRoZSBjYWNoZWQgdmFsdWUgaWYgd2UncmUgYWJsZSB0
byByZWFkCisgICAgICAgICAgICAvLyB0aGUgdmFsdWUgd2l0aG91dCB3YWl0aW5nLCBhbmQgb3Ro
ZXJ3aXNlIHVzZSB0aGUgY2FjaGVkIHZhbHVlICh3aGljaCBtYXkgYmUgb2ZmKS4KKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgb3BlbkRhdGFiYXNlIG1ldGhvZCB0byB0aGUgRGF0
YWJhc2VBUEkuCisgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG5v
U3FsaXRlQnVzeVdhaXRUaW1lKTsKKyAgICAgICAgICAgIFN0cmluZyB2ZXJzaW9uRnJvbURhdGFi
YXNlOworICAgICAgICAgICAgaWYgKGdldFZlcnNpb25Gcm9tRGF0YWJhc2UodmVyc2lvbkZyb21E
YXRhYmFzZSwgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSB2ZXJz
aW9uRnJvbURhdGFiYXNlOworICAgICAgICAgICAgICAgIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKG1f
Z3VpZCwgY3VycmVudFZlcnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zcWxp
dGVEYXRhYmFzZS5zZXRCdXN5VGltZW91dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUpOworI2VuZGlm
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIk5vIGNhY2hl
ZCB2ZXJzaW9uIGZvciBndWlkICVpIiwgbV9ndWlkKTsKIAorICAgICAgICAgICAgU1FMaXRlVHJh
bnNhY3Rpb24gdHJhbnNhY3Rpb24obV9zcWxpdGVEYXRhYmFzZSk7CisgICAgICAgICAgICB0cmFu
c2FjdGlvbi5iZWdpbigpOworICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi5pblByb2dyZXNz
KCkpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBiZWdpbiB0cmFuc2Fj
dGlvbiB3aGlsZSBvcGVuaW5nICVzIiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAg
ICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJhc2Uu
dGFibGVFeGlzdHMoZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAg
bV9uZXcgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLmV4
ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpICsg
IiAoa2V5IFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1Qg
UkVQTEFDRSx2YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSB0YWJsZSAlcyBpbiBk
YXRhYmFzZSAlcyIsIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBkYXRh
YmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIGhh
bmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rp
b24ucm9sbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9z
ZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWdldFZlcnNpb25Gcm9tRGF0YWJh
c2UoY3VycmVudFZlcnNpb24pKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFnZXRWZXJzaW9u
RnJvbURhdGFiYXNlKGN1cnJlbnRWZXJzaW9uLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBnZXQgY3VycmVudCB2ZXJzaW9uIGZyb20gZGF0YWJhc2UgJXMi
LCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBoYW5k
bGUgdG8gdGhlIGRhdGFiYXNlIGZpbGUuCisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9s
bGJhY2soKTsKICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBp
ZiAoY3VycmVudFZlcnNpb24ubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIlJldHJpZXZlZCBjdXJyZW50IHZlcnNpb24gJXMgZnJvbSBkYXRhYmFzZSAlcyIsIGN1
cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCku
ZGF0YSgpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW1fbmV3IHx8IHNob3VsZFNldFZlcnNp
b25Jbk5ld0RhdGFiYXNlKSB7CiAgICAgICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTZXR0
aW5nIHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgJXMgdGhhdCB3YXMganVzdCBjcmVhdGVkIiwgbV9l
eHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIGlmICghc2V0VmVyc2lvbkluRGF0YWJhc2UobV9l
eHBlY3RlZFZlcnNpb24pKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzZXRWZXJzaW9uSW5EYXRh
YmFzZShtX2V4cGVjdGVkVmVyc2lvbiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICVzIiwgbV9leHBl
Y3RlZFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAg
ICAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxl
LgorICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAg
ICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY3VycmVu
dFZlcnNpb24gPSBtX2V4cGVjdGVkVmVyc2lvbjsKICAgICAgICAgICAgIH0KLQogICAgICAgICAg
ICAgdXBkYXRlR3VpZFZlcnNpb25NYXAobV9ndWlkLCBjdXJyZW50VmVyc2lvbik7CisgICAgICAg
ICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzE0LDEz
ICszNDEsMTggQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAg
ICAgICBMT0coU3RvcmFnZUFQSSwgInBhZ2UgZXhwZWN0cyB2ZXJzaW9uICVzIGZyb20gZGF0YWJh
c2UgJXMsIHdoaWNoIGFjdHVhbGx5IGhhcyB2ZXJzaW9uIG5hbWUgJXMgLSBvcGVuRGF0YWJhc2Uo
KSBjYWxsIHdpbGwgZmFpbCIsIG1fZXhwZWN0ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLAogICAg
ICAgICAgICAgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSwgY3VycmVudFZlcnNp
b24uYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAg
ICAgICAvLyBDbG9zZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxlLgogICAgICAgICBt
X3NxbGl0ZURhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBBU1NFUlQobV9kYXRhYmFzZUF1dGhvcml6ZXIpOworICAgIG1fc3FsaXRlRGF0YWJhc2Uu
c2V0QXV0aG9yaXplcihtX2RhdGFiYXNlQXV0aG9yaXplcik7CisKICAgICBtX29wZW5lZCA9IHRy
dWU7CiAKKyAgICBpZiAobV9uZXcgJiYgIXNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQor
ICAgICAgICBtX2V4cGVjdGVkVmVyc2lvbiA9ICIiOyAvLyBUaGUgY2FsbGVyIHByb3ZpZGVkIGEg
Y3JlYXRpb25DYWxsYmFjayB3aGljaCB3aWxsIHNldCB0aGUgZXhwZWN0ZWQgdmVyc2lvbi4KKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNjQsMTQgKzM5NiwxNyBAQCBjb25zdCBTdHJpbmcm
IEFic3RyYWN0RGF0YWJhc2U6OmRhdGFiYXNlCiAgICAgcmV0dXJuIGtleTsKIH0KIAotYm9vbCBB
YnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYgdmVyc2lvbikK
K2Jvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZl
cnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9uKQogewogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBnZXRWZXJzaW9uUXVlcnksICgiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFi
YXNlSW5mb1RhYmxlTmFtZSgpICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktl
eSgpICsgIic7IikpOwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmRpc2FibGUoKTsKIAog
ICAgIGJvb2wgcmVzdWx0ID0gcmV0cmlldmVUZXh0UmVzdWx0RnJvbURhdGFiYXNlKG1fc3FsaXRl
RGF0YWJhc2UsIGdldFZlcnNpb25RdWVyeS50aHJlYWRzYWZlQ29weSgpLCB2ZXJzaW9uKTsKLSAg
ICBpZiAoIXJlc3VsdCkKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGlmIChzaG91bGRDYWNo
ZVZlcnNpb24pCisgICAgICAgICAgICBzZXRDYWNoZWRWZXJzaW9uKHZlcnNpb24pOworICAgIH0g
ZWxzZQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSB2ZXJzaW9uIGZyb20g
ZGF0YWJhc2UgJXMiLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAg
IG1fZGF0YWJhc2VBdXRob3JpemVyLT5lbmFibGUoKTsKQEAgLTM3OSw3ICs0MTQsNyBAQCBib29s
IEFic3RyYWN0RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25zdCBT
dHJpbmcmIHZlcnNpb24pCitib29sIEFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFi
YXNlKGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24pCiB7CiAg
ICAgLy8gVGhlIElOU0VSVCB3aWxsIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgZm9yIHRoZSBk
YXRhYmFzZSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBudW1iZXIsIGR1ZSB0byB0aGUgVU5JUVVFIE9O
IENPTkZMSUNUIFJFUExBQ0UKICAgICAvLyBjbGF1c2UgaW4gdGhlIENSRUFURSBzdGF0ZW1lbnQg
KHNlZSBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoKSkuCkBAIC0zODgsNyArNDIzLDEw
IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lvbkluRGF0YWIKICAgICBtX2RhdGFi
YXNlQXV0aG9yaXplci0+ZGlzYWJsZSgpOwogCiAgICAgYm9vbCByZXN1bHQgPSBzZXRUZXh0VmFs
dWVJbkRhdGFiYXNlKG1fc3FsaXRlRGF0YWJhc2UsIHNldFZlcnNpb25RdWVyeS50aHJlYWRzYWZl
Q29weSgpLCB2ZXJzaW9uKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBpZiAocmVzdWx0KSB7Cisg
ICAgICAgIGlmIChzaG91bGRDYWNoZVZlcnNpb24pCisgICAgICAgICAgICBzZXRDYWNoZWRWZXJz
aW9uKHZlcnNpb24pOworICAgIH0gZWxzZQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBz
ZXQgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAoJXMpIiwgdmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwg
c2V0VmVyc2lvblF1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIG1fZGF0YWJhc2VBdXRob3Jp
emVyLT5lbmFibGUoKTsKQEAgLTM5NiwyMiArNDM0LDM1IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFz
ZTo6c2V0VmVyc2lvbkluRGF0YWIKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEFic3Ry
YWN0RGF0YWJhc2U6OnZlcnNpb25NYXRjaGVzRXhwZWN0ZWQoKSBjb25zdAordm9pZCBBYnN0cmFj
dERhdGFiYXNlOjpzZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogewot
ICAgIGlmICghbV9leHBlY3RlZFZlcnNpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihndWlkTXV0ZXgoKSk7Ci0gICAgICAgIHJldHVybiBtX2V4cGVjdGVkVmVyc2lv
biA9PSBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCk7Ci0gICAgfQorICAgIG1fZXhwZWN0
ZWRWZXJzaW9uID0gdmVyc2lvbi50aHJlYWRzYWZlQ29weSgpOworfQogCi0gICAgcmV0dXJuIHRy
dWU7CitTdHJpbmcgQWJzdHJhY3REYXRhYmFzZTo6Z2V0Q2FjaGVkVmVyc2lvbigpIGNvbnN0Cit7
CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKKyAgICByZXR1cm4gZ3VpZFRv
VmVyc2lvbk1hcCgpLmdldChtX2d1aWQpLnRocmVhZHNhZmVDb3B5KCk7CiB9CiAKLXZvaWQgQWJz
dHJhY3REYXRhYmFzZTo6c2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikK
K3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6c2V0Q2FjaGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIGFj
dHVhbFZlcnNpb24pCiB7Ci0gICAgbV9leHBlY3RlZFZlcnNpb24gPSB2ZXJzaW9uLnRocmVhZHNh
ZmVDb3B5KCk7CiAgICAgLy8gVXBkYXRlIHRoZSBpbiBtZW1vcnkgZGF0YWJhc2UgdmVyc2lvbiBt
YXAuCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLSAgICB1cGRhdGVHdWlk
VmVyc2lvbk1hcChtX2d1aWQsIHZlcnNpb24pOworICAgIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKG1f
Z3VpZCwgYWN0dWFsVmVyc2lvbik7Cit9CisKK2Jvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0QWN0
dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyAmYWN0dWFsVmVyc2lvbikKK3sKKyAgICBB
U1NFUlQobV9zcWxpdGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2VzcyBicm93c2VycyB0
aGUgY2FjaGVkIHZhbHVlIG1heSBiZSBpbmFjY3VyYXRlLgorICAgIC8vIFNvIHdlIHJldHJpZXZl
IHRoZSB2YWx1ZSBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdXBkYXRlIHRoZSBjYWNoZWQgdmFsdWUg
aGVyZS4KKyAgICByZXR1cm4gZ2V0VmVyc2lvbkZyb21EYXRhYmFzZShhY3R1YWxWZXJzaW9uLCB0
cnVlKTsKKyNlbHNlCisgICAgYWN0dWFsVmVyc2lvbiA9IGdldENhY2hlZFZlcnNpb24oKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQogCiB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OmRpc2Fi
bGVBdXRob3JpemVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRh
YmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJhY3REYXRh
YmFzZS5oCShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMiArNzEsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnRlcnJ1cHQoKTsKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKTsKIAotICAgIC8v
IEZJWE1FOiBtb3ZlIGFsbCB2ZXJzaW9uLXJlbGF0ZWQgbWV0aG9kcyB0byBhIERhdGFiYXNlVmVy
c2lvblRyYWNrZXIgY2xhc3MKLSAgICBib29sIHZlcnNpb25NYXRjaGVzRXhwZWN0ZWQoKSBjb25z
dDsKLSAgICB2b2lkIHNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24pOwot
ICAgIGJvb2wgZ2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24pOwotICAgIGJv
b2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKTsKLQogICAgIHZv
aWQgZGlzYWJsZUF1dGhvcml6ZXIoKTsKICAgICB2b2lkIGVuYWJsZUF1dGhvcml6ZXIoKTsKICAg
ICB2b2lkIHNldEF1dGhvcml6ZXJSZWFkT25seSgpOwpAQCAtOTEsNiArODUsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5KCkgPSAwOwogCiBwcm90ZWN0ZWQ6
CisgICAgZnJpZW5kIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luYzsKKyAgICBmcmllbmQgY2xhc3Mg
U1FMVHJhbnNhY3Rpb247CisgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFwcGVyOwor
CiAgICAgQWJzdHJhY3REYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwKICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVk
U2l6ZSk7CiAKQEAgLTk4LDYgKzk2LDE0IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgYm9v
bCBwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKKyAgICBib29sIGdldFZlcnNpb25Gcm9tRGF0YWJhc2Uo
U3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3VsZENhY2hlVmVyc2lvbiA9IHRydWUpOworICAgIGJv
b2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3Vs
ZENhY2hlVmVyc2lvbiA9IHRydWUpOworICAgIHZvaWQgc2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0
IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBlY3RlZFZlcnNpb247IH0KKyAgICBTdHJpbmcgZ2V0Q2FjaGVkVmVyc2lvbigp
Y29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYpOworICAgIGJv
b2wgZ2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKFN0cmluZyYgdmVyc2lvbik7CisKICAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKIAogICAgIFJl
ZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNw
cAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNp
b25XcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMTEgQEAgYm9vbCBDaGFu
Z2VWZXJzaW9uV3JhcHBlcjo6cGVyZm9ybVBvc3RmbAogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIENoYW5nZVZlcnNpb25XcmFwcGVyOjpoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGln
aHQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQoreworICAgIHRyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpLT5zZXRDYWNoZWRWZXJzaW9uKG1fb2xkVmVyc2lvbik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmgJKHJldmlzaW9uIDkyMTM4
KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBw
ZXJmb3JtUHJlZmxpZ2h0KFNRTFRyYW5zYWN0aW9uKik7CiAgICAgdmlydHVhbCBib29sIHBlcmZv
cm1Qb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uKik7Ci0KICAgICB2aXJ0dWFsIFNRTEVycm9yKiBz
cWxFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3FsRXJyb3IuZ2V0KCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uKik7
CiAKIHByaXZhdGU6CiAgICAgQ2hhbmdlVmVyc2lvbldyYXBwZXIoY29uc3QgU3RyaW5nJiBvbGRW
ZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDkyMTM4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxMiArMTA5LDcgQEAgUGFzc1Jl
ZlB0cjxEYXRhYmFzZT4gRGF0YWJhc2U6Om9wZW5EYXRhYgogCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uKTsKIAotICAgIC8v
IElmIGl0J3MgYSBuZXcgZGF0YWJhc2UgYW5kIGEgY3JlYXRpb24gY2FsbGJhY2sgd2FzIHByb3Zp
ZGVkLCByZXNldCB0aGUgZXhwZWN0ZWQKLSAgICAvLyB2ZXJzaW9uIHRvICIiIGFuZCBzY2hlZHVs
ZSB0aGUgY3JlYXRpb24gY2FsbGJhY2suIEJlY2F1c2Ugb2Ygc29tZSBzdWJ0bGUgU3RyaW5nCi0g
ICAgLy8gaW1wbGVtZW50YXRpb24gaXNzdWVzLCB3ZSBoYXZlIHRvIHJlc2V0IG1fZXhwZWN0ZWRW
ZXJzaW9uIGhlcmUgaW5zdGVhZCBvZiBkb2luZwotICAgIC8vIGl0IGluc2lkZSBwZXJmb3JtT3Bl
bkFuZFZlcmlmeSgpIHdoaWNoIGlzIHJ1biBvbiB0aGUgREIgdGhyZWFkLgogICAgIGlmIChkYXRh
YmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7Ci0gICAgICAgIGRhdGFi
YXNlLT5tX2V4cGVjdGVkVmVyc2lvbiA9ICIiOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNj
aGVkdWxpbmcgRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzayBmb3IgZGF0YWJhc2UgJXBcbiIs
IGRhdGFiYXNlLmdldCgpKTsKICAgICAgICAgZGF0YWJhc2UtPm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soRGF0YWJhc2VDcmVhdGlvbkNhbGxiYWNrVGFzazo6Y3JlYXRlKGRhdGFi
YXNlLCBjcmVhdGlvbkNhbGxiYWNrKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAg
UGFzc1JlZlB0cjxEYXRhYmFzZVN5bmM+IERhdGFiYXNlU3luYzo6bwogICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlRGV0YWlscyhjb250ZXh0LT5zZWN1cml0eU9yaWdp
bigpLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiAKICAgICBpZiAoZGF0YWJh
c2UtPmlzTmV3KCkgJiYgY3JlYXRpb25DYWxsYmFjay5nZXQoKSkgewotICAgICAgICBkYXRhYmFz
ZS0+bV9leHBlY3RlZFZlcnNpb24gPSAiIjsKICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJJbnZv
a2luZyB0aGUgY3JlYXRpb24gY2FsbGJhY2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFzZS5n
ZXQoKSk7CiAgICAgICAgIGNyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGFiYXNlLmdl
dCgpKTsKICAgICB9CkBAIC0xMjMsOCArMTIyLDEwIEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFu
Z2VWZXJzaW9uKGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICgoZWMg
PSB0cmFuc2FjdGlvbi0+Y29tbWl0KCkpKQorICAgIGlmICgoZWMgPSB0cmFuc2FjdGlvbi0+Y29t
bWl0KCkpKSB7CisgICAgICAgIHNldENhY2hlZFZlcnNpb24ob2xkVmVyc2lvbik7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBzZXRFeHBlY3RlZFZlcnNpb24obmV3VmVyc2lvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNp
b24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNh
Y3Rpb24oRGF0YWJhc2UqCiAgICAgLCBtX21vZGlmaWVkRGF0YWJhc2UoZmFsc2UpCiAgICAgLCBt
X2xvY2tBY3F1aXJlZChmYWxzZSkKICAgICAsIG1fcmVhZE9ubHkocmVhZE9ubHkpCisgICAgLCBt
X2hhc1ZlcnNpb25NaXNtYXRjaChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZSk7CiB9
CkBAIC0xMDUsOSArMTA2LDYgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTChjb25z
dCBTdAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVudC0+
c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKIAotICAgIGlmICghbV9kYXRhYmFzZS0+dmVyc2lv
bk1hdGNoZXNFeHBlY3RlZCgpKQotICAgICAgICBzdGF0ZW1lbnQtPnNldFZlcnNpb25NaXNtYXRj
aGVkRXJyb3IoKTsKLQogICAgIGVucXVldWVTdGF0ZW1lbnQoc3RhdGVtZW50KTsKIH0KIApAQCAt
MjcyLDkgKzI3MCwyNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQ
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBOb3RlOiBXZSBpbnRlbnRpb25hbGx5
IHJldHJpZXZlIHRoZSBhY3R1YWwgdmVyc2lvbiBldmVuIHdpdGggYW4gZW1wdHkgZXhwZWN0ZWQg
dmVyc2lvbi4KKyAgICAvLyBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJzLCB3ZSB0YWtlIHRoaXMg
b3Bwb3J0aW51dGl5IHRvIHVwZGF0ZSB0aGUgY2FjaGVkIHZhbHVlIGZvcgorICAgIC8vIHRoZSBh
Y3R1YWwgdmVyc2lvbi4gSW4gc2luZ2xlLXByb2Nlc3MgYnJvd3NlcnMsIHRoaXMgaXMganVzdCBh
IG1hcCBsb29rdXAuCisgICAgU3RyaW5nIGFjdHVhbFZlcnNpb247CisgICAgaWYgKCFtX2RhdGFi
YXNlLT5nZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oYWN0dWFsVmVyc2lvbikpIHsKKyAg
ICAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1dGhvcml6ZXIoKTsKKyAgICAgICAgbV9zcWxpdGVU
cmFuc2FjdGlvbi5jbGVhcigpOworICAgICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVy
KCk7CisgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJy
b3I6OkRBVEFCQVNFX0VSUiwgInVuYWJsZSB0byByZWFkIHZlcnNpb24iKTsKKyAgICAgICAgaGFu
ZGxlVHJhbnNhY3Rpb25FcnJvcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bV9oYXNWZXJzaW9uTWlzbWF0Y2ggPSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNF
bXB0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0
ZWRWZXJzaW9uKCkgIT0gYWN0dWFsVmVyc2lvbik7CisKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVw
cyAzIC0gUGVmb3JtIHByZWZsaWdodCBzdGVwcywganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJh
Y2sgaWYgdGhleSBmYWlsCiAgICAgaWYgKG1fd3JhcHBlciAmJiAhbV93cmFwcGVyLT5wZXJmb3Jt
UHJlZmxpZ2h0KHRoaXMpKSB7CisgICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVBdXRob3JpemVy
KCk7CiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgbV9kYXRh
YmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOwogICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBt
X3dyYXBwZXItPnNxbEVycm9yKCk7CiAgICAgICAgIGlmICghbV90cmFuc2FjdGlvbkVycm9yKQog
ICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJv
cjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3VyZWQgc2V0dGluZyB1cCB0cmFuc2Fj
dGlvbiIpOwpAQCAtMzY5LDYgKzM4NCw5IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJl
bnRTdGF0ZW1lbnQKIAogICAgIG1fZGF0YWJhc2UtPnJlc2V0QXV0aG9yaXplcigpOwogCisgICAg
aWYgKG1faGFzVmVyc2lvbk1pc21hdGNoKQorICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnQtPnNl
dFZlcnNpb25NaXNtYXRjaGVkRXJyb3IoKTsKKwogICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQt
PmV4ZWN1dGUobV9kYXRhYmFzZS5nZXQoKSkpIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UtPmxh
c3RBY3Rpb25DaGFuZ2VkRGF0YWJhc2UoKSkgewogICAgICAgICAgICAgLy8gRmxhZyB0aGlzIHRy
YW5zYWN0aW9uIGFzIGhhdmluZyBjaGFuZ2VkIHRoZSBkYXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdh
dGUgbm90aWZpY2F0aW9uCkBAIC00NjUsNiArNDgzLDggQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6
cG9zdGZsaWdodEFuZENvbW1pdAogCiAgICAgLy8gSWYgdGhlIGNvbW1pdCBmYWlsZWQsIHRoZSB0
cmFuc2FjdGlvbiB3aWxsIHN0aWxsIGJlIG1hcmtlZCBhcyAiaW4gcHJvZ3Jlc3MiCiAgICAgaWYg
KG1fc3FsaXRlVHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgeworICAgICAgICBpZiAobV93cmFw
cGVyKQorICAgICAgICAgICAgbV93cmFwcGVyLT5oYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3Rm
bGlnaHQodGhpcyk7CiAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrV3JhcHBlci5jbGVhcigpOwog
ICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpE
QVRBQkFTRV9FUlIsICJmYWlsZWQgdG8gY29tbWl0IHRoZSB0cmFuc2FjdGlvbiIpOwogICAgICAg
ICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDkyMTM4KQorKysgU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TUUxUcmFuc2FjdGlvbldyYXBwZXIoKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVByZWZsaWdodChTUUxUcmFuc2FjdGlvbiopID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rpb24qKSA9IDA7Ci0KICAg
ICB2aXJ0dWFsIFNRTEVycm9yKiBzcWxFcnJvcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KFNRTFRyYW5zYWN0aW9uKikgPSAw
OwogfTsKIAogY2xhc3MgU1FMVHJhbnNhY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U1FMVHJhbnNhY3Rpb24+IHsKQEAgLTEyMyw2ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9tb2RpZmllZERhdGFiYXNlOwogICAgIGJvb2wgbV9sb2NrQWNxdWlyZWQ7CiAgICAgYm9v
bCBtX3JlYWRPbmx5OworICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlzbWF0Y2g7CiAKICAgICBNdXRl
eCBtX3N0YXRlbWVudE11dGV4OwogICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0ZW1lbnQ+ID4gbV9z
dGF0ZW1lbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25TeW5jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uU3luYy5jcHAJKHJldmlzaW9uIDkyMTM4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBA
IFNRTFRyYW5zYWN0aW9uU3luYzo6U1FMVHJhbnNhY3Rpb25TeW5jKEQKICAgICA6IG1fZGF0YWJh
c2UoZGIpCiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV9yZWFkT25seShyZWFk
T25seSkKKyAgICAsIG1faGFzVmVyc2lvbk1pc21hdGNoKGZhbHNlKQogICAgICwgbV9tb2RpZmll
ZERhdGFiYXNlKGZhbHNlKQogICAgICwgbV90cmFuc2FjdGlvbkNsaWVudChhZG9wdFB0cihuZXcg
U1FMVHJhbnNhY3Rpb25DbGllbnQoKSkpCiB7CkBAIC03OSw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8
U1FMUmVzdWx0U2V0PiBTUUxUcmFuc2FjdGlvblMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgaWYgKCFtX2RhdGFiYXNlLT52ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkpIHsKKyAgICBp
ZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpIHsKICAgICAgICAgZWMgPSBTUUxFeGNlcHRpb246OlZF
UlNJT05fRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNTAsNiArMTUxLDE2IEBA
IEV4Y2VwdGlvbkNvZGUgU1FMVHJhbnNhY3Rpb25TeW5jOjpiZWdpbigKICAgICAgICAgcmV0dXJu
IFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJSOwogICAgIH0KIAorICAgIC8vIE5vdGU6IFdlIGlu
dGVudGlvbmFsbHkgcmV0cmlldmUgdGhlIGFjdHVhbCB2ZXJzaW9uIGV2ZW4gd2l0aCBhbiBlbXB0
eSBleHBlY3RlZCB2ZXJzaW9uLgorICAgIC8vIEluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMsIHdl
IHRha2UgdGhpcyBvcHBvcnRpbnV0aXkgdG8gdXBkYXRlIHRoZSBjYWNoZWQgdmFsdWUgZm9yCisg
ICAgLy8gdGhlIGFjdHVhbCB2ZXJzaW9uLiBJbiBzaW5nbGUtcHJvY2VzcyBicm93c2VycywgdGhp
cyBpcyBqdXN0IGEgbWFwIGxvb2t1cC4KKyAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKKyAgICBp
ZiAoIW1fZGF0YWJhc2UtPmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihhY3R1YWxWZXJz
aW9uKSkgeworICAgICAgICByb2xsYmFjaygpOworICAgICAgICByZXR1cm4gU1FMRXhjZXB0aW9u
OjpEQVRBQkFTRV9FUlI7CisgICAgfQorICAgIG1faGFzVmVyc2lvbk1pc21hdGNoID0gIW1fZGF0
YWJhc2UtPmV4cGVjdGVkVmVyc2lvbigpLmlzRW1wdHkoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJiYgKG1fZGF0YWJhc2UtPmV4cGVjdGVkVmVyc2lvbigpICE9IGFjdHVhbFZlcnNpb24p
OwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFRy
YW5zYWN0aW9uU3luYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25TeW5jLmgJKHJldmlzaW9uIDkyMTM4KQorKysgU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBA
QAogI2lmIEVOQUJMRShEQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC03MCw2
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERhdGFiYXNlU3luYz4gbV9kYXRhYmFzZTsK
ICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CiAgICAg
Ym9vbCBtX3JlYWRPbmx5OworICAgIGJvb2wgbV9oYXNWZXJzaW9uTWlzbWF0Y2g7CiAKICAgICBi
b29sIG1fbW9kaWZpZWREYXRhYmFzZTsKICAgICBPd25QdHI8U1FMVHJhbnNhY3Rpb25DbGllbnQ+
IG1fdHJhbnNhY3Rpb25DbGllbnQ7Cg==
</data>
<flag name="commit-queue"
          id="97856"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102577</attachid>
            <date>2011-08-01 15:45:07 -0700</date>
            <delta_ts>2011-08-01 16:03:21 -0700</delta_ts>
            <desc>version handling - fix unused local var error</desc>
            <filename>version3.txt</filename>
            <type>text/plain</type>
            <size>23799</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMTQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDgtMDEgIE1pY2hhZWwg
Tm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgW0Nocm9taXVtXSBXZWJT
UUxEYXRhYmFzZSB2ZXJzaW9uIGhhbmRsaW5nIGlzIGJyb2tlbiBpbiBtdWx0aS1wcm9jZXNzIGJy
b3dzZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU0ODYKKworICAgICAgICBUaGUgV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZSBjbGFzcyBtYWlu
dGFpbnMgYSBnbG9iYWwgaW4tbWVtb3J5IG1hcCBvZgorICAgICAgICB0aGUgdmVyc2lvbiBudW1i
ZXJzIGFzc29jaWF0ZWQgd2l0aCBvcGVuIGRhdGFiYXNlIGZpbGVzLCBidXQgdGhhdCBtYXAgaXMK
KyAgICAgICAgbm90IHJlbGlhYmxlIGluIGEgbXVsdGktcHJvY2VzcyBzeXN0ZW0gbGlrZSBDaHJv
bWUuIFNvIGluc3RlYWQgb2YgcmVseWluZworICAgICAgICBvbiB0aGUgY2FjaGVkIHZhbHVlcyBp
biB0aGF0IG1hcCwgd2UgcmVhZCB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YWJhc2UgKGFuZAorICAg
ICAgICB1cGRhdGUgdGhlIGNhY2hlZCB2YWx1ZSkgd2hlcmUgcG9zc2libGUuIFRoZXJlIGFyZSB0
d28gZWRnZSBjYXNlcyB3aGVyZSB0aGF0J3MKKyAgICAgICAgbm90IHBvc3NpYmxlIGJlY2F1c2Ug
dGhlIHNjcmlwdGFibGUgaW50ZXJmYWNlIHJlcXVpcmVzIHN5bmNocm9ub3VzIGFjY2VzcworICAg
ICAgICB0byB0aGUgdmVyc2lvbjogdGhlIC52ZXJzaW9uIGF0dHJpYnV0ZSBnZXR0ZXIgYW5kIHRo
ZSAub3BlbkRhdGFiYXNlKCkgbWV0aG9kLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgaGF2
ZSBubyBjaG9pY2UgYnV0IHRvIHVzZSB0aGUgcG90ZW50aWFsbHkgc3RhbGUgY2FjaGVkIHZhbHVl
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cy4gRXhpc3RpbmcgbGF5b3V0IHRlc3RzIGNvdmVyIHRoZSB2ZXJzaW9uIGhhbmRsaW5n
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OnNldENhY2hlZFZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6Z2V0QWN0dWFsVmVyc2lvbkZv
clRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbik6CisgICAg
ICAgICogc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6aGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0
KToKKyAgICAgICAgKiBzdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmg6CisgICAgICAgICog
c3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlU3luYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVN5bmM6Om9wZW5EYXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJl
ZmxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3Rh
dGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICog
c3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJh
bnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25TeW5jOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uU3luYzo6YmVnaW4pOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5j
Lmg6CisKIDIwMTEtMDgtMDEgIFNjb3R0IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIzOTcyNT8pOiBSZXNvdXJjZXMgcmVtb3ZlZCBmcm9tIGRv
Y3VtZW50IGNhbiBub3QgYmUgZnJlZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJz
dHJhY3REYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9B
YnN0cmFjdERhdGFiYXNlLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0Fic3RyYWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgorI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIzNSwxMyArMjM2LDE2
IEBAIHZvaWQgQWJzdHJhY3REYXRhYmFzZTo6Y2xvc2VEYXRhYmFzZSgpCiAKIFN0cmluZyBBYnN0
cmFjdERhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
Z3VpZE11dGV4KCkpOwotICAgIHJldHVybiBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCku
dGhyZWFkc2FmZUNvcHkoKTsKKyAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dzZXJz
IHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGFjY3VyYXRlLCBidXQgd2UgY2Fubm90IHJlYWQgdGhl
CisgICAgLy8gYWN0dWFsIHZlcnNpb24gZnJvbSB0aGUgZGF0YWJhc2Ugd2l0aG91dCBwb3RlbnRp
YWxseSBpbmR1Y2luZyBhIGRlYWRsb2NrLgorICAgIC8vIEZJWE1FOiBBZGQgYW4gYXN5bmMgdmVy
c2lvbiBnZXR0ZXIgdG8gdGhlIERhdGFiYXNlQVBJLgorICAgIHJldHVybiBnZXRDYWNoZWRWZXJz
aW9uKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBpbnQgbWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAw
MDA7CiBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hv
dWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGNv
bnN0IGludCBtYXhTcWxpdGVCdXN5V2FpdFRpbWUgPSAzMDAwMDsKKwogICAgIGlmICghbV9zcWxp
dGVEYXRhYmFzZS5vcGVuKG1fZmlsZW5hbWUsIHRydWUpKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UgYXQgcGF0aCAlcyIsIG1fZmlsZW5hbWUuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMjUwLDggKzI1NCw2
IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXIKICAgICBpZiAoIW1f
c3FsaXRlRGF0YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtKCkpCiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHR1cm4gb24gaW5jcmVtZW50YWwgYXV0by12YWN1dW0gZm9yIGRh
dGFiYXNlICVzIiwgbV9maWxlbmFtZS5hc2NpaSgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQobV9k
YXRhYmFzZUF1dGhvcml6ZXIpOwotICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0QXV0aG9yaXplciht
X2RhdGFiYXNlQXV0aG9yaXplcik7CiAgICAgbV9zcWxpdGVEYXRhYmFzZS5zZXRCdXN5VGltZW91
dChtYXhTcWxpdGVCdXN5V2FpdFRpbWUpOwogCiAgICAgU3RyaW5nIGN1cnJlbnRWZXJzaW9uOwpA
QCAtMjYzLDQzICsyNjUsNjggQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFu
ZFZlcgogICAgICAgICAgICAgLy8gTWFwIG51bGwgc3RyaW5nIHRvIGVtcHR5IHN0cmluZyAoc2Vl
IHVwZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgogICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBl
bnRyeS0+c2Vjb25kLmlzTnVsbCgpID8gU3RyaW5nKCIiKSA6IGVudHJ5LT5zZWNvbmQ7CiAgICAg
ICAgICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnJlbnQgY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQg
JWkgaXMgJXMiLCBtX2d1aWQsIGN1cnJlbnRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpKTsKKworI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICAgICAgLy8gTm90ZTogSW4gbXVsdGktcHJvY2Vz
cyBicm93c2VycyB0aGUgY2FjaGVkIHZhbHVlIG1heSBiZSBpbmFjY3VyYXRlLCBidXQKKyAgICAg
ICAgICAgIC8vIHdlIGNhbm5vdCByZWFkIHRoZSBhY3R1YWwgdmVyc2lvbiBmcm9tIHRoZSBkYXRh
YmFzZSB3aXRob3V0IHBvdGVudGlhbGx5CisgICAgICAgICAgICAvLyBpbmR1Y2luZyBhIGZvcm0g
b2YgZGVhZGxvY2ssIGEgYnVzeXRpbWVvdXQgZXJyb3Igd2hlbiB0cnlpbmcgdG8KKyAgICAgICAg
ICAgIC8vIGFjY2VzcyB0aGUgZGF0YWJhc2UuIFNvIHdlJ2xsIHVzZSB0aGUgY2FjaGVkIHZhbHVl
IGlmIHdlJ3JlIGFibGUgdG8gcmVhZAorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIHdpdGhvdXQg
d2FpdGluZywgYW5kIG90aGVyd2lzZSB1c2UgdGhlIGNhY2hlZCB2YWx1ZSAod2hpY2ggbWF5IGJl
IG9mZikuCisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGFuIGFzeW5jIG9wZW5EYXRhYmFzZSBt
ZXRob2QgdG8gdGhlIERhdGFiYXNlQVBJLgorICAgICAgICAgICAgY29uc3QgaW50IG5vU3FsaXRl
QnVzeVdhaXRUaW1lID0gMDsKKyAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2Uuc2V0QnVzeVRp
bWVvdXQobm9TcWxpdGVCdXN5V2FpdFRpbWUpOworICAgICAgICAgICAgU3RyaW5nIHZlcnNpb25G
cm9tRGF0YWJhc2U7CisgICAgICAgICAgICBpZiAoZ2V0VmVyc2lvbkZyb21EYXRhYmFzZSh2ZXJz
aW9uRnJvbURhdGFiYXNlLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50VmVyc2lv
biA9IHZlcnNpb25Gcm9tRGF0YWJhc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlR3VpZFZlcnNp
b25NYXAobV9ndWlkLCBjdXJyZW50VmVyc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX3NxbGl0ZURhdGFiYXNlLnNldEJ1c3lUaW1lb3V0KG1heFNxbGl0ZUJ1c3lXYWl0VGltZSk7
CisjZW5kaWYKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAi
Tm8gY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkiLCBtX2d1aWQpOwogCisgICAgICAgICAgICBT
UUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX3NxbGl0ZURhdGFiYXNlKTsKKyAgICAgICAg
ICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uLmlu
UHJvZ3Jlc3MoKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGJlZ2lu
IHRyYW5zYWN0aW9uIHdoaWxlIG9wZW5pbmcgJXMiLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICghbV9zcWxpdGVE
YXRhYmFzZS50YWJsZUV4aXN0cyhkYXRhYmFzZUluZm9UYWJsZU5hbWUoKSkpIHsKICAgICAgICAg
ICAgICAgICBtX25ldyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0
YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSAiICsgZGF0YWJhc2VJbmZvVGFibGVO
YW1lKCkgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBPTiBD
T05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7Iikp
IHsKICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIHRhYmxl
ICVzIGluIGRhdGFiYXNlICVzIiwgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkuYXNjaWkoKS5kYXRh
KCksIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAg
ICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICAgICAgICAgICAgICAvLyBDbG9z
ZSB0aGUgaGFuZGxlIHRvIHRoZSBkYXRhYmFzZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICB0
cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFi
YXNlLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghZ2V0VmVyc2lvbkZy
b21EYXRhYmFzZShjdXJyZW50VmVyc2lvbikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWdl
dFZlcnNpb25Gcm9tRGF0YWJhc2UoY3VycmVudFZlcnNpb24sIGZhbHNlKSkgewogICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGdldCBjdXJyZW50IHZlcnNpb24gZnJvbSBkYXRh
YmFzZSAlcyIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgICAgICAgICAgLy8gQ2xvc2Ug
dGhlIGhhbmRsZSB0byB0aGUgZGF0YWJhc2UgZmlsZS4KKyAgICAgICAgICAgICAgICB0cmFuc2Fj
dGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2Uo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGlmIChjdXJyZW50VmVyc2lvbi5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIExP
RyhTdG9yYWdlQVBJLCAiUmV0cmlldmVkIGN1cnJlbnQgdmVyc2lvbiAlcyBmcm9tIGRhdGFiYXNl
ICVzIiwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlRGVidWdOYW1lKCku
YXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICghbV9uZXcgfHwgc2hvdWxk
U2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpIHsKICAgICAgICAgICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAlcyB0aGF0IHdhcyBqdXN0IGNyZWF0
ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUo
KS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzZXRWZXJzaW9uSW5EYXRh
YmFzZShtX2V4cGVjdGVkVmVyc2lvbikpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXNldFZlcnNp
b25JbkRhdGFiYXNlKG1fZXhwZWN0ZWRWZXJzaW9uLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc2V0IHZlcnNpb24gJXMgaW4gZGF0YWJhc2UgJXMi
LCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBoYW5kbGUgdG8gdGhlIGRhdGFi
YXNlIGZpbGUuCisgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAg
ICAgICAgICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBjdXJyZW50VmVyc2lvbiA9IG1fZXhwZWN0ZWRWZXJzaW9uOwogICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICB1cGRhdGVHdWlkVmVyc2lvbk1hcChtX2d1aWQsIGN1cnJlbnRWZXJzaW9uKTsK
KyAgICAgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0zMTQsMTMgKzM0MSwxOCBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyCiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAicGFnZSBleHBlY3RzIHZlcnNpb24gJXMgZnJv
bSBkYXRhYmFzZSAlcywgd2hpY2ggYWN0dWFsbHkgaGFzIHZlcnNpb24gbmFtZSAlcyAtIG9wZW5E
YXRhYmFzZSgpIGNhbGwgd2lsbCBmYWlsIiwgbV9leHBlY3RlZFZlcnNpb24uYXNjaWkoKS5kYXRh
KCksCiAgICAgICAgICAgICBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpLCBjdXJy
ZW50VmVyc2lvbi5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgIC8vIENsb3NlIHRoZSBoYW5kbGUgdG8gdGhlIGRhdGFiYXNlIGZpbGUuCiAg
ICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAorICAgIEFTU0VSVChtX2RhdGFiYXNlQXV0aG9yaXplcik7CisgICAgbV9zcWxpdGVE
YXRhYmFzZS5zZXRBdXRob3JpemVyKG1fZGF0YWJhc2VBdXRob3JpemVyKTsKKwogICAgIG1fb3Bl
bmVkID0gdHJ1ZTsKIAorICAgIGlmIChtX25ldyAmJiAhc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0
YWJhc2UpCisgICAgICAgIG1fZXhwZWN0ZWRWZXJzaW9uID0gIiI7IC8vIFRoZSBjYWxsZXIgcHJv
dmlkZWQgYSBjcmVhdGlvbkNhbGxiYWNrIHdoaWNoIHdpbGwgc2V0IHRoZSBleHBlY3RlZCB2ZXJz
aW9uLgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM2NCwxNCArMzk2LDE3IEBAIGNvbnN0
IFN0cmluZyYgQWJzdHJhY3REYXRhYmFzZTo6ZGF0YWJhc2UKICAgICByZXR1cm4ga2V5OwogfQog
Ci1ib29sIEFic3RyYWN0RGF0YWJhc2U6OmdldFZlcnNpb25Gcm9tRGF0YWJhc2UoU3RyaW5nJiB2
ZXJzaW9uKQorYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0
cmluZyYgdmVyc2lvbiwgYm9vbCBzaG91bGRDYWNoZVZlcnNpb24pCiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGdldFZlcnNpb25RdWVyeSwgKCJTRUxFQ1QgdmFsdWUgRlJPTSAi
ICsgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCkgKyAiIFdIRVJFIGtleSA9ICciICsgZGF0YWJhc2VW
ZXJzaW9uS2V5KCkgKyAiJzsiKSk7CiAKICAgICBtX2RhdGFiYXNlQXV0aG9yaXplci0+ZGlzYWJs
ZSgpOwogCiAgICAgYm9vbCByZXN1bHQgPSByZXRyaWV2ZVRleHRSZXN1bHRGcm9tRGF0YWJhc2Uo
bV9zcWxpdGVEYXRhYmFzZSwgZ2V0VmVyc2lvblF1ZXJ5LnRocmVhZHNhZmVDb3B5KCksIHZlcnNp
b24pOwotICAgIGlmICghcmVzdWx0KQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKHNo
b3VsZENhY2hlVmVyc2lvbikKKyAgICAgICAgICAgIHNldENhY2hlZFZlcnNpb24odmVyc2lvbik7
CisgICAgfSBlbHNlCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIHZlcnNp
b24gZnJvbSBkYXRhYmFzZSAlcyIsIGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkp
OwogCiAgICAgbV9kYXRhYmFzZUF1dGhvcml6ZXItPmVuYWJsZSgpOwpAQCAtMzc5LDcgKzQxNCw3
IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXQKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1ib29sIEFic3RyYWN0RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNl
KGNvbnN0IFN0cmluZyYgdmVyc2lvbikKK2Jvb2wgQWJzdHJhY3REYXRhYmFzZTo6c2V0VmVyc2lv
bkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBib29sIHNob3VsZENhY2hlVmVyc2lv
bikKIHsKICAgICAvLyBUaGUgSU5TRVJUIHdpbGwgcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSBm
b3IgdGhlIGRhdGFiYXNlIHdpdGggdGhlIG5ldyB2ZXJzaW9uIG51bWJlciwgZHVlIHRvIHRoZSBV
TklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRQogICAgIC8vIGNsYXVzZSBpbiB0aGUgQ1JFQVRFIHN0
YXRlbWVudCAoc2VlIERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSgpKS4KQEAgLTM4OCw3
ICs0MjMsMTAgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpzZXRWZXJzaW9uSW5EYXRhYgogICAg
IG1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAKICAgICBib29sIHJlc3VsdCA9IHNl
dFRleHRWYWx1ZUluRGF0YWJhc2UobV9zcWxpdGVEYXRhYmFzZSwgc2V0VmVyc2lvblF1ZXJ5LnRo
cmVhZHNhZmVDb3B5KCksIHZlcnNpb24pOwotICAgIGlmICghcmVzdWx0KQorICAgIGlmIChyZXN1
bHQpIHsKKyAgICAgICAgaWYgKHNob3VsZENhY2hlVmVyc2lvbikKKyAgICAgICAgICAgIHNldENh
Y2hlZFZlcnNpb24odmVyc2lvbik7CisgICAgfSBlbHNlCiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIHNldCB2ZXJzaW9uICVzIGluIGRhdGFiYXNlICglcykiLCB2ZXJzaW9uLmFzY2lpKCku
ZGF0YSgpLCBzZXRWZXJzaW9uUXVlcnkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgbV9kYXRhYmFz
ZUF1dGhvcml6ZXItPmVuYWJsZSgpOwpAQCAtMzk2LDIyICs0MzQsMzUgQEAgYm9vbCBBYnN0cmFj
dERhdGFiYXNlOjpzZXRWZXJzaW9uSW5EYXRhYgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJv
b2wgQWJzdHJhY3REYXRhYmFzZTo6dmVyc2lvbk1hdGNoZXNFeHBlY3RlZCgpIGNvbnN0Cit2b2lk
IEFic3RyYWN0RGF0YWJhc2U6OnNldEV4cGVjdGVkVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNp
b24pCiB7Ci0gICAgaWYgKCFtX2V4cGVjdGVkVmVyc2lvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKGd1aWRNdXRleCgpKTsKLSAgICAgICAgcmV0dXJuIG1fZXhwZWN0
ZWRWZXJzaW9uID09IGd1aWRUb1ZlcnNpb25NYXAoKS5nZXQobV9ndWlkKTsKLSAgICB9CisgICAg
bV9leHBlY3RlZFZlcnNpb24gPSB2ZXJzaW9uLnRocmVhZHNhZmVDb3B5KCk7Cit9CiAKLSAgICBy
ZXR1cm4gdHJ1ZTsKK1N0cmluZyBBYnN0cmFjdERhdGFiYXNlOjpnZXRDYWNoZWRWZXJzaW9uKCkg
Y29uc3QKK3sKKyAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOworICAgIHJldHVy
biBndWlkVG9WZXJzaW9uTWFwKCkuZ2V0KG1fZ3VpZCkudGhyZWFkc2FmZUNvcHkoKTsKIH0KIAot
dm9pZCBBYnN0cmFjdERhdGFiYXNlOjpzZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpzZXRDYWNoZWRWZXJzaW9uKGNvbnN0IFN0
cmluZyYgYWN0dWFsVmVyc2lvbikKIHsKLSAgICBtX2V4cGVjdGVkVmVyc2lvbiA9IHZlcnNpb24u
dGhyZWFkc2FmZUNvcHkoKTsKICAgICAvLyBVcGRhdGUgdGhlIGluIG1lbW9yeSBkYXRhYmFzZSB2
ZXJzaW9uIG1hcC4KICAgICBNdXRleExvY2tlciBsb2NrZXIoZ3VpZE11dGV4KCkpOwotICAgIHVw
ZGF0ZUd1aWRWZXJzaW9uTWFwKG1fZ3VpZCwgdmVyc2lvbik7CisgICAgdXBkYXRlR3VpZFZlcnNp
b25NYXAobV9ndWlkLCBhY3R1YWxWZXJzaW9uKTsKK30KKworYm9vbCBBYnN0cmFjdERhdGFiYXNl
OjpnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5nICZhY3R1YWxWZXJzaW9uKQor
eworICAgIEFTU0VSVChtX3NxbGl0ZURhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJy
b3dzZXJzIHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUuCisgICAgLy8gU28gd2Ug
cmV0cmlldmUgdGhlIHZhbHVlIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1cGRhdGUgdGhlIGNhY2hl
ZCB2YWx1ZSBoZXJlLgorICAgIHJldHVybiBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKGFjdHVhbFZl
cnNpb24sIHRydWUpOworI2Vsc2UKKyAgICBhY3R1YWxWZXJzaW9uID0gZ2V0Q2FjaGVkVmVyc2lv
bigpOworICAgIHJldHVybiB0cnVlOworI2VuZGlmCiB9CiAKIHZvaWQgQWJzdHJhY3REYXRhYmFz
ZTo6ZGlzYWJsZUF1dGhvcml6ZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmgJKHJldmlzaW9uIDkyMTM4KQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9BYnN0cmFjdERhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDEyICs3MSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGludGVycnVwdCgpOwogICAgIGJvb2wgaXNJbnRlcnJ1cHRlZCgpOwog
Ci0gICAgLy8gRklYTUU6IG1vdmUgYWxsIHZlcnNpb24tcmVsYXRlZCBtZXRob2RzIHRvIGEgRGF0
YWJhc2VWZXJzaW9uVHJhY2tlciBjbGFzcwotICAgIGJvb2wgdmVyc2lvbk1hdGNoZXNFeHBlY3Rl
ZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RXhwZWN0ZWRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVy
c2lvbik7Ci0gICAgYm9vbCBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYgdmVyc2lvbik7
Ci0gICAgYm9vbCBzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24pOwot
CiAgICAgdm9pZCBkaXNhYmxlQXV0aG9yaXplcigpOwogICAgIHZvaWQgZW5hYmxlQXV0aG9yaXpl
cigpOwogICAgIHZvaWQgc2V0QXV0aG9yaXplclJlYWRPbmx5KCk7CkBAIC05MSw2ICs4NSwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW1tZWRpYXRlbHkoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOworICAgIGZyaWVu
ZCBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKKyAgICBmcmllbmQgY2xhc3MgQ2hhbmdlVmVyc2lvbldy
YXBwZXI7CisKICAgICBBYnN0cmFjdERhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBl
c3RpbWF0ZWRTaXplKTsKIApAQCAtOTgsNiArOTYsMTQgQEAgcHJvdGVjdGVkOgogCiAgICAgdmly
dHVhbCBib29sIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3
RGF0YWJhc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIAorICAgIGJvb2wgZ2V0VmVyc2lvbkZyb21E
YXRhYmFzZShTdHJpbmcmIHZlcnNpb24sIGJvb2wgc2hvdWxkQ2FjaGVWZXJzaW9uID0gdHJ1ZSk7
CisgICAgYm9vbCBzZXRWZXJzaW9uSW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24sIGJv
b2wgc2hvdWxkQ2FjaGVWZXJzaW9uID0gdHJ1ZSk7CisgICAgdm9pZCBzZXRFeHBlY3RlZFZlcnNp
b24oY29uc3QgU3RyaW5nJik7CisgICAgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbjsgfQorICAgIFN0cmluZyBnZXRDYWNoZWRW
ZXJzaW9uKCljb25zdDsKKyAgICB2b2lkIHNldENhY2hlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7
CisgICAgYm9vbCBnZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oU3RyaW5nJiB2ZXJzaW9u
KTsKKwogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldy
YXBwZXIuY3BwCShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hh
bmdlVmVyc2lvbldyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCwxMSBAQCBi
b29sIENoYW5nZVZlcnNpb25XcmFwcGVyOjpwZXJmb3JtUG9zdGZsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmhhbmRsZUNvbW1pdEZhaWxlZEFmdGVy
UG9zdGZsaWdodChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCit7CisgICAgdHJhbnNhY3Rp
b24tPmRhdGFiYXNlKCktPnNldENhY2hlZFZlcnNpb24obV9vbGRWZXJzaW9uKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIuaAkocmV2aXNp
b24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0NoYW5nZVZlcnNpb25XcmFwcGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIHBlcmZvcm1QcmVmbGlnaHQoU1FMVHJhbnNhY3Rpb24qKTsKICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybVBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rpb24qKTsKLQogICAgIHZpcnR1YWwgU1FM
RXJyb3IqIHNxbEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9zcWxFcnJvci5nZXQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQoU1FMVHJhbnNh
Y3Rpb24qKTsKIAogcHJpdmF0ZToKICAgICBDaGFuZ2VWZXJzaW9uV3JhcHBlcihjb25zdCBTdHJp
bmcmIG9sZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgbmV3VmVyc2lvbik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEyICsxMDksNyBA
QCBQYXNzUmVmUHRyPERhdGFiYXNlPiBEYXRhYmFzZTo6b3BlbkRhdGFiCiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5EYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpLCBuYW1lLCBleHBlY3RlZFZlcnNpb24pOwog
Ci0gICAgLy8gSWYgaXQncyBhIG5ldyBkYXRhYmFzZSBhbmQgYSBjcmVhdGlvbiBjYWxsYmFjayB3
YXMgcHJvdmlkZWQsIHJlc2V0IHRoZSBleHBlY3RlZAotICAgIC8vIHZlcnNpb24gdG8gIiIgYW5k
IHNjaGVkdWxlIHRoZSBjcmVhdGlvbiBjYWxsYmFjay4gQmVjYXVzZSBvZiBzb21lIHN1YnRsZSBT
dHJpbmcKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiBpc3N1ZXMsIHdlIGhhdmUgdG8gcmVzZXQgbV9l
eHBlY3RlZFZlcnNpb24gaGVyZSBpbnN0ZWFkIG9mIGRvaW5nCi0gICAgLy8gaXQgaW5zaWRlIHBl
cmZvcm1PcGVuQW5kVmVyaWZ5KCkgd2hpY2ggaXMgcnVuIG9uIHRoZSBEQiB0aHJlYWQuCiAgICAg
aWYgKGRhdGFiYXNlLT5pc05ldygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKLSAgICAg
ICAgZGF0YWJhc2UtPm1fZXhwZWN0ZWRWZXJzaW9uID0gIiI7CiAgICAgICAgIExPRyhTdG9yYWdl
QVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFz
ZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRhYmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVh
dGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJhY2spKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlU3luYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyAr
NjcsNiBAQCBQYXNzUmVmUHRyPERhdGFiYXNlU3luYz4gRGF0YWJhc2VTeW5jOjpvCiAgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VEZXRhaWxzKGNvbnRleHQtPnNlY3Vy
aXR5T3JpZ2luKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIAogICAgIGlm
IChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNhbGxiYWNrLmdldCgpKSB7Ci0gICAgICAg
IGRhdGFiYXNlLT5tX2V4cGVjdGVkVmVyc2lvbiA9ICIiOwogICAgICAgICBMT0coU3RvcmFnZUFQ
SSwgIkludm9raW5nIHRoZSBjcmVhdGlvbiBjYWxsYmFjayBmb3IgZGF0YWJhc2UgJXBcbiIsIGRh
dGFiYXNlLmdldCgpKTsKICAgICAgICAgY3JlYXRpb25DYWxsYmFjay0+aGFuZGxlRXZlbnQoZGF0
YWJhc2UuZ2V0KCkpOwogICAgIH0KQEAgLTEyMyw4ICsxMjIsMTAgQEAgdm9pZCBEYXRhYmFzZVN5
bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKChlYyA9IHRyYW5zYWN0aW9uLT5jb21taXQoKSkpCisgICAgaWYgKChlYyA9IHRyYW5zYWN0
aW9uLT5jb21taXQoKSkpIHsKKyAgICAgICAgc2V0Q2FjaGVkVmVyc2lvbihvbGRWZXJzaW9uKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIHNldEV4cGVjdGVkVmVyc2lvbihuZXdWZXJz
aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CShyZXZpc2lvbiA5MjEzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIFNRTFRyYW5zYWN0aW9uOjpT
UUxUcmFuc2FjdGlvbihEYXRhYmFzZSoKICAgICAsIG1fbW9kaWZpZWREYXRhYmFzZShmYWxzZSkK
ICAgICAsIG1fbG9ja0FjcXVpcmVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShyZWFkT25seSkK
KyAgICAsIG1faGFzVmVyc2lvbk1pc21hdGNoKGZhbHNlKQogewogICAgIEFTU0VSVChtX2RhdGFi
YXNlKTsKIH0KQEAgLTEwNSw5ICsxMDYsNiBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpleGVjdXRl
U1FMKGNvbnN0IFN0CiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3Rh
dGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwogCi0gICAgaWYgKCFtX2RhdGFiYXNl
LT52ZXJzaW9uTWF0Y2hlc0V4cGVjdGVkKCkpCi0gICAgICAgIHN0YXRlbWVudC0+c2V0VmVyc2lv
bk1pc21hdGNoZWRFcnJvcigpOwotCiAgICAgZW5xdWV1ZVN0YXRlbWVudChzdGF0ZW1lbnQpOwog
fQogCkBAIC0yNzIsOSArMjcwLDI2IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2Fj
dGlvbkFuZFAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIE5vdGU6IFdlIGludGVu
dGlvbmFsbHkgcmV0cmlldmUgdGhlIGFjdHVhbCB2ZXJzaW9uIGV2ZW4gd2l0aCBhbiBlbXB0eSBl
eHBlY3RlZCB2ZXJzaW9uLgorICAgIC8vIEluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMsIHdlIHRh
a2UgdGhpcyBvcHBvcnRpbnV0aXkgdG8gdXBkYXRlIHRoZSBjYWNoZWQgdmFsdWUgZm9yCisgICAg
Ly8gdGhlIGFjdHVhbCB2ZXJzaW9uLiBJbiBzaW5nbGUtcHJvY2VzcyBicm93c2VycywgdGhpcyBp
cyBqdXN0IGEgbWFwIGxvb2t1cC4KKyAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKKyAgICBpZiAo
IW1fZGF0YWJhc2UtPmdldEFjdHVhbFZlcnNpb25Gb3JUcmFuc2FjdGlvbihhY3R1YWxWZXJzaW9u
KSkgeworICAgICAgICBtX2RhdGFiYXNlLT5kaXNhYmxlQXV0aG9yaXplcigpOworICAgICAgICBt
X3NxbGl0ZVRyYW5zYWN0aW9uLmNsZWFyKCk7CisgICAgICAgIG1fZGF0YWJhc2UtPmVuYWJsZUF1
dGhvcml6ZXIoKTsKKyAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0
ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIHJlYWQgdmVyc2lvbiIpOworICAg
ICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2hhc1ZlcnNpb25NaXNtYXRjaCA9ICFtX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNp
b24oKS5pc0VtcHR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChtX2RhdGFiYXNl
LT5leHBlY3RlZFZlcnNpb24oKSAhPSBhY3R1YWxWZXJzaW9uKTsKKwogICAgIC8vIFRyYW5zYWN0
aW9uIFN0ZXBzIDMgLSBQZWZvcm0gcHJlZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRoZSBlcnJv
ciBjYWxsYmFjayBpZiB0aGV5IGZhaWwKICAgICBpZiAobV93cmFwcGVyICYmICFtX3dyYXBwZXIt
PnBlcmZvcm1QcmVmbGlnaHQodGhpcykpIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+ZGlzYWJsZUF1
dGhvcml6ZXIoKTsKICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5jbGVhcigpOworICAgICAg
ICBtX2RhdGFiYXNlLT5lbmFibGVBdXRob3JpemVyKCk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25F
cnJvciA9IG1fd3JhcHBlci0+c3FsRXJyb3IoKTsKICAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9u
RXJyb3IpCiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRl
KFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJlZCBzZXR0aW5nIHVw
IHRyYW5zYWN0aW9uIik7CkBAIC0zNjksNiArMzg0LDkgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6
cnVuQ3VycmVudFN0YXRlbWVudAogCiAgICAgbV9kYXRhYmFzZS0+cmVzZXRBdXRob3JpemVyKCk7
CiAKKyAgICBpZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpCisgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudC0+c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpOworCiAgICAgaWYgKG1fY3VycmVudFN0
YXRlbWVudC0+ZXhlY3V0ZShtX2RhdGFiYXNlLmdldCgpKSkgewogICAgICAgICBpZiAobV9kYXRh
YmFzZS0+bGFzdEFjdGlvbkNoYW5nZWREYXRhYmFzZSgpKSB7CiAgICAgICAgICAgICAvLyBGbGFn
IHRoaXMgdHJhbnNhY3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQgdGhlIGRhdGFiYXNlIGZvciBsYXRl
ciBkZWxlZ2F0ZSBub3RpZmljYXRpb24KQEAgLTQ2NSw2ICs0ODMsOCBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAKICAgICAvLyBJZiB0aGUgY29tbWl0IGZhaWxl
ZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgc3RpbGwgYmUgbWFya2VkIGFzICJpbiBwcm9ncmVzcyIK
ICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CisgICAgICAgIGlm
IChtX3dyYXBwZXIpCisgICAgICAgICAgICBtX3dyYXBwZXItPmhhbmRsZUNvbW1pdEZhaWxlZEFm
dGVyUG9zdGZsaWdodCh0aGlzKTsKICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2tXcmFwcGVyLmNs
ZWFyKCk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FM
RXJyb3I6OkRBVEFCQVNFX0VSUiwgImZhaWxlZCB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uIik7
CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2UpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDgg
KzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNRTFRyYW5zYWN0aW9uV3JhcHBlcigpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtUHJlZmxpZ2h0KFNRTFRyYW5zYWN0aW9uKikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtUG9zdGZsaWdodChTUUxUcmFuc2FjdGlvbiopID0g
MDsKLQogICAgIHZpcnR1YWwgU1FMRXJyb3IqIHNxbEVycm9yKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVDb21taXRGYWlsZWRBZnRlclBvc3RmbGlnaHQoU1FMVHJhbnNhY3Rp
b24qKSA9IDA7CiB9OwogCiBjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxTUUxUcmFuc2FjdGlvbj4gewpAQCAtMTIzLDYgKzEyMyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX21vZGlmaWVkRGF0YWJhc2U7CiAgICAgYm9vbCBtX2xvY2tBY3F1aXJlZDsK
ICAgICBib29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaDsKIAog
ICAgIE11dGV4IG1fc3RhdGVtZW50TXV0ZXg7CiAgICAgRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVu
dD4gPiBtX3N0YXRlbWVudFF1ZXVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDcgQEAgU1FMVHJhbnNhY3Rpb25TeW5jOjpTUUxUcmFuc2FjdGlvblN5bmMoRAogICAgIDog
bV9kYXRhYmFzZShkYikKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlYWRP
bmx5KHJlYWRPbmx5KQorICAgICwgbV9oYXNWZXJzaW9uTWlzbWF0Y2goZmFsc2UpCiAgICAgLCBt
X21vZGlmaWVkRGF0YWJhc2UoZmFsc2UpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KGFkb3B0
UHRyKG5ldyBTUUxUcmFuc2FjdGlvbkNsaWVudCgpKSkKIHsKQEAgLTc5LDcgKzgwLDcgQEAgUGFz
c1JlZlB0cjxTUUxSZXN1bHRTZXQ+IFNRTFRyYW5zYWN0aW9uUwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJhc2UtPnZlcnNpb25NYXRjaGVzRXhwZWN0ZWQoKSkg
eworICAgIGlmIChtX2hhc1ZlcnNpb25NaXNtYXRjaCkgewogICAgICAgICBlYyA9IFNRTEV4Y2Vw
dGlvbjo6VkVSU0lPTl9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE1MCw2ICsx
NTEsMTYgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2luKAogICAgICAg
ICByZXR1cm4gU1FMRXhjZXB0aW9uOjpEQVRBQkFTRV9FUlI7CiAgICAgfQogCisgICAgLy8gTm90
ZTogV2UgaW50ZW50aW9uYWxseSByZXRyaWV2ZSB0aGUgYWN0dWFsIHZlcnNpb24gZXZlbiB3aXRo
IGFuIGVtcHR5IGV4cGVjdGVkIHZlcnNpb24uCisgICAgLy8gSW4gbXVsdGktcHJvY2VzcyBicm93
c2Vycywgd2UgdGFrZSB0aGlzIG9wcG9ydGludXRpeSB0byB1cGRhdGUgdGhlIGNhY2hlZCB2YWx1
ZSBmb3IKKyAgICAvLyB0aGUgYWN0dWFsIHZlcnNpb24uIEluIHNpbmdsZS1wcm9jZXNzIGJyb3dz
ZXJzLCB0aGlzIGlzIGp1c3QgYSBtYXAgbG9va3VwLgorICAgIFN0cmluZyBhY3R1YWxWZXJzaW9u
OworICAgIGlmICghbV9kYXRhYmFzZS0+Z2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0aW9uKGFj
dHVhbFZlcnNpb24pKSB7CisgICAgICAgIHJvbGxiYWNrKCk7CisgICAgICAgIHJldHVybiBTUUxF
eGNlcHRpb246OkRBVEFCQVNFX0VSUjsKKyAgICB9CisgICAgbV9oYXNWZXJzaW9uTWlzbWF0Y2gg
PSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNFbXB0eSgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkgIT0gYWN0dWFs
VmVyc2lvbik7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25TeW5jLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuaAkocmV2aXNpb24gOTIxMzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uU3luYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiAjaWYgRU5BQkxFKERBVEFCQVNFKQogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTcwLDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RGF0YWJhc2VTeW5jPiBtX2Rh
dGFiYXNlOwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvblN5bmNDYWxsYmFjaz4gbV9jYWxsYmFj
azsKICAgICBib29sIG1fcmVhZE9ubHk7CisgICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaDsK
IAogICAgIGJvb2wgbV9tb2RpZmllZERhdGFiYXNlOwogICAgIE93blB0cjxTUUxUcmFuc2FjdGlv
bkNsaWVudD4gbV90cmFuc2FjdGlvbkNsaWVudDsK
</data>
<flag name="review"
          id="97866"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>