<?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>55765</bug_id>
          
          <creation_ts>2011-03-04 04:23:02 -0800</creation_ts>
          <short_desc>JavaMethod should not expose JavaString in its API</short_desc>
          <delta_ts>2011-04-06 10:39:28 -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>All</rep_platform>
          <op_sys>All</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>
          <dependson>55774</dependson>
    
    <dependson>55966</dependson>
    
    <dependson>55967</dependson>
          <blocked>55383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>362414</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-04 04:23:02 -0800</bug_when>
    <thetext>JavaMethod, which is used by the Java bridge to represent a method of a Java class, uses JavaString for the return value of its name() method. JavaString is a utility class intended to convert from the JNI string type jstring to WTF::String and char*. There&apos;s no need for JavaMethod to expose this utility type in its API. Instead it should just expose WTF::String, using JavaString internally where appropriate.

JavaString exposes JNI types in its API and JavaInstance exposes JavaMethod in its API, so removing JavaString from JavaMethod&apos;s API will allow us to remove the dependency of JavaInstance on JNI types. See Bug 55383.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363939</commentid>
    <comment_count>1</comment_count>
      <attachid>85044</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-08 05:52:53 -0800</bug_when>
    <thetext>Created attachment 85044
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363949</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-03-08 06:58:30 -0800</bug_when>
    <thetext>Looks good but:

&gt;  virtual String name() const = 0;
...
&gt;  virtual const char* signature() const= 0;

Why is one returning a String and the other a char*?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363956</commentid>
    <comment_count>3</comment_count>
      <attachid>85044</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-08 07:24:13 -0800</bug_when>
    <thetext>Comment on attachment 85044
Patch 1

View in context: https://bugs.webkit.org/attachment.cgi?id=85044&amp;action=review

&gt; Source/WebCore/bridge/jni/JavaMethod.h:48
&gt; +    virtual const char* signature() const= 0;

name() used to return const JavaString&amp; but this had to be changed to avoid JNI types in the API. String seems to be the obvious choice instead. I left signature() returning const char* because I wanted to make as few changes as possible. Note that returnType() also returns const char*.

If you think all three should use String, I&apos;m happy to make the change but would rather do so in a separate patch to keep this one as simple as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363968</commentid>
    <comment_count>4</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2011-03-08 08:22:41 -0800</bug_when>
    <thetext>LGTM

(In reply to comment #3)
&gt; (From update of attachment 85044 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85044&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bridge/jni/JavaMethod.h:48
&gt; &gt; +    virtual const char* signature() const= 0;
&gt; 
&gt; name() used to return const JavaString&amp; but this had to be changed to avoid JNI types in the API. String seems to be the obvious choice instead. I left signature() returning const char* because I wanted to make as few changes as possible. Note that returnType() also returns const char*.
&gt; 
&gt; If you think all three should use String, I&apos;m happy to make the change but would rather do so in a separate patch to keep this one as simple as possible.

Fine with doing in a subsequent CL, just wanted to understand why the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364304</commentid>
    <comment_count>5</comment_count>
      <attachid>85044</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-08 21:06:29 -0800</bug_when>
    <thetext>Comment on attachment 85044
Patch 1

View in context: https://bugs.webkit.org/attachment.cgi?id=85044&amp;action=review

rubber stamp = me assuming andrei LGTMs it

&gt;&gt;&gt; Source/WebCore/bridge/jni/JavaMethod.h:48
&gt;&gt;&gt; +    virtual const char* signature() const= 0;
&gt;&gt; 
&gt;&gt; name() used to return const JavaString&amp; but this had to be changed to avoid JNI types in the API. String seems to be the obvious choice instead. I left signature() returning const char* because I wanted to make as few changes as possible. Note that returnType() also returns const char*.
&gt;&gt; 
&gt;&gt; If you think all three should use String, I&apos;m happy to make the change but would rather do so in a separate patch to keep this one as simple as possible.
&gt; 
&gt; Fine with doing in a subsequent CL, just wanted to understand why the difference.

Space before =

&gt; Source/WebCore/bridge/jni/JavaMethod.h:49
&gt; +    virtual JNIType JNIReturnType() const= 0;

Space before =</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>364425</commentid>
    <comment_count>6</comment_count>
      <attachid>85044</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-09 04:29:56 -0800</bug_when>
    <thetext>Comment on attachment 85044
Patch 1

Will fix style and land manually. Also needs rebasing due to Bug 55966 and Bug 55967.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376188</commentid>
    <comment_count>7</comment_count>
      <attachid>87501</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-30 04:33:31 -0700</bug_when>
    <thetext>Created attachment 87501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376192</commentid>
    <comment_count>8</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-03-30 04:44:14 -0700</bug_when>
    <thetext>Attachment 87501 did not build on gtk:
Build output: http://queues.webkit.org/results/8297396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376194</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 04:47:47 -0700</bug_when>
    <thetext>Attachment 87501 did not build on chromium:
Build output: http://queues.webkit.org/results/8297397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376198</commentid>
    <comment_count>10</comment_count>
      <attachid>87504</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-30 04:55:39 -0700</bug_when>
    <thetext>Created attachment 87504
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376213</commentid>
    <comment_count>11</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-30 05:20:06 -0700</bug_when>
    <thetext>&gt; Fine with doing in a subsequent CL, just wanted to understand why the difference.
Filed Bug 57443 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376218</commentid>
    <comment_count>12</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-03-30 05:28:42 -0700</bug_when>
    <thetext>Committed r82423: &lt;http://trac.webkit.org/changeset/82423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376684</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 14:40:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82423 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380584</commentid>
    <comment_count>14</comment_count>
      <attachid>87504</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:39:28 -0700</bug_when>
    <thetext>Comment on attachment 87504
Patch 3

Cleared review? from attachment 87504 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85044</attachid>
            <date>2011-03-08 05:52:53 -0800</date>
            <delta_ts>2011-03-30 04:33:25 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>fixJavaMethod.txt</filename>
            <type>text/plain</type>
            <size>37674</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">Y29tbWl0IGNhY2FhYjBlNzg3YTQ1ZWFlMWY0NjRiYzlhYTU4OWNlMWVhMmI1Y2MKQXV0aG9yOiBT
dGV2ZSBCbG9jayA8c3RldmVibG9ja0Bnb29nbGUuY29tPgpEYXRlOiAgIFR1ZSBNYXIgOCAxMzox
MDo1MSAyMDExICswMDAwCgogICAgRml4IEphdmFNZXRob2QKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5q
c2NiaW5kaW5ncy5tawppbmRleCA0ZmY4ODRjLi41ZTVlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCisrKyBiL1NvdXJjZS9XZWJDb3JlL0FuZHJv
aWQuanNjYmluZGluZ3MubWsKQEAgLTE5OSw3ICsxOTksNyBAQCBMT0NBTF9TUkNfRklMRVMgKz0g
XAogCWJyaWRnZS9jL2NfcnVudGltZS5jcHAgXAogCWJyaWRnZS9jL2NfdXRpbGl0eS5jcHAgXAog
CWJyaWRnZS9qbmkvSk5JVXRpbGl0eS5jcHAgXAotCWJyaWRnZS9qbmkvSmF2YU1ldGhvZC5jcHAg
XAorCWJyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3QuY3BwIFwKIAlicmlkZ2Uvam5pL0pvYmpl
Y3RXcmFwcGVyLmNwcCBcCiAJYnJpZGdlL2puaS9qc2MvSk5JVXRpbGl0eVByaXZhdGUuY3BwIFwK
IAlicmlkZ2Uvam5pL2pzYy9KYXZhQXJyYXlKU0MuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5tayBiL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhi
aW5kaW5ncy5tawppbmRleCA2MmNjY2Y1Li4yZDFmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC52
OGJpbmRpbmdzLm1rCkBAIC0xNzMsNyArMTczLDcgQEAgTE9DQUxfU1JDX0ZJTEVTICs9IFwKIAog
TE9DQUxfU1JDX0ZJTEVTICs9IFwKIAlicmlkZ2Uvam5pL0pOSVV0aWxpdHkuY3BwIFwKLQlicmlk
Z2Uvam5pL0phdmFNZXRob2QuY3BwIFwKKwlicmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNw
cCBcCiAJYnJpZGdlL2puaS9Kb2JqZWN0V3JhcHBlci5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSk5J
VXRpbGl0eVByaXZhdGUuY3BwIFwKIAlicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZDZjNzQ0Ni4uYzI1YmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBA
CisyMDExLTAzLTA4ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKYXZhTWV0aG9kIHNo
b3VsZCBub3QgZXhwb3NlIEphdmFTdHJpbmcgaW4gaXRzIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3NjUKKworICAgICAgICAtIEZhY3RvcnMg
b3V0IGEgSmF2YU1ldGhvZCBpbnRlcmZhY2Ugd2hpY2ggZG9lcyBub3QgdXNlIEpOSSB0eXBlcy4K
KyAgICAgICAgICBUaGlzIHdpbGwgYWxsb3cgdGhlIEphdmEgYnJpZGdlIHRvIGJlIHVzZWQgd2l0
aCBvYmplY3RzIHRoYXQKKyAgICAgICAgICBkb24ndCB1c2UgSk5JIGRpcmVjdGx5LiBUaGUgZXhp
c3Rpbmcgam9iamVjdC1iYWNrZWQKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbiBpcyBtb3ZlZCB0
byBhIG5ldyBKYXZhTWV0aG9kSm9iamVjdCBjbGFzcyB3aGljaAorICAgICAgICAgIGltcGxlbWVu
dHMgdGhlIGludGVyZmFjZS4KKyAgICAgICAgLSBVc2UgV1RGOjpTdHJpbmcgaW4gcGxhY2Ugb2Yg
SmF2YVN0cmluZyBpbiB0aGUgQVBJLCBhcyBKYXZhU3RyaW5nCisgICAgICAgICAgZXhwb3NlcyBK
TkkgdHlwZXMgaW4gaXRzIGludGVyZmFjZS4KKyAgICAgICAgLSBSZW1vdmUgdGhlIG1ldGhvZCBJ
RCBhcyBpdCB1c2VzIEpOSSB0eXBlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9y
aW5nIG9ubHkuCisKKyAgICAgICAgKiBBbmRyb2lkLmpzY2JpbmRpbmdzLm1rOgorICAgICAgICAq
IEFuZHJvaWQudjhiaW5kaW5ncy5tazoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJyaWRnZS9qbmkvSmF2YU1ldGhvZC5oOgorICAgICAgICAqIGJy
aWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3QuY3BwOgorICAgICAgICAoSmF2YU1ldGhvZEpvYmpl
Y3Q6OkphdmFNZXRob2RKb2JqZWN0KToKKyAgICAgICAgKEphdmFNZXRob2RKb2JqZWN0Ojp+SmF2
YU1ldGhvZEpvYmplY3QpOgorICAgICAgICAoYXBwZW5kQ2xhc3NOYW1lKToKKyAgICAgICAgKEph
dmFNZXRob2RKb2JqZWN0OjpzaWduYXR1cmUpOgorICAgICAgICAoSmF2YU1ldGhvZEpvYmplY3Q6
OkpOSVJldHVyblR5cGUpOgorICAgICAgICAqIGJyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3Qu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmguCisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9kSm9iamVjdDo6bmFtZSk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9kSm9iamVjdDo6cmV0dXJuVHlwZSk6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9kSm9iamVjdDo6cGFyYW1ldGVyQXQpOgorICAgICAg
ICAoSlNDOjpCaW5kaW5nczo6SmF2YU1ldGhvZEpvYmplY3Q6OmlzU3RhdGljKToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OkphdmFNZXRob2RKb2JqZWN0OjpudW1QYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwOgorICAgICAgICAoSmF2YUNsYXNz
OjpKYXZhQ2xhc3MpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5j
cHA6CisgICAgICAgIChKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJp
ZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFz
cyk6CisgICAgICAgICogYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHA6CisgICAgICAg
IChKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisKIDIwMTEtMDMtMDggIEFuZHJlYXMgS2xp
bmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29t
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGI3OTdhYzIuLjZkYjZmMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC05NDEsNiArOTQxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL0pOSVV0aWxpdHkuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0
aG9kLmggXAorCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3QuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmggXAogCVNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YVN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL2puaV9qc29iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhQXJyYXlKU0MuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzg1MDljZS4uMTMxOGQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTEzNSw4ICsxMTM1LDkgQEAKICAgICAgICAgICAgICdicmlk
Z2UvQnJpZGdlLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5jcHAnLAog
ICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSk5JVXRpbGl0eS5oJywKLSAgICAgICAgICAgICdicmlk
Z2Uvam5pL0phdmFNZXRob2QuY3BwJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFNZXRo
b2QuaCcsCisgICAgICAgICAgICAnYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAnLAor
ICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3QuaCcsCiAgICAgICAgICAg
ICAnYnJpZGdlL2puaS9KYXZhU3RyaW5nLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSm9i
amVjdFdyYXBwZXIuY3BwJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVy
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQ5Y2UyZWEuLjk0MjhhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzcsMTMgKzEzNzcsMTQgQEAKIAkJ
NTkwRTFCNEIxMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTBF
MUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNw
cCAqLzsgfTsKIAkJNTkzMDlBMTExMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTMwOUExMDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmNwcCAqLzsgfTsKIAkJNTkzMDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTU5M0QzRUFEMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5M0QzRUFDMTMyNTMyODQwMDU3
RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCAqLzsgfTsKIAkJNTkzRDNFQUYxMzI1MzI4QzAwNTdFN0VF
IC8qIEphdmFNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5M0QzRUFFMTMyNTMyOEMwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmggKi87IH07CiAJ
CTU5M0QzRUIxMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTNEM0VCMDEzMjUzMjk1MDA1N0U3RUUg
LyogSmF2YVN0cmluZy5oICovOyB9OwogCQk1OTYyMjk3ODExMzNFRkQ3MDBEQzRDQkIgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU5NjIyOTc3MTEzM0VGRDcwMERDNENCQiAvKiBHZW9sb2NhdGlvblBv
c2l0aW9uQ2FjaGUuY3BwICovOyB9OwogCQk1OTYyMjk3QTExMzNFRkUyMDBEQzRDQkIgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbkNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OTYyMjk3OTExMzNFRkUyMDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTk2OTUwODIxMzIxMDU5OTAwQzNFRDE4IC8qIEpvYmplY3RXcmFwcGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTY5NTA4MTEzMjEwNTk5
MDBDM0VEMTggLyogSm9iamVjdFdyYXBwZXIuaCAqLzsgfTsKIAkJNTk2OTUwODQxMzIxMDVBNTAw
QzNFRDE4IC8qIEpvYmplY3RXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU5Njk1MDgzMTMyMTA1QTUwMEMzRUQxOCAvKiBKb2JqZWN0V3Jh
cHBlci5jcHAgKi87IH07CisJCTU5OEEyQTQ3MTMyNjYyQjQwMDhGMTFENiAvKiBKYXZhTWV0aG9k
Sm9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTk4QTJBNDYxMzI2NjJCNDAwOEYxMUQ2IC8qIEphdmFNZXRob2RKb2JqZWN0LmggKi87IH07CisJ
CTU5OEEyQTQ5MTMyNjYyQzAwMDhGMTFENiAvKiBKYXZhTWV0aG9kSm9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThBMkE0ODEzMjY2MkMw
MDA4RjExRDYgLyogSmF2YU1ldGhvZEpvYmplY3QuY3BwICovOyB9OwogCQk1OThENzdERDEzMjU0
MUVFMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEQ3N0RDMTMyNTQxRUUwMDc2MUIyMiAvKiBKYXZhQXJy
YXlKU0MuY3BwICovOyB9OwogCQk1OThENzdERjEzMjU0MUZBMDA3NjFCMjIgLyogSmF2YUFycmF5
SlNDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThE
NzdERTEzMjU0MUZBMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmggKi87IH07CiAJCTU5OEQ3N0Ux
MTMyNTQyMDQwMDc2MUIyMiAvKiBKYXZhRmllbGRKU0MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4RDc3RTAxMzI1NDIwNDAwNzYxQjIyIC8qIEph
dmFGaWVsZEpTQy5jcHAgKi87IH07CkBAIC03ODUyLDcgKzc4NTMsNiBAQAogCQk1OTBFMUI0QTEx
RTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MzA5QTEwMTFGNEFF
NTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNw
cDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU5M0QzRUFDMTMy
NTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFNZXRob2QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyogSmF2YU1ldGhvZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhTWV0aG9kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRp
b25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg2
MCw2ICs3ODYwLDggQEAKIAkJNTk2OTUwODExMzIxMDU5OTAwQzNFRDE4IC8qIEpvYmplY3RXcmFw
cGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpvYmplY3RXcmFwcGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5Njk1MDgzMTMyMTA1QTUwMEMzRUQxOCAv
KiBKb2JqZWN0V3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKb2JqZWN0V3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5ODBC
MDMzMTJFRjNEODQwMERGNUY4NSAvKiBYTUxWaWV3ZXIueHNsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7
IHBhdGggPSBYTUxWaWV3ZXIueHNsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1OThB
MkE0NjEzMjY2MkI0MDA4RjExRDYgLyogSmF2YU1ldGhvZEpvYmplY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YU1ldGhvZEpvYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTk4QTJBNDgxMzI2NjJDMDAwOEYxMUQ2IC8qIEphdmFNZXRob2RKb2Jq
ZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFNZXRob2RK
b2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4RDc3REMxMzI1NDFF
RTAwNzYxQjIyIC8qIEphdmFBcnJheUpTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKYXZhQXJyYXlKU0MuY3BwOyBwYXRoID0ganNjL0phdmFBcnJheUpTQy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEQ3N0RFMTMyNTQxRkEwMDc2MUIyMiAv
KiBKYXZhQXJyYXlKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSmF2YUFy
cmF5SlNDLmg7IHBhdGggPSBqc2MvSmF2YUFycmF5SlNDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU5OEQ3N0UwMTMyNTQyMDQwMDc2MUIyMiAvKiBKYXZhRmllbGRKU0MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSmF2YUZpZWxkSlNDLmNwcDsgcGF0
aCA9IGpzYy9KYXZhRmllbGRKU0MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI3NTgsOSArMTI3NjAsMTAgQEAKIAkJMUE1NjlDQ0UwRDdFMkI4MjAwN0MzOTgzIC8qIGpuaSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTk4QTJBNDgx
MzI2NjJDMDAwOEYxMUQ2IC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCAqLywKKwkJCQk1OThBMkE0
NjEzMjY2MkI0MDA4RjExRDYgLyogSmF2YU1ldGhvZEpvYmplY3QuaCAqLywKIAkJCQk1OTNEM0VC
MDEzMjUzMjk1MDA1N0U3RUUgLyogSmF2YVN0cmluZy5oICovLAogCQkJCTU5M0QzRUFFMTMyNTMy
OEMwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmggKi8sCi0JCQkJNTkzRDNFQUMxMzI1MzI4NDAwNTdF
N0VFIC8qIEphdmFNZXRob2QuY3BwICovLAogCQkJCTU5Njk1MDgzMTMyMTA1QTUwMEMzRUQxOCAv
KiBKb2JqZWN0V3JhcHBlci5jcHAgKi8sCiAJCQkJNTk2OTUwODExMzIxMDU5OTAwQzNFRDE4IC8q
IEpvYmplY3RXcmFwcGVyLmggKi8sCiAJCQkJMUE1NjlDRDQwRDdFMkI4MjAwN0MzOTgzIC8qIGpu
aV9qc29iamVjdC5oICovLApAQCAtMjI1NjgsNiArMjI1NzEsNyBAQAogCQkJCTU5M0QzRUIxMTMy
NTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OThENzdE
RjEzMjU0MUZBMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
OThENzdFMzEzMjU0MjBFMDA3NjFCMjIgLyogSmF2YUZpZWxkSlNDLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1OThBMkE0NzEzMjY2MkI0MDA4RjExRDYgLyogSmF2YU1ldGhvZEpvYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjUyMTcsMTEgKzI1MjIxLDExIEBACiAJCQkJNUE1NzRGMjQxMzFEQjkz
OTAwNDcxQjg4IC8qIFJlbmRlclF1b3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVBNTc0RjI4
MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5
Njk1MDg0MTMyMTA1QTUwMEMzRUQxOCAvKiBKb2JqZWN0V3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1OTNEM0VBRDEzMjUzMjg0MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1OThENzdERDEzMjU0MUVFMDA3NjFCMjIgLyogSmF2YUFycmF5SlNDLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5OEQ3N0UxMTMyNTQyMDQwMDc2MUIyMiAvKiBKYXZhRmll
bGRKU0MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODE1RTYxNjcxMzI1ODdBQTAwQjYyMkIwIC8q
IERhdGFUcmFuc2Zlckl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODEwMkM1ODgxMzI1QkIx
MTAwRERFNjdBIC8qIFN0cmluZ0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTU5OEEy
QTQ5MTMyNjYyQzAwMDhGMTFENiAvKiBKYXZhTWV0aG9kSm9iamVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1NWYyOWRmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qbmkvSmF2YU1ldGhvZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQg
T3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJKYXZhTWV0aG9kLmgiCi0KLSNpZiBFTkFCTEUoSkFWQV9CUklER0UpCi0KLSNpbmNsdWRlICJK
YXZhU3RyaW5nLmgiCi0KLSNpbmNsdWRlIDxydW50aW1lL1Njb3BlQ2hhaW4uaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci11c2lu
ZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKLQotSmF2YU1ldGhvZDo6SmF2YU1ldGhvZChKTklF
bnYqIGVudiwgam9iamVjdCBhTWV0aG9kKQotewotICAgIC8vIEdldCByZXR1cm4gdHlwZSBuYW1l
Ci0gICAganN0cmluZyByZXR1cm5UeXBlTmFtZSA9IDA7Ci0gICAgaWYgKGpvYmplY3QgcmV0dXJu
VHlwZSA9IGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwgImdldFJldHVyblR5cGUiLCAi
KClMamF2YS9sYW5nL0NsYXNzOyIpKSB7Ci0gICAgICAgICAgICByZXR1cm5UeXBlTmFtZSA9IHN0
YXRpY19jYXN0PGpzdHJpbmc+KGNhbGxKTklNZXRob2Q8am9iamVjdD4ocmV0dXJuVHlwZSwgImdl
dE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKSk7Ci0gICAgICAgIGlmICghcmV0dXJuVHlw
ZU5hbWUpCi0gICAgICAgICAgICByZXR1cm5UeXBlTmFtZSA9IGVudi0+TmV3U3RyaW5nVVRGKCI8
VW5rbm93bj4iKTsKLSAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihyZXR1cm5UeXBlKTsKLSAg
ICB9Ci0gICAgbV9yZXR1cm5UeXBlID0gSmF2YVN0cmluZyhlbnYsIHJldHVyblR5cGVOYW1lKTsK
LSAgICBtX0pOSVJldHVyblR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZShtX3JldHVyblR5cGUu
dXRmOCgpKTsKLSAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJldHVyblR5cGVOYW1lKTsKLQotICAg
IC8vIEdldCBtZXRob2QgbmFtZQotICAgIGpzdHJpbmcgbWV0aG9kTmFtZSA9IHN0YXRpY19jYXN0
PGpzdHJpbmc+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwgImdldE5hbWUiLCAiKClM
amF2YS9sYW5nL1N0cmluZzsiKSk7Ci0gICAgaWYgKCFyZXR1cm5UeXBlTmFtZSkKLSAgICAgICAg
cmV0dXJuVHlwZU5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7Ci0gICAgbV9u
YW1lID0gSmF2YVN0cmluZyhlbnYsIG1ldGhvZE5hbWUpOwotICAgIGVudi0+RGVsZXRlTG9jYWxS
ZWYobWV0aG9kTmFtZSk7Ci0KLSAgICAvLyBHZXQgcGFyYW1ldGVycwotICAgIGlmIChqYXJyYXkg
anBhcmFtZXRlcnMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8am9iamVjdD4o
YU1ldGhvZCwgImdldFBhcmFtZXRlclR5cGVzIiwgIigpW0xqYXZhL2xhbmcvQ2xhc3M7IikpKSB7
Ci0gICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGpw
YXJhbWV0ZXJzKTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBh
cmFtczsgaSsrKSB7Ci0gICAgICAgICAgICBqb2JqZWN0IGFQYXJhbWV0ZXIgPSBlbnYtPkdldE9i
amVjdEFycmF5RWxlbWVudChzdGF0aWNfY2FzdDxqb2JqZWN0QXJyYXk+KGpwYXJhbWV0ZXJzKSwg
aSk7Ci0gICAgICAgICAgICBqc3RyaW5nIHBhcmFtZXRlck5hbWUgPSBzdGF0aWNfY2FzdDxqc3Ry
aW5nPihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFQYXJhbWV0ZXIsICJnZXROYW1lIiwgIigpTGph
dmEvbGFuZy9TdHJpbmc7IikpOwotICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJOYW1lKQotICAg
ICAgICAgICAgICAgIHBhcmFtZXRlck5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+
Iik7Ci0gICAgICAgICAgICBtX3BhcmFtZXRlcnMuYXBwZW5kKEphdmFTdHJpbmcoZW52LCBwYXJh
bWV0ZXJOYW1lKS5pbXBsKCkpOwotICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhUGFy
YW1ldGVyKTsKLSAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocGFyYW1ldGVyTmFtZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqcGFyYW1ldGVycyk7Ci0g
ICAgfQotCi0gICAgLy8gQ3JlYXRlZCBsYXppbHkuCi0gICAgbV9zaWduYXR1cmUgPSAwOwotICAg
IG1fbWV0aG9kSUQgPSAwOwotCi0gICAgamNsYXNzIG1vZGlmaWVyQ2xhc3MgPSBlbnYtPkZpbmRD
bGFzcygiamF2YS9sYW5nL3JlZmxlY3QvTW9kaWZpZXIiKTsKLSAgICBpbnQgbW9kaWZpZXJzID0g
Y2FsbEpOSU1ldGhvZDxqaW50PihhTWV0aG9kLCAiZ2V0TW9kaWZpZXJzIiwgIigpSSIpOwotICAg
IG1faXNTdGF0aWMgPSBzdGF0aWNfY2FzdDxib29sPihjYWxsSk5JU3RhdGljTWV0aG9kPGpib29s
ZWFuPihtb2RpZmllckNsYXNzLCAiaXNTdGF0aWMiLCAiKEkpWiIsIG1vZGlmaWVycykpOwotICAg
IGVudi0+RGVsZXRlTG9jYWxSZWYobW9kaWZpZXJDbGFzcyk7Ci19Ci0KLUphdmFNZXRob2Q6On5K
YXZhTWV0aG9kKCkKLXsKLSAgICBpZiAobV9zaWduYXR1cmUpCi0gICAgICAgIGZhc3RGcmVlKG1f
c2lnbmF0dXJlKTsKLX0KLQotLy8gSk5JIG1ldGhvZCBzaWduYXR1cmVzIHVzZSAnLycgYmV0d2Vl
biBjb21wb25lbnRzIG9mIGEgY2xhc3MgbmFtZSwgYnV0Ci0vLyB3ZSBnZXQgJy4nIGJldHdlZW4g
Y29tcG9uZW50cyBmcm9tIHRoZSByZWZsZWN0aW9uIEFQSS4KLXN0YXRpYyB2b2lkIGFwcGVuZENs
YXNzTmFtZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBjaGFyKiBjbGFzc05hbWUpCi17
Ci0jaWYgVVNFKEpTQykKLSAgICBBU1NFUlQoSlNMb2NrOjpsb2NrQ291bnQoKSA+IDApOwotI2Vu
ZGlmCi0KLSAgICBjaGFyKiBjID0gZmFzdFN0ckR1cChjbGFzc05hbWUpOwotCi0gICAgY2hhciog
cmVzdWx0ID0gYzsKLSAgICB3aGlsZSAoKmMpIHsKLSAgICAgICAgaWYgKCpjID09ICcuJykKLSAg
ICAgICAgICAgICpjID0gJy8nOwotICAgICAgICBjKys7Ci0gICAgfQotCi0gICAgYnVpbGRlci5h
cHBlbmQocmVzdWx0KTsKLQotICAgIGZhc3RGcmVlKHJlc3VsdCk7Ci19Ci0KLWNvbnN0IGNoYXIq
IEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NpZ25hdHVyZSkg
ewotI2lmIFVTRShKU0MpCi0gICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7Ci0jZW5kaWYKLQotICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25hdHVyZUJ1aWxkZXI7Ci0g
ICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgbV9wYXJhbWV0ZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAg
ICBDU3RyaW5nIGphdmFDbGFzc05hbWUgPSBwYXJhbWV0ZXJBdChpKS51dGY4KCk7Ci0gICAgICAg
ICAgICBKTklUeXBlIHR5cGUgPSBKTklUeXBlRnJvbUNsYXNzTmFtZShqYXZhQ2xhc3NOYW1lLmRh
dGEoKSk7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBhcnJheV90eXBlKQotICAgICAgICAgICAg
ICAgIGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCBqYXZhQ2xhc3NOYW1lLmRhdGEo
KSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVy
LmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5k
Q2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJzsnKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc2lnbmF0dXJlQnVpbGRl
ci5hcHBlbmQoJyknKTsKLQotICAgICAgICBjb25zdCBjaGFyKiByZXR1cm5UeXBlID0gbV9yZXR1
cm5UeXBlLnV0ZjgoKTsKLSAgICAgICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9PSBhcnJheV90eXBl
KQotICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIHJldHVyblR5
cGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5k
KHNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlKG1fSk5JUmV0dXJuVHlwZSkpOwotICAgICAgICAg
ICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9PSBvYmplY3RfdHlwZSkgewotICAgICAgICAgICAgICAg
IGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCByZXR1cm5UeXBlKTsKLSAgICAgICAg
ICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgU3RyaW5nIHNpZ25hdHVyZVN0cmluZyA9IHNpZ25hdHVyZUJ1aWxk
ZXIudG9TdHJpbmcoKTsKLSAgICAgICAgbV9zaWduYXR1cmUgPSBmYXN0U3RyRHVwKHNpZ25hdHVy
ZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9zaWduYXR1cmU7
Ci19Ci0KLUpOSVR5cGUgSmF2YU1ldGhvZDo6Sk5JUmV0dXJuVHlwZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fSk5JUmV0dXJuVHlwZTsKLX0KLQotam1ldGhvZElEIEphdmFNZXRob2Q6Om1ldGhv
ZElEKGpvYmplY3Qgb2JqKSBjb25zdAotewotICAgIGlmICghbV9tZXRob2RJRCkKLSAgICAgICAg
bV9tZXRob2RJRCA9IGdldE1ldGhvZElEKG9iaiwgbV9uYW1lLnV0ZjgoKSwgc2lnbmF0dXJlKCkp
OwotICAgIHJldHVybiBtX21ldGhvZElEOwotfQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJ
REdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuaAppbmRleCAzOWQwNGM5Li5k
NWU3ZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuaApAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgIkJyaWRnZS5oIgogI2luY2x1ZGUgIkpOSVV0aWxpdHkuaCIKIAot
I2luY2x1ZGUgIkphdmFTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDI5ICs0MiwxMiBAQCB0eXBlZGVmIGNvbnN0IGNo
YXIqIFJ1bnRpbWVUeXBlOwogCiBjbGFzcyBKYXZhTWV0aG9kIDogcHVibGljIE1ldGhvZCB7CiBw
dWJsaWM6Ci0gICAgSmF2YU1ldGhvZChKTklFbnYqLCBqb2JqZWN0IGFNZXRob2QpOwotICAgIH5K
YXZhTWV0aG9kKCk7Ci0KLSAgICBjb25zdCBKYXZhU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9Ci0gICAgUnVudGltZVR5cGUgcmV0dXJuVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmV0dXJuVHlwZS51dGY4KCk7IH0KLSAgICBjb25zdCBXVEY6OlN0cmluZyYgcGFyYW1ldGVy
QXQoaW50IGkpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyc1tpXTsgfQotICAgIGludCBudW1Q
YXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsgfQotCi0gICAg
Y29uc3QgY2hhciogc2lnbmF0dXJlKCkgY29uc3Q7Ci0gICAgSk5JVHlwZSBKTklSZXR1cm5UeXBl
KCkgY29uc3Q7Ci0KLSAgICBqbWV0aG9kSUQgbWV0aG9kSUQoam9iamVjdCBvYmopIGNvbnN0Owot
Ci0gICAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGF0aWM7IH0KLQotcHJp
dmF0ZToKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fcGFyYW1ldGVyczsKLSAgICBKYXZhU3Ry
aW5nIG1fbmFtZTsKLSAgICBtdXRhYmxlIGNoYXIqIG1fc2lnbmF0dXJlOwotICAgIEphdmFTdHJp
bmcgbV9yZXR1cm5UeXBlOwotICAgIEpOSVR5cGUgbV9KTklSZXR1cm5UeXBlOwotICAgIG11dGFi
bGUgam1ldGhvZElEIG1fbWV0aG9kSUQ7Ci0gICAgYm9vbCBtX2lzU3RhdGljOworICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSdW50aW1lVHlwZSByZXR1
cm5UeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHBhcmFtZXRlckF0KGludCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgY2hhciogc2lnbmF0dXJlKCkgY29uc3Q9IDA7
CisgICAgdmlydHVhbCBKTklUeXBlIEpOSVJldHVyblR5cGUoKSBjb25zdD0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNTdGF0aWMoKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5k
aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDUwYjU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAK
QEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUs
IDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSmF2YU1ldGhvZEpvYmplY3QuaCIKKworI2lmIEVOQUJMRShK
QVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFTdHJpbmcuaCIKKworI2luY2x1ZGUgPHJ1bnRp
bWUvU2NvcGVDaGFpbi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOworCitK
YXZhTWV0aG9kSm9iamVjdDo6SmF2YU1ldGhvZEpvYmplY3QoSk5JRW52KiBlbnYsIGpvYmplY3Qg
YU1ldGhvZCkKK3sKKyAgICAvLyBHZXQgcmV0dXJuIHR5cGUgbmFtZQorICAgIGpzdHJpbmcgcmV0
dXJuVHlwZU5hbWUgPSAwOworICAgIGlmIChqb2JqZWN0IHJldHVyblR5cGUgPSBjYWxsSk5JTWV0
aG9kPGpvYmplY3Q+KGFNZXRob2QsICJnZXRSZXR1cm5UeXBlIiwgIigpTGphdmEvbGFuZy9DbGFz
czsiKSkgeworICAgICAgICAgICAgcmV0dXJuVHlwZU5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5n
PihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KHJldHVyblR5cGUsICJnZXROYW1lIiwgIigpTGphdmEv
bGFuZy9TdHJpbmc7IikpOworICAgICAgICBpZiAoIXJldHVyblR5cGVOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuVHlwZU5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7CisgICAg
ICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0dXJuVHlwZSk7CisgICAgfQorICAgIG1fcmV0dXJu
VHlwZSA9IEphdmFTdHJpbmcoZW52LCByZXR1cm5UeXBlTmFtZSk7CisgICAgbV9KTklSZXR1cm5U
eXBlID0gSk5JVHlwZUZyb21DbGFzc05hbWUobV9yZXR1cm5UeXBlLnV0ZjgoKSk7CisgICAgZW52
LT5EZWxldGVMb2NhbFJlZihyZXR1cm5UeXBlTmFtZSk7CisKKyAgICAvLyBHZXQgbWV0aG9kIG5h
bWUKKyAgICBqc3RyaW5nIG1ldGhvZE5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5nPihjYWxsSk5J
TWV0aG9kPGpvYmplY3Q+KGFNZXRob2QsICJnZXROYW1lIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7
IikpOworICAgIGlmICghcmV0dXJuVHlwZU5hbWUpCisgICAgICAgIHJldHVyblR5cGVOYW1lID0g
ZW52LT5OZXdTdHJpbmdVVEYoIjxVbmtub3duPiIpOworICAgIG1fbmFtZSA9IEphdmFTdHJpbmco
ZW52LCBtZXRob2ROYW1lKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKG1ldGhvZE5hbWUpOwor
CisgICAgLy8gR2V0IHBhcmFtZXRlcnMKKyAgICBpZiAoamFycmF5IGpwYXJhbWV0ZXJzID0gc3Rh
dGljX2Nhc3Q8amFycmF5PihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFNZXRob2QsICJnZXRQYXJh
bWV0ZXJUeXBlcyIsICIoKVtMamF2YS9sYW5nL0NsYXNzOyIpKSkgeworICAgICAgICB1bnNpZ25l
ZCBpbnQgbnVtUGFyYW1zID0gZW52LT5HZXRBcnJheUxlbmd0aChqcGFyYW1ldGVycyk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7IGkrKykgeworICAg
ICAgICAgICAgam9iamVjdCBhUGFyYW1ldGVyID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQo
c3RhdGljX2Nhc3Q8am9iamVjdEFycmF5PihqcGFyYW1ldGVycyksIGkpOworICAgICAgICAgICAg
anN0cmluZyBwYXJhbWV0ZXJOYW1lID0gc3RhdGljX2Nhc3Q8anN0cmluZz4oY2FsbEpOSU1ldGhv
ZDxqb2JqZWN0PihhUGFyYW1ldGVyLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIp
KTsKKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVyTmFtZSkKKyAgICAgICAgICAgICAgICBwYXJh
bWV0ZXJOYW1lID0gZW52LT5OZXdTdHJpbmdVVEYoIjxVbmtub3duPiIpOworICAgICAgICAgICAg
bV9wYXJhbWV0ZXJzLmFwcGVuZChKYXZhU3RyaW5nKGVudiwgcGFyYW1ldGVyTmFtZSkuaW1wbCgp
KTsKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoYVBhcmFtZXRlcik7CisgICAgICAg
ICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHBhcmFtZXRlck5hbWUpOworICAgICAgICB9CisgICAg
ICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoanBhcmFtZXRlcnMpOworICAgIH0KKworICAgIC8vIENy
ZWF0ZWQgbGF6aWx5LgorICAgIG1fc2lnbmF0dXJlID0gMDsKKyAgICBtX21ldGhvZElEID0gMDsK
KworICAgIGpjbGFzcyBtb2RpZmllckNsYXNzID0gZW52LT5GaW5kQ2xhc3MoImphdmEvbGFuZy9y
ZWZsZWN0L01vZGlmaWVyIik7CisgICAgaW50IG1vZGlmaWVycyA9IGNhbGxKTklNZXRob2Q8amlu
dD4oYU1ldGhvZCwgImdldE1vZGlmaWVycyIsICIoKUkiKTsKKyAgICBtX2lzU3RhdGljID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4oY2FsbEpOSVN0YXRpY01ldGhvZDxqYm9vbGVhbj4obW9kaWZpZXJDbGFz
cywgImlzU3RhdGljIiwgIihJKVoiLCBtb2RpZmllcnMpKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2Fs
UmVmKG1vZGlmaWVyQ2xhc3MpOworfQorCitKYXZhTWV0aG9kSm9iamVjdDo6fkphdmFNZXRob2RK
b2JqZWN0KCkKK3sKKyAgICBpZiAobV9zaWduYXR1cmUpCisgICAgICAgIGZhc3RGcmVlKG1fc2ln
bmF0dXJlKTsKK30KKworLy8gSk5JIG1ldGhvZCBzaWduYXR1cmVzIHVzZSAnLycgYmV0d2VlbiBj
b21wb25lbnRzIG9mIGEgY2xhc3MgbmFtZSwgYnV0CisvLyB3ZSBnZXQgJy4nIGJldHdlZW4gY29t
cG9uZW50cyBmcm9tIHRoZSByZWZsZWN0aW9uIEFQSS4KK3N0YXRpYyB2b2lkIGFwcGVuZENsYXNz
TmFtZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBjaGFyKiBjbGFzc05hbWUpCit7Cisj
aWYgVVNFKEpTQykKKyAgICBBU1NFUlQoSlNMb2NrOjpsb2NrQ291bnQoKSA+IDApOworI2VuZGlm
CisKKyAgICBjaGFyKiBjID0gZmFzdFN0ckR1cChjbGFzc05hbWUpOworCisgICAgY2hhciogcmVz
dWx0ID0gYzsKKyAgICB3aGlsZSAoKmMpIHsKKyAgICAgICAgaWYgKCpjID09ICcuJykKKyAgICAg
ICAgICAgICpjID0gJy8nOworICAgICAgICBjKys7CisgICAgfQorCisgICAgYnVpbGRlci5hcHBl
bmQocmVzdWx0KTsKKworICAgIGZhc3RGcmVlKHJlc3VsdCk7Cit9CisKK2NvbnN0IGNoYXIqIEph
dmFNZXRob2RKb2JqZWN0OjpzaWduYXR1cmUoKSBjb25zdAoreworICAgIGlmICghbV9zaWduYXR1
cmUpIHsKKyNpZiBVU0UoSlNDKQorICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOworI2VuZGlmCisKKyAgICAgICAgU3RyaW5nQnVpbGRlciBzaWduYXR1cmVCdWlsZGVy
OworICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnKCcpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IG1fcGFyYW1ldGVycy5zaXplKCk7IGkrKykgeworICAgICAg
ICAgICAgQ1N0cmluZyBqYXZhQ2xhc3NOYW1lID0gcGFyYW1ldGVyQXQoaSkudXRmOCgpOworICAg
ICAgICAgICAgSk5JVHlwZSB0eXBlID0gSk5JVHlwZUZyb21DbGFzc05hbWUoamF2YUNsYXNzTmFt
ZS5kYXRhKCkpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gYXJyYXlfdHlwZSkKKyAgICAgICAg
ICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRlciwgamF2YUNsYXNzTmFtZS5k
YXRhKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVp
bGRlci5hcHBlbmQoc2lnbmF0dXJlRnJvbVByaW1pdGl2ZVR5cGUodHlwZSkpOworICAgICAgICAg
ICAgICAgIGlmICh0eXBlID09IG9iamVjdF90eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGFw
cGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCBqYXZhQ2xhc3NOYW1lLmRhdGEoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCc7Jyk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpZ25hdHVyZUJ1
aWxkZXIuYXBwZW5kKCcpJyk7CisKKyAgICAgICAgY29uc3QgY2hhciogcmV0dXJuVHlwZSA9IG1f
cmV0dXJuVHlwZS51dGY4KCk7CisKKyAgICAgICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9PSBhcnJh
eV90eXBlKQorICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIHJl
dHVyblR5cGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIu
YXBwZW5kKHNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlKG1fSk5JUmV0dXJuVHlwZSkpOworICAg
ICAgICAgICAgaWYgKG1fSk5JUmV0dXJuVHlwZSA9PSBvYmplY3RfdHlwZSkgeworICAgICAgICAg
ICAgICAgIGFwcGVuZENsYXNzTmFtZShzaWduYXR1cmVCdWlsZGVyLCByZXR1cm5UeXBlKTsKKyAg
ICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZVN0cmluZyA9IHNpZ25hdHVy
ZUJ1aWxkZXIudG9TdHJpbmcoKTsKKyAgICAgICAgbV9zaWduYXR1cmUgPSBmYXN0U3RyRHVwKHNp
Z25hdHVyZVN0cmluZy51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zaWdu
YXR1cmU7Cit9CisKK0pOSVR5cGUgSmF2YU1ldGhvZEpvYmplY3Q6OkpOSVJldHVyblR5cGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX0pOSVJldHVyblR5cGU7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0ph
dmFNZXRob2RKb2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RK
b2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzMzRiOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmpl
Y3QuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKYXZhTWV0aG9kSm9iamVjdF9oCisjZGVmaW5lIEphdmFNZXRob2RKb2JqZWN0X2gK
KworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFNZXRob2QuaCIKKyNp
bmNsdWRlICJKYXZhU3RyaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFzcyBKYXZhTWV0
aG9kSm9iamVjdCA6IHB1YmxpYyBKYXZhTWV0aG9kIHsKK3B1YmxpYzoKKyAgICBKYXZhTWV0aG9k
Sm9iamVjdChKTklFbnYqLCBqb2JqZWN0KTsKKyAgICB2aXJ0dWFsIH5KYXZhTWV0aG9kSm9iamVj
dCgpOworCisgICAgLy8gSmF2YU1ldGhvZCBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUuaW1wbCgpOyB9CisgICAgdmlydHVhbCBS
dW50aW1lVHlwZSByZXR1cm5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1cm5UeXBlLnV0Zjgo
KTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBhcmFtZXRlckF0KGludCBpKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnNbaV07IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgSk5JVHlwZSBKTklSZXR1cm5UeXBlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzU3RhdGljKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0YXRpYzsgfQorCisg
ICAgLy8gTWV0aG9kIGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCBpbnQgbnVtUGFyYW1ldGVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5zaXplKCk7IH0KKworcHJpdmF0ZToKKyAg
ICBWZWN0b3I8U3RyaW5nPiBtX3BhcmFtZXRlcnM7CisgICAgSmF2YVN0cmluZyBtX25hbWU7Cisg
ICAgbXV0YWJsZSBjaGFyKiBtX3NpZ25hdHVyZTsKKyAgICBKYXZhU3RyaW5nIG1fcmV0dXJuVHlw
ZTsKKyAgICBKTklUeXBlIG1fSk5JUmV0dXJuVHlwZTsKKyAgICBtdXRhYmxlIGptZXRob2RJRCBt
X21ldGhvZElEOworICAgIGJvb2wgbV9pc1N0YXRpYzsKK307CisKK30gLy8gbmFtZXNwYWNlIEJp
bmRpbmdzCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJ
REdFKQorCisjZW5kaWYgLy8gSmF2YU1ldGhvZEpvYmplY3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKaW5kZXggMThjZDFhZi4uYzE1M2FhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiSk5JVXRpbGl0eS5oIgogI2luY2x1ZGUgIkpTRE9N
V2luZG93LmgiCiAjaW5jbHVkZSAiSmF2YUZpZWxkSlNDLmgiCi0jaW5jbHVkZSAiSmF2YU1ldGhv
ZC5oIgorI2luY2x1ZGUgIkphdmFNZXRob2RKb2JqZWN0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9J
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNzcsNyArNzcs
NyBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpCiAgICAgICAgIGlu
dCBudW1NZXRob2RzID0gZW52LT5HZXRBcnJheUxlbmd0aChtZXRob2RzKTsKICAgICAgICAgZm9y
IChpID0gMDsgaSA8IG51bU1ldGhvZHM7IGkrKykgewogICAgICAgICAgICAgam9iamVjdCBhSk1l
dGhvZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KChqb2JqZWN0QXJyYXkpbWV0aG9kcywg
aSk7Ci0gICAgICAgICAgICBKYXZhTWV0aG9kKiBhTWV0aG9kID0gbmV3IEphdmFNZXRob2QoZW52
LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCisgICAg
ICAgICAgICBKYXZhTWV0aG9kKiBhTWV0aG9kID0gbmV3IEphdmFNZXRob2RKb2JqZWN0KGVudiwg
YUpNZXRob2QpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgogICAgICAg
ICAgICAgTWV0aG9kTGlzdCogbWV0aG9kTGlzdDsKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggOWQ5YTQ1MC4u
MDZjMTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUlu
c3RhbmNlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5z
dGFuY2VKU0MuY3BwCkBAIC0xOTYsNyArMTk2LDggQEAgSlNWYWx1ZSBKYXZhSW5zdGFuY2U6Omlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QK
ICAgICAgICAgam9iamVjdCBvYmogPSBtX2luc3RhbmNlLT5tX2luc3RhbmNlOwogICAgICAgICBK
U1ZhbHVlIGV4Y2VwdGlvbkRlc2NyaXB0aW9uOwogICAgICAgICBjb25zdCBjaGFyICpjYWxsaW5n
VVJMID0gMDsgLy8gRklYTUUsIG5lZWQgdG8gcHJvcGFnYXRlIGNhbGxpbmcgVVJMIHRvIEphdmEK
LSAgICAgICAgaGFuZGxlZCA9IGRpc3BhdGNoSk5JQ2FsbChleGVjLCByb290T2JqZWN0LT5uYXRp
dmVIYW5kbGUoKSwgb2JqLCBqTWV0aG9kLT5pc1N0YXRpYygpLCBqTWV0aG9kLT5KTklSZXR1cm5U
eXBlKCksIGpNZXRob2QtPm1ldGhvZElEKG9iaiksIGpBcmdzLmRhdGEoKSwgcmVzdWx0LCBjYWxs
aW5nVVJMLCBleGNlcHRpb25EZXNjcmlwdGlvbik7CisgICAgICAgIGptZXRob2RJRCBtZXRob2RJ
ZCA9IGdldE1ldGhvZElEKG9iaiwgak1ldGhvZC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGpNZXRo
b2QtPnNpZ25hdHVyZSgpKTsKKyAgICAgICAgaGFuZGxlZCA9IGRpc3BhdGNoSk5JQ2FsbChleGVj
LCByb290T2JqZWN0LT5uYXRpdmVIYW5kbGUoKSwgb2JqLCBqTWV0aG9kLT5pc1N0YXRpYygpLCBq
TWV0aG9kLT5KTklSZXR1cm5UeXBlKCksIG1ldGhvZElkLCBqQXJncy5kYXRhKCksIHJlc3VsdCwg
Y2FsbGluZ1VSTCwgZXhjZXB0aW9uRGVzY3JpcHRpb24pOwogICAgICAgICBpZiAoZXhjZXB0aW9u
RGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgZXhjZXB0aW9uRGVzY3JpcHRpb24udG9TdHJpbmcoZXhlYykpKTsKICAgICAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMjA4LDM2ICsyMDksMzcgQEAgSlNWYWx1ZSBKYXZh
SW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1
bnRpbWVNZXRob2QKICNpZiBQTEFURk9STShBTkRST0lEKSB8fCBkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKQogICAgIGlmICghaGFuZGxlZCkgewogICAgICAgICBqb2JqZWN0IG9iaiA9IG1faW5z
dGFuY2UtPm1faW5zdGFuY2U7CisgICAgICAgIGptZXRob2RJRCBtZXRob2RJZCA9IGdldE1ldGhv
ZElEKG9iaiwgak1ldGhvZC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGpNZXRob2QtPnNpZ25hdHVy
ZSgpKTsKICAgICAgICAgc3dpdGNoIChqTWV0aG9kLT5KTklSZXR1cm5UeXBlKCkpIHsKICAgICAg
ICAgY2FzZSB2b2lkX3R5cGU6Ci0gICAgICAgICAgICBjYWxsSk5JTWV0aG9kSURBPHZvaWQ+KG9i
aiwgak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MuZGF0YSgpKTsKKyAgICAgICAgICAgIGNh
bGxKTklNZXRob2RJREE8dm9pZD4ob2JqLCBtZXRob2RJZCwgakFyZ3MuZGF0YSgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIG9iamVjdF90eXBlOgotICAgICAgICAgICAgcmVz
dWx0LmwgPSBjYWxsSk5JTWV0aG9kSURBPGpvYmplY3Q+KG9iaiwgak1ldGhvZC0+bWV0aG9kSUQo
b2JqKSwgakFyZ3MuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5sID0gY2FsbEpOSU1ldGhv
ZElEQTxqb2JqZWN0PihvYmosIG1ldGhvZElkLCBqQXJncy5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgYm9vbGVhbl90eXBlOgogICAgICAgICAgICAgcmVzdWx0Lnog
PSBjYWxsSk5JTWV0aG9kSURBPGpib29sZWFuPihvYmosIGpNZXRob2QtPm1ldGhvZElEKG9iaiks
IGpBcmdzLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBieXRlX3R5
cGU6Ci0gICAgICAgICAgICByZXN1bHQuYiA9IGNhbGxKTklNZXRob2RJREE8amJ5dGU+KG9iaiwg
ak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5iID0gY2FsbEpOSU1ldGhvZElEQTxqYnl0ZT4ob2JqLCBtZXRob2RJZCwgakFyZ3MuZGF0YSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGNoYXJfdHlwZToKLSAgICAgICAg
ICAgIHJlc3VsdC5jID0gY2FsbEpOSU1ldGhvZElEQTxqY2hhcj4ob2JqLCBqTWV0aG9kLT5tZXRo
b2RJRChvYmopLCBqQXJncy5kYXRhKCkpOworICAgICAgICAgICAgcmVzdWx0LmMgPSBjYWxsSk5J
TWV0aG9kSURBPGpjaGFyPihvYmosIG1ldGhvZElkLCBqQXJncy5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugc2hvcnRfdHlwZToKLSAgICAgICAgICAgIHJlc3VsdC5z
ID0gY2FsbEpOSU1ldGhvZElEQTxqc2hvcnQ+KG9iaiwgak1ldGhvZC0+bWV0aG9kSUQob2JqKSwg
akFyZ3MuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5zID0gY2FsbEpOSU1ldGhvZElEQTxq
c2hvcnQ+KG9iaiwgbWV0aG9kSWQsIGpBcmdzLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBpbnRfdHlwZToKLSAgICAgICAgICAgIHJlc3VsdC5pID0gY2FsbEpOSU1l
dGhvZElEQTxqaW50PihvYmosIGpNZXRob2QtPm1ldGhvZElEKG9iaiksIGpBcmdzLmRhdGEoKSk7
CisgICAgICAgICAgICByZXN1bHQuaSA9IGNhbGxKTklNZXRob2RJREE8amludD4ob2JqLCBtZXRo
b2RJZCwgakFyZ3MuZGF0YSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGxv
bmdfdHlwZToKLSAgICAgICAgICAgIHJlc3VsdC5qID0gY2FsbEpOSU1ldGhvZElEQTxqbG9uZz4o
b2JqLCBqTWV0aG9kLT5tZXRob2RJRChvYmopLCBqQXJncy5kYXRhKCkpOworICAgICAgICAgICAg
cmVzdWx0LmogPSBjYWxsSk5JTWV0aG9kSURBPGpsb25nPihvYmosIG1ldGhvZElkLCBqQXJncy5k
YXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZmxvYXRfdHlwZToKLSAg
ICAgICAgICAgIHJlc3VsdC5mID0gY2FsbEpOSU1ldGhvZElEQTxqZmxvYXQ+KG9iaiwgak1ldGhv
ZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5mID0g
Y2FsbEpOSU1ldGhvZElEQTxqZmxvYXQ+KG9iaiwgbWV0aG9kSWQsIGpBcmdzLmRhdGEoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBkb3VibGVfdHlwZToKLSAgICAgICAgICAg
IHJlc3VsdC5kID0gY2FsbEpOSU1ldGhvZElEQTxqZG91YmxlPihvYmosIGpNZXRob2QtPm1ldGhv
ZElEKG9iaiksIGpBcmdzLmRhdGEoKSk7CisgICAgICAgICAgICByZXN1bHQuZCA9IGNhbGxKTklN
ZXRob2RJREE8amRvdWJsZT4ob2JqLCBtZXRob2RJZCwgakFyZ3MuZGF0YSgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIGFycmF5X3R5cGU6CiAgICAgICAgIGNhc2UgaW52YWxp
ZF90eXBlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xh
c3NWOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNwcApp
bmRleCAxODM3N2JkLi4yNDU0YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL3Y4L0phdmFDbGFzc1Y4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4
L0phdmFDbGFzc1Y4LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJMRShKQVZBX0JSSURH
RSkKIAogI2luY2x1ZGUgIkphdmFGaWVsZFY4LmgiCi0jaW5jbHVkZSAiSmF2YU1ldGhvZC5oIgor
I2luY2x1ZGUgIkphdmFNZXRob2RKb2JqZWN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkJp
bmRpbmdzOwogCkBAIC02MiwxMyArNjIsMTMgQEAgSmF2YUNsYXNzOjpKYXZhQ2xhc3Moam9iamVj
dCBhbkluc3RhbmNlKQogICAgIGludCBudW1NZXRob2RzID0gZW52LT5HZXRBcnJheUxlbmd0aCht
ZXRob2RzKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtTWV0aG9kczsgaSsrKSB7CiAgICAgICAg
IGpvYmplY3QgYUpNZXRob2QgPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChzdGF0aWNfY2Fz
dDxqb2JqZWN0QXJyYXk+KG1ldGhvZHMpLCBpKTsKLSAgICAgICAgSmF2YU1ldGhvZCogYU1ldGhv
ZCA9IG5ldyBKYXZhTWV0aG9kKGVudiwgYUpNZXRob2QpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZh
Q2xhc3MgZGVzdHJ1Y3RvcgorICAgICAgICBKYXZhTWV0aG9kKiBhTWV0aG9kID0gbmV3IEphdmFN
ZXRob2RKb2JqZWN0KGVudiwgYUpNZXRob2QpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3Mg
ZGVzdHJ1Y3RvcgogICAgICAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0OwogICAgICAgICB7Ci0g
ICAgICAgICAgICBtZXRob2RMaXN0ID0gbV9tZXRob2RzLmdldChhTWV0aG9kLT5uYW1lKCkudXRm
OCgpKTsKKyAgICAgICAgICAgIG1ldGhvZExpc3QgPSBtX21ldGhvZHMuZ2V0KGFNZXRob2QtPm5h
bWUoKSk7CiAgICAgICAgICAgICBpZiAoIW1ldGhvZExpc3QpIHsKICAgICAgICAgICAgICAgICBt
ZXRob2RMaXN0ID0gbmV3IE1ldGhvZExpc3QoKTsKLSAgICAgICAgICAgICAgICBtX21ldGhvZHMu
c2V0KGFNZXRob2QtPm5hbWUoKS51dGY4KCksIG1ldGhvZExpc3QpOworICAgICAgICAgICAgICAg
IG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLCBtZXRob2RMaXN0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBtZXRob2RMaXN0LT5hcHBlbmQoYU1ldGhvZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUluc3RhbmNlVjguY3BwCmluZGV4IGRi
ZjUzZjAuLjkwNDkxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgv
SmF2YUluc3RhbmNlVjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2
YUluc3RhbmNlVjguY3BwCkBAIC0xMDgsMzcgKzEwOCwzOCBAQCBib29sIEphdmFJbnN0YW5jZTo6
aW52b2tlTWV0aG9kKGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIGNvbnN0IE5QVmFyaWFudCogYXJn
cywgaQogICAgIC8vIGNvbnRhaW5zIHRoZSBuZXcgSmF2YSBwbHVnaW4uICBJdCBpcyBuZWVkZWQg
Zm9yIGJ1aWxkcyBwcmlvciB0byBUaWdlci4KICAgICB7CiAgICAgICAgIGpvYmplY3Qgb2JqID0g
amF2YUluc3RhbmNlKCk7CisgICAgICAgIGptZXRob2RJRCBtZXRob2RJZCA9IGdldE1ldGhvZElE
KG9iaiwgak1ldGhvZC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIGpNZXRob2QtPnNpZ25hdHVyZSgp
KTsKICAgICAgICAgc3dpdGNoIChqTWV0aG9kLT5KTklSZXR1cm5UeXBlKCkpIHsKICAgICAgICAg
Y2FzZSB2b2lkX3R5cGU6Ci0gICAgICAgICAgICBjYWxsSk5JTWV0aG9kSURBPHZvaWQ+KG9iaiwg
ak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MpOworICAgICAgICAgICAgY2FsbEpOSU1ldGhv
ZElEQTx2b2lkPihvYmosIG1ldGhvZElkLCBqQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBvYmplY3RfdHlwZToKLSAgICAgICAgICAgIHJlc3VsdC5sID0gY2FsbEpOSU1l
dGhvZElEQTxqb2JqZWN0PihvYmosIGpNZXRob2QtPm1ldGhvZElEKG9iaiksIGpBcmdzKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5sID0gY2FsbEpOSU1ldGhvZElEQTxqb2JqZWN0PihvYmosIG1ldGhv
ZElkLCBqQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBib29sZWFuX3R5
cGU6Ci0gICAgICAgICAgICByZXN1bHQueiA9IGNhbGxKTklNZXRob2RJREE8amJvb2xlYW4+KG9i
aiwgak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MpOworICAgICAgICAgICAgcmVzdWx0Lnog
PSBjYWxsSk5JTWV0aG9kSURBPGpib29sZWFuPihvYmosIG1ldGhvZElkLCBqQXJncyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBieXRlX3R5cGU6Ci0gICAgICAgICAgICByZXN1
bHQuYiA9IGNhbGxKTklNZXRob2RJREE8amJ5dGU+KG9iaiwgak1ldGhvZC0+bWV0aG9kSUQob2Jq
KSwgakFyZ3MpOworICAgICAgICAgICAgcmVzdWx0LmIgPSBjYWxsSk5JTWV0aG9kSURBPGpieXRl
PihvYmosIG1ldGhvZElkLCBqQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBjaGFyX3R5cGU6Ci0gICAgICAgICAgICByZXN1bHQuYyA9IGNhbGxKTklNZXRob2RJREE8amNo
YXI+KG9iaiwgak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MpOworICAgICAgICAgICAgcmVz
dWx0LmMgPSBjYWxsSk5JTWV0aG9kSURBPGpjaGFyPihvYmosIG1ldGhvZElkLCBqQXJncyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBzaG9ydF90eXBlOgotICAgICAgICAgICAg
cmVzdWx0LnMgPSBjYWxsSk5JTWV0aG9kSURBPGpzaG9ydD4ob2JqLCBqTWV0aG9kLT5tZXRob2RJ
RChvYmopLCBqQXJncyk7CisgICAgICAgICAgICByZXN1bHQucyA9IGNhbGxKTklNZXRob2RJREE8
anNob3J0PihvYmosIG1ldGhvZElkLCBqQXJncyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBpbnRfdHlwZToKLSAgICAgICAgICAgIHJlc3VsdC5pID0gY2FsbEpOSU1ldGhvZElE
QTxqaW50PihvYmosIGpNZXRob2QtPm1ldGhvZElEKG9iaiksIGpBcmdzKTsKKyAgICAgICAgICAg
IHJlc3VsdC5pID0gY2FsbEpOSU1ldGhvZElEQTxqaW50PihvYmosIG1ldGhvZElkLCBqQXJncyk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIGxvbmdfdHlwZToKLSAgICAgICAg
ICAgIHJlc3VsdC5qID0gY2FsbEpOSU1ldGhvZElEQTxqbG9uZz4ob2JqLCBqTWV0aG9kLT5tZXRo
b2RJRChvYmopLCBqQXJncyk7CisgICAgICAgICAgICByZXN1bHQuaiA9IGNhbGxKTklNZXRob2RJ
REE8amxvbmc+KG9iaiwgbWV0aG9kSWQsIGpBcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIGZsb2F0X3R5cGU6Ci0gICAgICAgICAgICByZXN1bHQuZiA9IGNhbGxKTklNZXRo
b2RJREE8amZsb2F0PihvYmosIGpNZXRob2QtPm1ldGhvZElEKG9iaiksIGpBcmdzKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5mID0gY2FsbEpOSU1ldGhvZElEQTxqZmxvYXQ+KG9iaiwgbWV0aG9kSWQs
IGpBcmdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGRvdWJsZV90eXBlOgot
ICAgICAgICAgICAgcmVzdWx0LmQgPSBjYWxsSk5JTWV0aG9kSURBPGpkb3VibGU+KG9iaiwgak1l
dGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MpOworICAgICAgICAgICAgcmVzdWx0LmQgPSBjYWxs
Sk5JTWV0aG9kSURBPGpkb3VibGU+KG9iaiwgbWV0aG9kSWQsIGpBcmdzKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIGludmFsaWRfdHlwZToKICAgICAgICAgZGVmYXVsdDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87501</attachid>
            <date>2011-03-30 04:33:31 -0700</date>
            <delta_ts>2011-03-30 04:55:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55765-20110330123329.patch</filename>
            <type>text/plain</type>
            <size>21763</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCmluZGV4IDRmZjg4NGM4ZmFlY2NiN2EyYzYzZGI3NmQ0NmUzMTFmMmIyMmU5MDcuLjVlNWUz
MGY0MzNiMTlmYTdkMDk4ZjYzNjEyNWM2ZWMyNThkMzIwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9p
ZC5qc2NiaW5kaW5ncy5tawpAQCAtMTk5LDcgKzE5OSw3IEBAIExPQ0FMX1NSQ19GSUxFUyArPSBc
CiAJYnJpZGdlL2MvY19ydW50aW1lLmNwcCBcCiAJYnJpZGdlL2MvY191dGlsaXR5LmNwcCBcCiAJ
YnJpZGdlL2puaS9KTklVdGlsaXR5LmNwcCBcCi0JYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNwcCBc
CisJYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAgXAogCWJyaWRnZS9qbmkvSm9iamVj
dFdyYXBwZXIuY3BwIFwKIAlicmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJpdmF0ZS5jcHAgXAog
CWJyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJp
bmRpbmdzLm1rCmluZGV4IGQ4MTU0MTc2YjhjMDVmNjYwNTg3ZDdlMjg4OGNlNzI4Y2YwMjZhYzku
LjgxZTQ3MGQ3YzM2OGNjYjc3YWEwMTU0Y2U3MGMyZWJlNjY1NmU4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLnY4YmluZGluZ3MubWsKQEAgLTE3NSw3ICsxNzUsNyBAQCBMT0NBTF9TUkNfRklMRVMg
Kz0gXAogCiBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9qbmkvSk5JVXRpbGl0eS5jcHAg
XAotCWJyaWRnZS9qbmkvSmF2YU1ldGhvZC5jcHAgXAorCWJyaWRnZS9qbmkvSmF2YU1ldGhvZEpv
YmplY3QuY3BwIFwKIAlicmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVyLmNwcCBcCiAJYnJpZGdlL2pu
aS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjgu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2ZDcxZTA0ZDQ5ODkzZGE0Y2VhZTkxN2E5ZGI5OGMwY2Q3ZTU4
NmJiLi5lMjgxNjA1OTdjN2E5ODQ0NDk5ZDQxMzdiYjUzNDBiZDE2OTcyMTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDMtMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEphdmFNZXRob2Qgc2hvdWxkIG5vdCBleHBvc2UgSmF2YVN0cmluZyBpbiBpdHMgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTc2NQorCisg
ICAgICAgIC0gRmFjdG9ycyBvdXQgYSBKYXZhTWV0aG9kIGludGVyZmFjZSB3aGljaCBkb2VzIG5v
dCB1c2UgSk5JIHR5cGVzLgorICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgSmF2YSBicmlk
Z2UgdG8gYmUgdXNlZCB3aXRoIG9iamVjdHMgdGhhdAorICAgICAgICAgIGRvbid0IHVzZSBKTkkg
ZGlyZWN0bHkuIFRoZSBleGlzdGluZyBqb2JqZWN0LWJhY2tlZAorICAgICAgICAgIGltcGxlbWVu
dGF0aW9uIGlzIG1vdmVkIHRvIGEgbmV3IEphdmFNZXRob2RKb2JqZWN0IGNsYXNzIHdoaWNoCisg
ICAgICAgICAgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgorICAgICAgICAtIFVzZSBXVEY6OlN0
cmluZyBpbiBwbGFjZSBvZiBKYXZhU3RyaW5nIGluIHRoZSBBUEksIGFzIEphdmFTdHJpbmcKKyAg
ICAgICAgICBleHBvc2VzIEpOSSB0eXBlcyBpbiBpdHMgaW50ZXJmYWNlLgorICAgICAgICAtIFJl
bW92ZSB0aGUgbWV0aG9kIElEIGFzIGl0IHVzZXMgSk5JIHR5cGVzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIEFuZHJvaWQuanNjYmluZGlu
Z3MubWs6CisgICAgICAgICogQW5kcm9pZC52OGJpbmRpbmdzLm1rOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnJpZGdlL2puaS9KYXZhTWV0aG9k
Lmg6CisgICAgICAgICogYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHA6CisgICAgICAg
IChKYXZhTWV0aG9kSm9iamVjdDo6SmF2YU1ldGhvZEpvYmplY3QpOgorICAgICAgICAoSmF2YU1l
dGhvZEpvYmplY3Q6On5KYXZhTWV0aG9kSm9iamVjdCk6CisgICAgICAgIChhcHBlbmRDbGFzc05h
bWUpOgorICAgICAgICAoSmF2YU1ldGhvZEpvYmplY3Q6OnNpZ25hdHVyZSk6CisgICAgICAgICog
YnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuaC4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFN
ZXRob2RKb2JqZWN0OjpuYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFNZXRob2RK
b2JqZWN0OjpyZXR1cm5UeXBlQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Okph
dmFNZXRob2RKb2JqZWN0OjpwYXJhbWV0ZXJBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpK
YXZhTWV0aG9kSm9iamVjdDo6cmV0dXJuVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpK
YXZhTWV0aG9kSm9iamVjdDo6aXNTdGF0aWMpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2
YU1ldGhvZEpvYmplY3Q6Om51bVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNj
L0phdmFDbGFzc0pTQy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6CisgICAg
ICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcDoKKyAgICAgICAgKEphdmFJ
bnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4L0phdmFDbGFz
c1Y4LmNwcDoKKyAgICAgICAgKEphdmFDbGFzczo6SmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlk
Z2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcDoKKyAgICAgICAgKEphdmFJbnN0YW5jZTo6aW52
b2tlTWV0aG9kKToKKwogMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQppbmRleCA1ODM2OGJkZDlmMjg2ZDdhMWIyZDhjNmJlYzRlOWUzYWI4ZDE0MGRmLi4zNGU2
YjhjYzQ1NGVhMDNkMmI0MGE0NmU0ZmZiNWE3NDJiYzdhOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtOTQ4LDYgKzk0OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9K
TklVdGlsaXR5LmggXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNwcCBcCisJU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL0phdmFTdHJpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9KYXZhVHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCA4Zjg5Y2RhMTY3ZjdhNTE3ZjE0M2I2MWVmOTJmYmM5ODVk
Mzc0MDc0Li45YzhlYWQ3YmYwNTUxOTdjNmE5NDYyMzVkOTA2YjRmYzU5YjAwNGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0yMTYzLDggKzIxNjMsOSBAQAogICAgICAgICAgICAgJ2JyaWRnZS9jL2Nf
dXRpbGl0eS5jcHAnLAogICAgICAgICAgICAgJ2JyaWRnZS9jL2NfdXRpbGl0eS5oJywKICAgICAg
ICAgICAgICdicmlkZ2Uvam5pL0pOSVV0aWxpdHkuY3BwJywKLSAgICAgICAgICAgICdicmlkZ2Uv
am5pL0phdmFNZXRob2QuY3BwJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFNZXRob2Qu
aCcsCisgICAgICAgICAgICAnYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAnLAorICAg
ICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3QuaCcsCiAgICAgICAgICAgICAn
YnJpZGdlL2puaS9KYXZhU3RyaW5nLmgnLAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YVR5
cGUuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS9Kb2JqZWN0V3JhcHBlci5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk3MGFmNDljN2ExYjk0ODBjOTc5MWZhNzBmMWJjYjhmZjk0ZjQ1ZDQuLjJlNzFlNTc0Y2Y1MGQ0
OGIwZmIwMTZhZWFhZDgyNzcwOTQwYWYyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MDYsNyArMTQwNiw2IEBACiAJCTU5
MEUxQjRCMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkwRTFC
NEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAg
Ki87IH07CiAJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ay5jcHAgKi87IH07CiAJCTU5MzA5QTEzMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk1OTNEM0VBRDEzMjUzMjg0MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTNEM0VBQzEzMjUzMjg0MDA1N0U3
RUUgLyogSmF2YU1ldGhvZC5jcHAgKi87IH07CiAJCTU5M0QzRUFGMTMyNTMyOEMwMDU3RTdFRSAv
KiBKYXZhTWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyogSmF2YU1ldGhvZC5oICovOyB9OwogCQk1
OTNEM0VCMTEzMjUzMjk1MDA1N0U3RUUgLyogSmF2YVN0cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzRDNFQjAxMzI1MzI5NTAwNTdFN0VFIC8q
IEphdmFTdHJpbmcuaCAqLzsgfTsKIAkJNTk2MjI5NzgxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OTYyMjk3NzExMzNFRkQ3MDBEQzRDQkIgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlLmNwcCAqLzsgfTsKQEAgLTE0MTcsNiArMTQxNiw4IEBACiAJCTU5OEQ3N0RGMTMy
NTQxRkEwMDc2MUIyMiAvKiBKYXZhQXJyYXlKU0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEQ3N0RFMTMyNTQxRkEwMDc2MUIyMiAvKiBKYXZhQXJy
YXlKU0MuaCAqLzsgfTsKIAkJNTk4RDc3RTExMzI1NDIwNDAwNzYxQjIyIC8qIEphdmFGaWVsZEpT
Qy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OThE
NzdFMDEzMjU0MjA0MDA3NjFCMjIgLyogSmF2YUZpZWxkSlNDLmNwcCAqLzsgfTsKIAkJNTk4RDc3
RTMxMzI1NDIwRTAwNzYxQjIyIC8qIEphdmFGaWVsZEpTQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4RDc3RTIxMzI1NDIwRTAwNzYxQjIyIC8qIEph
dmFGaWVsZEpTQy5oICovOyB9OworCQk1OTlDNjcxQzEzNDM0Mzg5MDBDMzQyM0MgLyogSmF2YU1l
dGhvZEpvYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTk5QzY3MUIxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCAq
LzsgfTsKKwkJNTk5QzY3MUUxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTlDNjcxRDEz
NDM0Mzk0MDBDMzQyM0MgLyogSmF2YU1ldGhvZEpvYmplY3QuaCAqLzsgfTsKIAkJNTk5RTc1OTAx
MTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU5QTg1RUEy
MTE5RDY4RDkwMERFRjFFRiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTg1RUExMTE5RDY4RDkwMERF
RjFFRiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCAqLzsgfTsKIAkJNTlBODVFQTQxMTlE
NjhFQzAwREVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5QTg1RUEzMTE5RDY4RUMwMERFRjFFRiAv
KiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggKi87IH07CkBAIC03OTIyLDcgKzc5MjMsNiBAQAog
CQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5
MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAz
IC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTU5M0QzRUFDMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFNZXRob2QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyogSmF2YU1ldGhvZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhTWV0aG9kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTdHJpbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5NzcxMTMzRUZENzAwREM0Q0JCIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzkzNCw2ICs3OTM0LDggQEAKIAkJNTk4RDc3REUxMzI1NDFGQTAwNzYxQjIyIC8q
IEphdmFBcnJheUpTQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKYXZhQXJy
YXlKU0MuaDsgcGF0aCA9IGpzYy9KYXZhQXJyYXlKU0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTk4RDc3RTAxMzI1NDIwNDAwNzYxQjIyIC8qIEphdmFGaWVsZEpTQy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKYXZhRmllbGRKU0MuY3BwOyBwYXRo
ID0ganNjL0phdmFGaWVsZEpTQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5
OEQ3N0UyMTMyNTQyMEUwMDc2MUIyMiAvKiBKYXZhRmllbGRKU0MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSmF2YUZpZWxkSlNDLmg7IHBhdGggPSBqc2MvSmF2YUZpZWxkSlND
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5OUM2NzFCMTM0MzQzODkwMEMzNDIz
QyAvKiBKYXZhTWV0aG9kSm9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKYXZhTWV0aG9kSm9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTU5OUM2NzFEMTM0MzQzOTQwMEMzNDIzQyAvKiBKYXZhTWV0aG9kSm9iamVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhTWV0aG9kSm9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJp
ZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OUE4NUVBMTExOUQ2
OEQ5MDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlBODVFQTMxMTlENjhFQzAwREVGMUVGIC8qIERldmlj
ZU9yaWVudGF0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2
aWNlT3JpZW50YXRpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI4
NTEsNyArMTI4NTMsOCBAQAogCQkxQTU2OUNDRTBEN0UyQjgyMDA3QzM5ODMgLyogam5pICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1OTNEM0VBQzEzMjUz
Mjg0MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5jcHAgKi8sCisJCQkJNTk5QzY3MUQxMzQzNDM5NDAw
QzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmggKi8sCisJCQkJNTk5QzY3MUIxMzQzNDM4OTAw
QzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCAqLywKIAkJCQk1OTNEM0VBRTEzMjUzMjhD
MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5oICovLAogCQkJCTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdF
RSAvKiBKYXZhU3RyaW5nLmggKi8sCiAJCQkJNTlCMEVFQTYxMzJBNkYyQTAwNDMzMUM3IC8qIEph
dmFUeXBlLmggKi8sCkBAIC0yMjcyMSw2ICsyMjcyNCw3IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1
OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJF
MENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU5OUM2NzFFMTM0MzQzOTQwMEMzNDIzQyAvKiBKYXZhTWV0aG9kSm9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yMzk2OSw3ICsyMzk3Myw2IEBACiAJCQkJNTlFNTYwQTkxMTA1MzM2RjAw
QUExMjU4IC8qIEphdmFDbGFzc0pTQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1OThENzdFMTEz
MjU0MjA0MDA3NjFCMjIgLyogSmF2YUZpZWxkSlNDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5
QTlFN0IwMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5zdGFuY2VKU0MuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNTkzRDNFQUQxMzI1MzI4NDAwNTdFN0VFIC8qIEphdmFNZXRob2QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTE2OTgyNjQxMTM0NjdGMzAwODk0MTE1IC8qIEphdmFSdW50aW1lT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2MDM1MTJCMDI2NzYwMEMxQTM1OSAvKiBK
YXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTA5MEU5NzM0
ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjUzOTQsNiArMjUzOTcsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEy
MDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0Uy
RTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTk5QzY3MUMxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9k
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2QuaAppbmRleCBhMjdmNDdj
OTNhZDFiMjk5ZjBjMWQ0MWQwMDk1Nzk3NWYwYTUyN2YzLi5mMTViNjUzYzVjZjdlYTI3YTliOTZl
ZDFhMzJhNjllN2MyZGJjOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0phdmFNZXRob2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2Qu
aApAQCAtMzAsOSArMzAsMTAgQEAKICNpZiBFTkFCTEUoSkFWQV9CUklER0UpCiAKICNpbmNsdWRl
ICJCcmlkZ2UuaCIKLSNpbmNsdWRlICJKYXZhU3RyaW5nLmgiCiAjaW5jbHVkZSAiSmF2YVR5cGUu
aCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiBuYW1lc3BhY2UgSlNDIHsK
IAogbmFtZXNwYWNlIEJpbmRpbmdzIHsKQEAgLTQxLDI5ICs0MiwxMiBAQCB0eXBlZGVmIGNvbnN0
IGNoYXIqIFJ1bnRpbWVUeXBlOwogCiBjbGFzcyBKYXZhTWV0aG9kIDogcHVibGljIE1ldGhvZCB7
CiBwdWJsaWM6Ci0gICAgSmF2YU1ldGhvZChKTklFbnYqLCBqb2JqZWN0IGFNZXRob2QpOwotICAg
IH5KYXZhTWV0aG9kKCk7Ci0KLSAgICBjb25zdCBKYXZhU3RyaW5nJiBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9Ci0gICAgUnVudGltZVR5cGUgcmV0dXJuVHlwZUNsYXNzTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmV0dXJuVHlwZUNsYXNzTmFtZS51dGY4KCk7IH0KLSAgICBjb25zdCBX
VEY6OlN0cmluZyYgcGFyYW1ldGVyQXQoaW50IGkpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
c1tpXTsgfQotICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnNpemUoKTsgfQotCi0gICAgY29uc3QgY2hhciogc2lnbmF0dXJlKCkgY29uc3Q7Ci0gICAg
SmF2YVR5cGUgcmV0dXJuVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmV0dXJuVHlwZTsgfQotCi0g
ICAgam1ldGhvZElEIG1ldGhvZElEKGpvYmplY3Qgb2JqKSBjb25zdDsKLQotICAgIGJvb2wgaXNT
dGF0aWMoKSBjb25zdCB7IHJldHVybiBtX2lzU3RhdGljOyB9Ci0KLXByaXZhdGU6Ci0gICAgVmVj
dG9yPFdURjo6U3RyaW5nPiBtX3BhcmFtZXRlcnM7Ci0gICAgSmF2YVN0cmluZyBtX25hbWU7Ci0g
ICAgbXV0YWJsZSBjaGFyKiBtX3NpZ25hdHVyZTsKLSAgICBKYXZhU3RyaW5nIG1fcmV0dXJuVHlw
ZUNsYXNzTmFtZTsKLSAgICBKYXZhVHlwZSBtX3JldHVyblR5cGU7Ci0gICAgbXV0YWJsZSBqbWV0
aG9kSUQgbV9tZXRob2RJRDsKLSAgICBib29sIG1faXNTdGF0aWM7CisgICAgdmlydHVhbCBTdHJp
bmcgbmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJ1bnRpbWVUeXBlIHJldHVyblR5cGVD
bGFzc05hbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgcGFyYW1ldGVyQXQoaW50
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBzaWduYXR1cmUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBKYXZhVHlwZSByZXR1cm5UeXBlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1N0YXRpYygpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEJp
bmRpbmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RK
b2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDk0ODJiYWQ5MzliMWY0ZWU2MWJmYjZiN2UyZGEzZDZlYzIwZjIxNgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmpl
Y3QuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA3LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBKYXZhTWV0aG9kSm9iamVjdF9oCisjZGVmaW5lIEphdmFNZXRob2RKb2JqZWN0X2gK
KworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFNZXRob2QuaCIKKyNp
bmNsdWRlICJKYXZhU3RyaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCituYW1lc3BhY2UgQmluZGluZ3MgeworCitjbGFzcyBKYXZhTWV0
aG9kSm9iamVjdCA6IHB1YmxpYyBKYXZhTWV0aG9kIHsKK3B1YmxpYzoKKyAgICBKYXZhTWV0aG9k
Sm9iamVjdChKTklFbnYqLCBqb2JqZWN0KTsKKyAgICB2aXJ0dWFsIH5KYXZhTWV0aG9kSm9iamVj
dCgpOworCisgICAgLy8gSmF2YU1ldGhvZCBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUuaW1wbCgpOyB9CisgICAgdmlydHVhbCBS
dW50aW1lVHlwZSByZXR1cm5UeXBlQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1cm5U
eXBlQ2xhc3NOYW1lLnV0ZjgoKTsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHBhcmFtZXRlckF0KGlu
dCBpKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnNbaV07IH0KKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHNpZ25hdHVyZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSmF2YVR5cGUgcmV0dXJuVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmV0dXJuVHlwZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N0
YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGF0aWM7IH0KKworICAgIC8vIE1ldGhvZCBpbXBs
ZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMuc2l6ZSgpOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFN0cmluZz4g
bV9wYXJhbWV0ZXJzOworICAgIEphdmFTdHJpbmcgbV9uYW1lOworICAgIG11dGFibGUgY2hhciog
bV9zaWduYXR1cmU7CisgICAgSmF2YVN0cmluZyBtX3JldHVyblR5cGVDbGFzc05hbWU7CisgICAg
SmF2YVR5cGUgbV9yZXR1cm5UeXBlOworICAgIGJvb2wgbV9pc1N0YXRpYzsKK307CisKK30gLy8g
bmFtZXNwYWNlIEJpbmRpbmdzCisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEpBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSmF2YU1ldGhvZEpvYmplY3RfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKaW5kZXggYTgyMWZm
ZjI2NGU1ZTY3OWMzYTQ0Mjk5ZDVkOTBkYzFmNjQxMTMyMC4uNDRlYTJiNDU0ZDE4ZGFiMzM3M2Ni
N2JmYTRkNzE2M2UzM2NlYmE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUNsYXNzSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pz
Yy9KYXZhQ2xhc3NKU0MuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkphdmFGaWVsZEpTQy5oIgotI2luY2x1ZGUgIkphdmFNZXRob2Qu
aCIKKyNpbmNsdWRlICJKYXZhTWV0aG9kSm9iamVjdC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTc2LDcgKzc2LDcg
QEAgSmF2YUNsYXNzOjpKYXZhQ2xhc3Moam9iamVjdCBhbkluc3RhbmNlKQogICAgICAgICBpbnQg
bnVtTWV0aG9kcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgobWV0aG9kcyk7CiAgICAgICAgIGZvciAo
aSA9IDA7IGkgPCBudW1NZXRob2RzOyBpKyspIHsKICAgICAgICAgICAgIGpvYmplY3QgYUpNZXRo
b2QgPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudCgoam9iamVjdEFycmF5KW1ldGhvZHMsIGkp
OwotICAgICAgICAgICAgSmF2YU1ldGhvZCogYU1ldGhvZCA9IG5ldyBKYXZhTWV0aG9kKGVudiwg
YUpNZXRob2QpOyAvLyBkZWxldGVkIGluIHRoZSBKYXZhQ2xhc3MgZGVzdHJ1Y3RvcgorICAgICAg
ICAgICAgSmF2YU1ldGhvZCogYU1ldGhvZCA9IG5ldyBKYXZhTWV0aG9kSm9iamVjdChlbnYsIGFK
TWV0aG9kKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKICAgICAgICAg
ICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCmluZGV4IGYxZGFkMWVhN2Fi
OGUyZjZmZTNkZDNkNzc3ZjU0NjlhNjNkMjA3OWYuLjgwNmVmYTYwMTBlNzc3MzQzODdiODljZDU4
NDQ1ZDQ3YmQ4YjUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUluc3RhbmNlSlNDLmNwcApAQCAtMTk1LDcgKzE5NSw4IEBAIEpTVmFsdWUgSmF2YUluc3Rh
bmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1l
TWV0aG9kCiAgICAgICAgIGpvYmplY3Qgb2JqID0gbV9pbnN0YW5jZS0+bV9pbnN0YW5jZTsKICAg
ICAgICAgSlNWYWx1ZSBleGNlcHRpb25EZXNjcmlwdGlvbjsKICAgICAgICAgY29uc3QgY2hhciAq
Y2FsbGluZ1VSTCA9IDA7IC8vIEZJWE1FLCBuZWVkIHRvIHByb3BhZ2F0ZSBjYWxsaW5nIFVSTCB0
byBKYXZhCi0gICAgICAgIGhhbmRsZWQgPSBkaXNwYXRjaEpOSUNhbGwoZXhlYywgcm9vdE9iamVj
dC0+bmF0aXZlSGFuZGxlKCksIG9iaiwgak1ldGhvZC0+aXNTdGF0aWMoKSwgak1ldGhvZC0+cmV0
dXJuVHlwZSgpLCBqTWV0aG9kLT5tZXRob2RJRChvYmopLCBqQXJncy5kYXRhKCksIHJlc3VsdCwg
Y2FsbGluZ1VSTCwgZXhjZXB0aW9uRGVzY3JpcHRpb24pOworICAgICAgICBqbWV0aG9kSUQgbWV0
aG9kSWQgPSBnZXRNZXRob2RJRChvYmosIGpNZXRob2QtPm5hbWUoKS51dGY4KCkuZGF0YSgpLCBq
TWV0aG9kLT5zaWduYXR1cmUoKSk7CisgICAgICAgIGhhbmRsZWQgPSBkaXNwYXRjaEpOSUNhbGwo
ZXhlYywgcm9vdE9iamVjdC0+bmF0aXZlSGFuZGxlKCksIG9iaiwgak1ldGhvZC0+aXNTdGF0aWMo
KSwgak1ldGhvZC0+cmV0dXJuVHlwZSgpLCBtZXRob2RJZCwgakFyZ3MuZGF0YSgpLCByZXN1bHQs
IGNhbGxpbmdVUkwsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKICAgICAgICAgaWYgKGV4Y2VwdGlv
bkRlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uLnRvU3RyaW5nKGV4ZWMpKSk7CiAgICAgICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9qbmkvdjgvSmF2YUNsYXNzVjguY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9K
YXZhQ2xhc3NWOC5jcHAKaW5kZXggNTQ0YmVjOTI5N2VlOGJjM2RhY2VlZjA4N2FhY2JiNTgxZTNj
YzU1Zi4uMjRkMDVmMzU5OGZiMTY0MjFmODk3ZmE5ZGYwNGZiZDE0ODRiMDk4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhQ2xhc3NWOC5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpZiBFTkFCTEUoSkFWQV9CUklER0UpCiAKICNpbmNsdWRlICJKYXZhRmllbGRWOC5oIgot
I2luY2x1ZGUgIkphdmFNZXRob2QuaCIKKyNpbmNsdWRlICJKYXZhTWV0aG9kSm9iamVjdC5oIgog
CiB1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKIApAQCAtNjIsMTMgKzYyLDEzIEBAIEph
dmFDbGFzczo6SmF2YUNsYXNzKGpvYmplY3QgYW5JbnN0YW5jZSkKICAgICBpbnQgbnVtTWV0aG9k
cyA9IGVudi0+R2V0QXJyYXlMZW5ndGgobWV0aG9kcyk7CiAgICAgZm9yIChpID0gMDsgaSA8IG51
bU1ldGhvZHM7IGkrKykgewogICAgICAgICBqb2JqZWN0IGFKTWV0aG9kID0gZW52LT5HZXRPYmpl
Y3RBcnJheUVsZW1lbnQoc3RhdGljX2Nhc3Q8am9iamVjdEFycmF5PihtZXRob2RzKSwgaSk7Ci0g
ICAgICAgIEphdmFNZXRob2QqIGFNZXRob2QgPSBuZXcgSmF2YU1ldGhvZChlbnYsIGFKTWV0aG9k
KTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKKyAgICAgICAgSmF2YU1l
dGhvZCogYU1ldGhvZCA9IG5ldyBKYXZhTWV0aG9kSm9iamVjdChlbnYsIGFKTWV0aG9kKTsgLy8g
ZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IKICAgICAgICAgTWV0aG9kTGlzdCog
bWV0aG9kTGlzdDsKICAgICAgICAgewotICAgICAgICAgICAgbWV0aG9kTGlzdCA9IG1fbWV0aG9k
cy5nZXQoYU1ldGhvZC0+bmFtZSgpLnV0ZjgoKSk7CisgICAgICAgICAgICBtZXRob2RMaXN0ID0g
bV9tZXRob2RzLmdldChhTWV0aG9kLT5uYW1lKCkpOwogICAgICAgICAgICAgaWYgKCFtZXRob2RM
aXN0KSB7CiAgICAgICAgICAgICAgICAgbWV0aG9kTGlzdCA9IG5ldyBNZXRob2RMaXN0KCk7Ci0g
ICAgICAgICAgICAgICAgbV9tZXRob2RzLnNldChhTWV0aG9kLT5uYW1lKCkudXRmOCgpLCBtZXRo
b2RMaXN0KTsKKyAgICAgICAgICAgICAgICBtX21ldGhvZHMuc2V0KGFNZXRob2QtPm5hbWUoKSwg
bWV0aG9kTGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbWV0aG9kTGlz
dC0+YXBwZW5kKGFNZXRob2QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS92OC9KYXZhSW5zdGFuY2VWOC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0ph
dmFJbnN0YW5jZVY4LmNwcAppbmRleCAyZDY0YmM3ZTlkM2FmMTAxNTA2ZjQzMzk4ZTA2ZDFkNmI0
Y2VlYThlLi5kMTA3NWFlOTVkMGUyZTAxMTFlOTU0NDAyYWVhYzEwZGQ0ODFkY2JkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL3Y4L0phdmFJbnN0YW5jZVY4LmNwcApAQCAtNzIs
MTIgKzcyLDEyIEBAIEphdmFDbGFzcyogSmF2YUluc3RhbmNlOjpnZXRDbGFzcygpIGNvbnN0CiAK
IEphdmFWYWx1ZSBKYXZhSW5zdGFuY2U6Omludm9rZU1ldGhvZChjb25zdCBKYXZhTWV0aG9kKiBt
ZXRob2QsIEphdmFWYWx1ZSogYXJncykKIHsKLSAgICBBU1NFUlQoZ2V0Q2xhc3MoKS0+bWV0aG9k
c05hbWVkKG1ldGhvZC0+bmFtZSgpLnV0ZjgoKSkuZmluZChtZXRob2QpICE9IG5vdEZvdW5kKTsK
KyAgICBBU1NFUlQoZ2V0Q2xhc3MoKS0+bWV0aG9kc05hbWVkKG1ldGhvZC0+bmFtZSgpLnV0Zjgo
KS5kYXRhKCkpLmZpbmQobWV0aG9kKSAhPSBub3RGb3VuZCk7CiAgICAgdW5zaWduZWQgaW50IG51
bVBhcmFtcyA9IG1ldGhvZC0+bnVtUGFyYW1ldGVycygpOwogICAgIE93bkFycmF5UHRyPGp2YWx1
ZT4ganZhbHVlQXJncyA9IGFkb3B0QXJyYXlQdHIobmV3IGp2YWx1ZVtudW1QYXJhbXNdKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQogICAgICAgICBq
dmFsdWVBcmdzW2ldID0gamF2YVZhbHVlVG9KdmFsdWUoYXJnc1tpXSk7Ci0gICAganZhbHVlIHJl
c3VsdCA9IGNhbGxKTklNZXRob2QoamF2YUluc3RhbmNlKCksIG1ldGhvZC0+cmV0dXJuVHlwZSgp
LCBtZXRob2QtPm5hbWUoKS51dGY4KCksIG1ldGhvZC0+c2lnbmF0dXJlKCksIGp2YWx1ZUFyZ3Mu
Z2V0KCkpOworICAgIGp2YWx1ZSByZXN1bHQgPSBjYWxsSk5JTWV0aG9kKGphdmFJbnN0YW5jZSgp
LCBtZXRob2QtPnJldHVyblR5cGUoKSwgbWV0aG9kLT5uYW1lKCkudXRmOCgpLmRhdGEoKSwgbWV0
aG9kLT5zaWduYXR1cmUoKSwganZhbHVlQXJncy5nZXQoKSk7CiAgICAgcmV0dXJuIGp2YWx1ZVRv
SmF2YVZhbHVlKHJlc3VsdCwgbWV0aG9kLT5yZXR1cm5UeXBlKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87504</attachid>
            <date>2011-03-30 04:55:39 -0700</date>
            <delta_ts>2011-04-06 10:39:28 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>javaMethod.txt</filename>
            <type>text/plain</type>
            <size>33827</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">Y29tbWl0IDE0NTgwYmY0NDM1MDIwMDlhODJhNmE4MjRkNjY1ZGQyMGI4ODliMTcKQXV0aG9yOiBT
dGV2ZSBCbG9jayA8c3RldmVibG9ja0Bnb29nbGUuY29tPgpEYXRlOiAgIFdlZCBNYXIgMzAgMTE6
MTE6MzEgMjAxMSArMDEwMAoKICAgIEFkZCBKYXZhTWV0aG9kIGludGVyZmFjZQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29y
ZS9BbmRyb2lkLmpzY2JpbmRpbmdzLm1rCmluZGV4IDRmZjg4NGMuLjVlNWUzMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dl
YkNvcmUvQW5kcm9pZC5qc2NiaW5kaW5ncy5tawpAQCAtMTk5LDcgKzE5OSw3IEBAIExPQ0FMX1NS
Q19GSUxFUyArPSBcCiAJYnJpZGdlL2MvY19ydW50aW1lLmNwcCBcCiAJYnJpZGdlL2MvY191dGls
aXR5LmNwcCBcCiAJYnJpZGdlL2puaS9KTklVdGlsaXR5LmNwcCBcCi0JYnJpZGdlL2puaS9KYXZh
TWV0aG9kLmNwcCBcCisJYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAgXAogCWJyaWRn
ZS9qbmkvSm9iamVjdFdyYXBwZXIuY3BwIFwKIAlicmlkZ2Uvam5pL2pzYy9KTklVdGlsaXR5UHJp
dmF0ZS5jcHAgXAogCWJyaWRnZS9qbmkvanNjL0phdmFBcnJheUpTQy5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQW5kcm9pZC52OGJpbmRpbmdzLm1rIGIvU291cmNlL1dlYkNvcmUv
QW5kcm9pZC52OGJpbmRpbmdzLm1rCmluZGV4IGQ4MTU0MTcuLjgxZTQ3MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQudjhiaW5kaW5ncy5taworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9BbmRyb2lkLnY4YmluZGluZ3MubWsKQEAgLTE3NSw3ICsxNzUsNyBAQCBMT0NBTF9TUkNfRklM
RVMgKz0gXAogCiBMT0NBTF9TUkNfRklMRVMgKz0gXAogCWJyaWRnZS9qbmkvSk5JVXRpbGl0eS5j
cHAgXAotCWJyaWRnZS9qbmkvSmF2YU1ldGhvZC5jcHAgXAorCWJyaWRnZS9qbmkvSmF2YU1ldGhv
ZEpvYmplY3QuY3BwIFwKIAlicmlkZ2Uvam5pL0pvYmplY3RXcmFwcGVyLmNwcCBcCiAJYnJpZGdl
L2puaS92OC9KTklVdGlsaXR5UHJpdmF0ZS5jcHAgXAogCWJyaWRnZS9qbmkvdjgvSmF2YUNsYXNz
VjguY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDcxZTA0Li5lMjgxNjA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMTEtMDMtMzAgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEph
dmFNZXRob2Qgc2hvdWxkIG5vdCBleHBvc2UgSmF2YVN0cmluZyBpbiBpdHMgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTc2NQorCisgICAgICAg
IC0gRmFjdG9ycyBvdXQgYSBKYXZhTWV0aG9kIGludGVyZmFjZSB3aGljaCBkb2VzIG5vdCB1c2Ug
Sk5JIHR5cGVzLgorICAgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB0aGUgSmF2YSBicmlkZ2UgdG8g
YmUgdXNlZCB3aXRoIG9iamVjdHMgdGhhdAorICAgICAgICAgIGRvbid0IHVzZSBKTkkgZGlyZWN0
bHkuIFRoZSBleGlzdGluZyBqb2JqZWN0LWJhY2tlZAorICAgICAgICAgIGltcGxlbWVudGF0aW9u
IGlzIG1vdmVkIHRvIGEgbmV3IEphdmFNZXRob2RKb2JqZWN0IGNsYXNzIHdoaWNoCisgICAgICAg
ICAgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlLgorICAgICAgICAtIFVzZSBXVEY6OlN0cmluZyBp
biBwbGFjZSBvZiBKYXZhU3RyaW5nIGluIHRoZSBBUEksIGFzIEphdmFTdHJpbmcKKyAgICAgICAg
ICBleHBvc2VzIEpOSSB0eXBlcyBpbiBpdHMgaW50ZXJmYWNlLgorICAgICAgICAtIFJlbW92ZSB0
aGUgbWV0aG9kIElEIGFzIGl0IHVzZXMgSk5JIHR5cGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIEFuZHJvaWQuanNjYmluZGluZ3MubWs6
CisgICAgICAgICogQW5kcm9pZC52OGJpbmRpbmdzLm1rOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnJpZGdlL2puaS9KYXZhTWV0aG9kLmg6Cisg
ICAgICAgICogYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHA6CisgICAgICAgIChKYXZh
TWV0aG9kSm9iamVjdDo6SmF2YU1ldGhvZEpvYmplY3QpOgorICAgICAgICAoSmF2YU1ldGhvZEpv
YmplY3Q6On5KYXZhTWV0aG9kSm9iamVjdCk6CisgICAgICAgIChhcHBlbmRDbGFzc05hbWUpOgor
ICAgICAgICAoSmF2YU1ldGhvZEpvYmplY3Q6OnNpZ25hdHVyZSk6CisgICAgICAgICogYnJpZGdl
L2puaS9KYXZhTWV0aG9kSm9iamVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL0phdmFNZXRob2QuaC4KKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFNZXRob2RK
b2JqZWN0OjpuYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFNZXRob2RKb2JqZWN0
OjpyZXR1cm5UeXBlQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkphdmFNZXRo
b2RKb2JqZWN0OjpwYXJhbWV0ZXJBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0
aG9kSm9iamVjdDo6cmV0dXJuVHlwZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpKYXZhTWV0
aG9kSm9iamVjdDo6aXNTdGF0aWMpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YU1ldGhv
ZEpvYmplY3Q6Om51bVBhcmFtZXRlcnMpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFD
bGFzc0pTQy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6CisgICAgICAgICog
YnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcDoKKyAgICAgICAgKEphdmFJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL3Y4L0phdmFDbGFzc1Y4LmNw
cDoKKyAgICAgICAgKEphdmFDbGFzczo6SmF2YUNsYXNzKToKKyAgICAgICAgKiBicmlkZ2Uvam5p
L3Y4L0phdmFJbnN0YW5jZVY4LmNwcDoKKyAgICAgICAgKEphdmFJbnN0YW5jZTo6aW52b2tlTWV0
aG9kKToKKwogMjAxMS0wMy0zMCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA1ODM2OGJkLi4zNGU2YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtOTQ4LDYgKzk0
OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL0lkZW50
aWZpZXJSZXAuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KTklVdGlsaXR5LmggXAog
CVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvam5pL0phdmFNZXRob2RKb2JqZWN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0phdmFTdHJpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhVHlwZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA4Zjg5Y2RhLi45YzhlYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMTYzLDggKzIx
NjMsOSBAQAogICAgICAgICAgICAgJ2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAnLAogICAgICAgICAg
ICAgJ2JyaWRnZS9jL2NfdXRpbGl0eS5oJywKICAgICAgICAgICAgICdicmlkZ2Uvam5pL0pOSVV0
aWxpdHkuY3BwJywKLSAgICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFNZXRob2QuY3BwJywKICAg
ICAgICAgICAgICdicmlkZ2Uvam5pL0phdmFNZXRob2QuaCcsCisgICAgICAgICAgICAnYnJpZGdl
L2puaS9KYXZhTWV0aG9kSm9iamVjdC5jcHAnLAorICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2
YU1ldGhvZEpvYmplY3QuaCcsCiAgICAgICAgICAgICAnYnJpZGdlL2puaS9KYXZhU3RyaW5nLmgn
LAogICAgICAgICAgICAgJ2JyaWRnZS9qbmkvSmF2YVR5cGUuaCcsCiAgICAgICAgICAgICAnYnJp
ZGdlL2puaS9Kb2JqZWN0V3JhcHBlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3MGFmNDkuLjJlNzFlNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE0MDYsNyArMTQwNiw2IEBACiAJCTU5MEUxQjRCMTFFNEVGNzAwMDY5Rjc4NCAvKiBKU0Rldmlj
ZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTkwRTFCNEExMUU0RUY3MDAwNjlGNzg0IC8qIEpTRGV2aWNlT3Jp
ZW50YXRpb25FdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTU5MzA5QTExMTFGNEFFNTgwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkzMDlBMTAxMUY0QUU1ODAwMjUwNjAzIC8qIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07CiAJCTU5MzA5QTEzMTFGNEFFNkEw
MDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1OTNEM0VBRDEzMjUzMjg0MDA1N0U3RUUgLyogSmF2
YU1ldGhvZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1OTNEM0VBQzEzMjUzMjg0MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5jcHAgKi87IH07CiAJCTU5
M0QzRUFGMTMyNTMyOEMwMDU3RTdFRSAvKiBKYXZhTWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyog
SmF2YU1ldGhvZC5oICovOyB9OwogCQk1OTNEM0VCMTEzMjUzMjk1MDA1N0U3RUUgLyogSmF2YVN0
cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTkz
RDNFQjAxMzI1MzI5NTAwNTdFN0VFIC8qIEphdmFTdHJpbmcuaCAqLzsgfTsKIAkJNTk2MjI5Nzgx
MTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTYyMjk3NzExMzNFRkQ3MDBE
QzRDQkIgLyogR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCAqLzsgfTsKQEAgLTE0MTcsNiAr
MTQxNiw4IEBACiAJCTU5OEQ3N0RGMTMyNTQxRkEwMDc2MUIyMiAvKiBKYXZhQXJyYXlKU0MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5OEQ3N0RFMTMy
NTQxRkEwMDc2MUIyMiAvKiBKYXZhQXJyYXlKU0MuaCAqLzsgfTsKIAkJNTk4RDc3RTExMzI1NDIw
NDAwNzYxQjIyIC8qIEphdmFGaWVsZEpTQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OThENzdFMDEzMjU0MjA0MDA3NjFCMjIgLyogSmF2YUZpZWxk
SlNDLmNwcCAqLzsgfTsKIAkJNTk4RDc3RTMxMzI1NDIwRTAwNzYxQjIyIC8qIEphdmFGaWVsZEpT
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk4RDc3
RTIxMzI1NDIwRTAwNzYxQjIyIC8qIEphdmFGaWVsZEpTQy5oICovOyB9OworCQk1OTlDNjcxQzEz
NDM0Mzg5MDBDMzQyM0MgLyogSmF2YU1ldGhvZEpvYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5QzY3MUIxMzQzNDM4OTAwQzM0MjNDIC8q
IEphdmFNZXRob2RKb2JqZWN0LmNwcCAqLzsgfTsKKwkJNTk5QzY3MUUxMzQzNDM5NDAwQzM0MjND
IC8qIEphdmFNZXRob2RKb2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OTlDNjcxRDEzNDM0Mzk0MDBDMzQyM0MgLyogSmF2YU1ldGhvZEpvYmpl
Y3QuaCAqLzsgfTsKIAkJNTk5RTc1OTAxMTA1NUExRjAwRDkwNEZBIC8qIEJyaWRnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTk5RTc1OEYxMTA1NUEx
RjAwRDkwNEZBIC8qIEJyaWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU5QTg1RUEyMTE5RDY4RDkwMERFRjFFRiAvKiBEZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU5QTg1RUExMTE5RDY4RDkwMERFRjFFRiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNw
cCAqLzsgfTsKIAkJNTlBODVFQTQxMTlENjhFQzAwREVGMUVGIC8qIERldmljZU9yaWVudGF0aW9u
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
QTg1RUEzMTE5RDY4RUMwMERFRjFFRiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggKi87IH07
CkBAIC03OTIyLDcgKzc5MjMsNiBAQAogCQk1OTBFMUI0QTExRTRFRjcwMDA2OUY3ODQgLyogSlNE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2suaDsgcGF0aCA9IG1vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU5M0QzRUFDMTMyNTMyODQwMDU3RTdFRSAvKiBKYXZh
TWV0aG9kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFNZXRo
b2QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTNEM0VBRTEzMjUzMjhDMDA1
N0U3RUUgLyogSmF2YU1ldGhvZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
YXZhTWV0aG9kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5M0QzRUIwMTMyNTMy
OTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEphdmFTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk2MjI5Nzcx
MTMzRUZENzAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkzNCw2ICs3OTM0LDggQEAKIAkJNTk4
RDc3REUxMzI1NDFGQTAwNzYxQjIyIC8qIEphdmFBcnJheUpTQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBKYXZhQXJyYXlKU0MuaDsgcGF0aCA9IGpzYy9KYXZhQXJyYXlKU0Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTk4RDc3RTAxMzI1NDIwNDAwNzYxQjIy
IC8qIEphdmFGaWVsZEpTQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBKYXZhRmllbGRKU0MuY3BwOyBwYXRoID0ganNjL0phdmFGaWVsZEpTQy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5OEQ3N0UyMTMyNTQyMEUwMDc2MUIyMiAvKiBKYXZhRmll
bGRKU0MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSmF2YUZpZWxkSlNDLmg7
IHBhdGggPSBqc2MvSmF2YUZpZWxkSlNDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTU5OUM2NzFCMTM0MzQzODkwMEMzNDIzQyAvKiBKYXZhTWV0aG9kSm9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKYXZhTWV0aG9kSm9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU5OUM2NzFEMTM0MzQzOTQwMEMzNDIzQyAvKiBK
YXZhTWV0aG9kSm9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZh
TWV0aG9kSm9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTlFNzU4RjEx
MDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEJyaWRnZS5oOyBwYXRoID0gYnJpZGdlL0JyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1OUE4NUVBMTExOUQ2OEQ5MDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25F
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTlBODVFQTMx
MTlENjhFQzAwREVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25FdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI4NTEsNyArMTI4NTMsOCBAQAogCQkxQTU2OUNDRTBEN0Uy
QjgyMDA3QzM5ODMgLyogam5pICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKLQkJCQk1OTNEM0VBQzEzMjUzMjg0MDA1N0U3RUUgLyogSmF2YU1ldGhvZC5jcHAgKi8s
CisJCQkJNTk5QzY3MUQxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmggKi8s
CisJCQkJNTk5QzY3MUIxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCAq
LywKIAkJCQk1OTNEM0VBRTEzMjUzMjhDMDA1N0U3RUUgLyogSmF2YU1ldGhvZC5oICovLAogCQkJ
CTU5M0QzRUIwMTMyNTMyOTUwMDU3RTdFRSAvKiBKYXZhU3RyaW5nLmggKi8sCiAJCQkJNTlCMEVF
QTYxMzJBNkYyQTAwNDMzMUM3IC8qIEphdmFUeXBlLmggKi8sCkBAIC0yMjcyMSw2ICsyMjcyNCw3
IEBACiAJCQkJOTNGMTk5RUQwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTU5OUM2NzFFMTM0MzQzOTQwMEMzNDIzQyAvKiBK
YXZhTWV0aG9kSm9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMzk2OSw3ICsyMzk3Myw2IEBA
CiAJCQkJNTlFNTYwQTkxMTA1MzM2RjAwQUExMjU4IC8qIEphdmFDbGFzc0pTQy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1OThENzdFMTEzMjU0MjA0MDA3NjFCMjIgLyogSmF2YUZpZWxkSlNDLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTU5QTlFN0IwMTEwNDc1ODgwMERGQjRDMSAvKiBKYXZhSW5z
dGFuY2VKU0MuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTkzRDNFQUQxMzI1MzI4NDAwNTdFN0VF
IC8qIEphdmFNZXRob2QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE2OTgyNjQxMTM0NjdGMzAw
ODk0MTE1IC8qIEphdmFSdW50aW1lT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMzE2
MDM1MTJCMDI2NzYwMEMxQTM1OSAvKiBKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFDODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUzOTQsNiArMjUzOTcsNyBAQAogCQkJCTkzRjE5QjA1
MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTk5QzY3MUMxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFN
ZXRob2RKb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
SmF2YU1ldGhvZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YjgwYzUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkphdmFNZXRob2QuaCIKLQotI2lmIEVOQUJM
RShKQVZBX0JSSURHRSkKLQotI2luY2x1ZGUgIkphdmFTdHJpbmcuaCIKLQotI2lmIFVTRShKU0Mp
Ci0jaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgotI2luY2x1ZGUgPHJ1bnRpbWUvU2NvcGVD
aGFpbi5oPgotI2VuZGlmCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotCi11
c2luZyBuYW1lc3BhY2UgSlNDOwotdXNpbmcgbmFtZXNwYWNlIEpTQzo6QmluZGluZ3M7Ci0KLUph
dmFNZXRob2Q6OkphdmFNZXRob2QoSk5JRW52KiBlbnYsIGpvYmplY3QgYU1ldGhvZCkKLXsKLSAg
ICAvLyBHZXQgcmV0dXJuIHR5cGUgbmFtZQotICAgIGpzdHJpbmcgcmV0dXJuVHlwZU5hbWUgPSAw
OwotICAgIGlmIChqb2JqZWN0IHJldHVyblR5cGUgPSBjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KGFN
ZXRob2QsICJnZXRSZXR1cm5UeXBlIiwgIigpTGphdmEvbGFuZy9DbGFzczsiKSkgewotICAgICAg
ICAgICAgcmV0dXJuVHlwZU5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5nPihjYWxsSk5JTWV0aG9k
PGpvYmplY3Q+KHJldHVyblR5cGUsICJnZXROYW1lIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7Iikp
OwotICAgICAgICBpZiAoIXJldHVyblR5cGVOYW1lKQotICAgICAgICAgICAgcmV0dXJuVHlwZU5h
bWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7Ci0gICAgICAgIGVudi0+RGVsZXRl
TG9jYWxSZWYocmV0dXJuVHlwZSk7Ci0gICAgfQotICAgIG1fcmV0dXJuVHlwZUNsYXNzTmFtZSA9
IEphdmFTdHJpbmcoZW52LCByZXR1cm5UeXBlTmFtZSk7Ci0gICAgbV9yZXR1cm5UeXBlID0gamF2
YVR5cGVGcm9tQ2xhc3NOYW1lKG1fcmV0dXJuVHlwZUNsYXNzTmFtZS51dGY4KCkpOwotICAgIGVu
di0+RGVsZXRlTG9jYWxSZWYocmV0dXJuVHlwZU5hbWUpOwotCi0gICAgLy8gR2V0IG1ldGhvZCBu
YW1lCi0gICAganN0cmluZyBtZXRob2ROYW1lID0gc3RhdGljX2Nhc3Q8anN0cmluZz4oY2FsbEpO
SU1ldGhvZDxqb2JqZWN0PihhTWV0aG9kLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5n
OyIpKTsKLSAgICBpZiAoIW1ldGhvZE5hbWUpCi0gICAgICAgIG1ldGhvZE5hbWUgPSBlbnYtPk5l
d1N0cmluZ1VURigiPFVua25vd24+Iik7Ci0gICAgbV9uYW1lID0gSmF2YVN0cmluZyhlbnYsIG1l
dGhvZE5hbWUpOwotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobWV0aG9kTmFtZSk7Ci0KLSAgICAv
LyBHZXQgcGFyYW1ldGVycwotICAgIGlmIChqYXJyYXkganBhcmFtZXRlcnMgPSBzdGF0aWNfY2Fz
dDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwgImdldFBhcmFtZXRlclR5
cGVzIiwgIigpW0xqYXZhL2xhbmcvQ2xhc3M7IikpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBu
dW1QYXJhbXMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGpwYXJhbWV0ZXJzKTsKLQotICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgaSsrKSB7Ci0gICAgICAgICAg
ICBqb2JqZWN0IGFQYXJhbWV0ZXIgPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChzdGF0aWNf
Y2FzdDxqb2JqZWN0QXJyYXk+KGpwYXJhbWV0ZXJzKSwgaSk7Ci0gICAgICAgICAgICBqc3RyaW5n
IHBhcmFtZXRlck5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5nPihjYWxsSk5JTWV0aG9kPGpvYmpl
Y3Q+KGFQYXJhbWV0ZXIsICJnZXROYW1lIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7IikpOwotICAg
ICAgICAgICAgaWYgKCFwYXJhbWV0ZXJOYW1lKQotICAgICAgICAgICAgICAgIHBhcmFtZXRlck5h
bWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7Ci0gICAgICAgICAgICBtX3BhcmFt
ZXRlcnMuYXBwZW5kKEphdmFTdHJpbmcoZW52LCBwYXJhbWV0ZXJOYW1lKS5pbXBsKCkpOwotICAg
ICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhUGFyYW1ldGVyKTsKLSAgICAgICAgICAgIGVu
di0+RGVsZXRlTG9jYWxSZWYocGFyYW1ldGVyTmFtZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZW52
LT5EZWxldGVMb2NhbFJlZihqcGFyYW1ldGVycyk7Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlZCBs
YXppbHkuCi0gICAgbV9zaWduYXR1cmUgPSAwOwotICAgIG1fbWV0aG9kSUQgPSAwOwotCi0gICAg
amNsYXNzIG1vZGlmaWVyQ2xhc3MgPSBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5nL3JlZmxlY3Qv
TW9kaWZpZXIiKTsKLSAgICBpbnQgbW9kaWZpZXJzID0gY2FsbEpOSU1ldGhvZDxqaW50PihhTWV0
aG9kLCAiZ2V0TW9kaWZpZXJzIiwgIigpSSIpOwotICAgIG1faXNTdGF0aWMgPSBzdGF0aWNfY2Fz
dDxib29sPihjYWxsSk5JU3RhdGljTWV0aG9kPGpib29sZWFuPihtb2RpZmllckNsYXNzLCAiaXNT
dGF0aWMiLCAiKEkpWiIsIG1vZGlmaWVycykpOwotICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobW9k
aWZpZXJDbGFzcyk7Ci19Ci0KLUphdmFNZXRob2Q6On5KYXZhTWV0aG9kKCkKLXsKLSAgICBpZiAo
bV9zaWduYXR1cmUpCi0gICAgICAgIGZhc3RGcmVlKG1fc2lnbmF0dXJlKTsKLX0KLQotLy8gSk5J
IG1ldGhvZCBzaWduYXR1cmVzIHVzZSAnLycgYmV0d2VlbiBjb21wb25lbnRzIG9mIGEgY2xhc3Mg
bmFtZSwgYnV0Ci0vLyB3ZSBnZXQgJy4nIGJldHdlZW4gY29tcG9uZW50cyBmcm9tIHRoZSByZWZs
ZWN0aW9uIEFQSS4KLXN0YXRpYyB2b2lkIGFwcGVuZENsYXNzTmFtZShTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBjaGFyKiBjbGFzc05hbWUpCi17Ci0jaWYgVVNFKEpTQykKLSAgICBBU1NF
UlQoSlNMb2NrOjpsb2NrQ291bnQoKSA+IDApOwotI2VuZGlmCi0KLSAgICBjaGFyKiBjID0gZmFz
dFN0ckR1cChjbGFzc05hbWUpOwotCi0gICAgY2hhciogcmVzdWx0ID0gYzsKLSAgICB3aGlsZSAo
KmMpIHsKLSAgICAgICAgaWYgKCpjID09ICcuJykKLSAgICAgICAgICAgICpjID0gJy8nOwotICAg
ICAgICBjKys7Ci0gICAgfQotCi0gICAgYnVpbGRlci5hcHBlbmQocmVzdWx0KTsKLQotICAgIGZh
c3RGcmVlKHJlc3VsdCk7Ci19Ci0KLWNvbnN0IGNoYXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NpZ25hdHVyZSkgewotI2lmIFVTRShKU0MpCi0gICAgICAg
IEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0jZW5kaWYKLQotICAgICAgICBT
dHJpbmdCdWlsZGVyIHNpZ25hdHVyZUJ1aWxkZXI7Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIu
YXBwZW5kKCcoJyk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbV9wYXJh
bWV0ZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBDU3RyaW5nIGphdmFDbGFzc05hbWUg
PSBwYXJhbWV0ZXJBdChpKS51dGY4KCk7Ci0gICAgICAgICAgICBKYXZhVHlwZSB0eXBlID0gamF2
YVR5cGVGcm9tQ2xhc3NOYW1lKGphdmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgIGlm
ICh0eXBlID09IEphdmFUeXBlQXJyYXkpCi0gICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1l
KHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKHNpZ25hdHVyZUZy
b21KYXZhVHlwZSh0eXBlKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gSmF2YVR5cGVP
YmplY3QpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1
aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2lnbmF0
dXJlQnVpbGRlci5hcHBlbmQoJzsnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJyknKTsKLQotICAg
ICAgICBjb25zdCBjaGFyKiByZXR1cm5UeXBlID0gbV9yZXR1cm5UeXBlQ2xhc3NOYW1lLnV0Zjgo
KTsKLSAgICAgICAgaWYgKG1fcmV0dXJuVHlwZSA9PSBKYXZhVHlwZUFycmF5KQotICAgICAgICAg
ICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIHJldHVyblR5cGUpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKHNpZ25hdHVyZUZy
b21KYXZhVHlwZShtX3JldHVyblR5cGUpKTsKLSAgICAgICAgICAgIGlmIChtX3JldHVyblR5cGUg
PT0gSmF2YVR5cGVPYmplY3QpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2ln
bmF0dXJlQnVpbGRlciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVp
bGRlci5hcHBlbmQoJzsnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIFN0
cmluZyBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmVCdWlsZGVyLnRvU3RyaW5nKCk7Ci0gICAg
ICAgIG1fc2lnbmF0dXJlID0gZmFzdFN0ckR1cChzaWduYXR1cmVTdHJpbmcudXRmOCgpLmRhdGEo
KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fc2lnbmF0dXJlOwotfQotCi1qbWV0aG9kSUQgSmF2
YU1ldGhvZDo6bWV0aG9kSUQoam9iamVjdCBvYmopIGNvbnN0Ci17Ci0gICAgaWYgKCFtX21ldGhv
ZElEKQotICAgICAgICBtX21ldGhvZElEID0gZ2V0TWV0aG9kSUQob2JqLCBtX25hbWUudXRmOCgp
LCBzaWduYXR1cmUoKSk7Ci0gICAgcmV0dXJuIG1fbWV0aG9kSUQ7Ci19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0phdmFNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZC5oCmlu
ZGV4IGEyN2Y0N2MuLmYxNWI2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9q
bmkvSmF2YU1ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhv
ZC5oCkBAIC0zMCw5ICszMCwxMCBAQAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAogI2luY2x1
ZGUgIkJyaWRnZS5oIgotI2luY2x1ZGUgIkphdmFTdHJpbmcuaCIKICNpbmNsdWRlICJKYXZhVHlw
ZS5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKIG5hbWVzcGFjZSBKU0Mg
ewogCiBuYW1lc3BhY2UgQmluZGluZ3MgewpAQCAtNDEsMjkgKzQyLDEyIEBAIHR5cGVkZWYgY29u
c3QgY2hhciogUnVudGltZVR5cGU7CiAKIGNsYXNzIEphdmFNZXRob2QgOiBwdWJsaWMgTWV0aG9k
IHsKIHB1YmxpYzoKLSAgICBKYXZhTWV0aG9kKEpOSUVudiosIGpvYmplY3QgYU1ldGhvZCk7Ci0g
ICAgfkphdmFNZXRob2QoKTsKLQotICAgIGNvbnN0IEphdmFTdHJpbmcmIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KLSAgICBSdW50aW1lVHlwZSByZXR1cm5UeXBlQ2xhc3NOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXR1cm5UeXBlQ2xhc3NOYW1lLnV0ZjgoKTsgfQotICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBwYXJhbWV0ZXJBdChpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzW2ldOyB9Ci0gICAgaW50IG51bVBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMuc2l6ZSgpOyB9Ci0KLSAgICBjb25zdCBjaGFyKiBzaWduYXR1cmUoKSBjb25zdDsKLSAg
ICBKYXZhVHlwZSByZXR1cm5UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1cm5UeXBlOyB9Ci0K
LSAgICBqbWV0aG9kSUQgbWV0aG9kSUQoam9iamVjdCBvYmopIGNvbnN0OwotCi0gICAgYm9vbCBp
c1N0YXRpYygpIGNvbnN0IHsgcmV0dXJuIG1faXNTdGF0aWM7IH0KLQotcHJpdmF0ZToKLSAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fcGFyYW1ldGVyczsKLSAgICBKYXZhU3RyaW5nIG1fbmFtZTsK
LSAgICBtdXRhYmxlIGNoYXIqIG1fc2lnbmF0dXJlOwotICAgIEphdmFTdHJpbmcgbV9yZXR1cm5U
eXBlQ2xhc3NOYW1lOwotICAgIEphdmFUeXBlIG1fcmV0dXJuVHlwZTsKLSAgICBtdXRhYmxlIGpt
ZXRob2RJRCBtX21ldGhvZElEOwotICAgIGJvb2wgbV9pc1N0YXRpYzsKKyAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUnVudGltZVR5cGUgcmV0dXJuVHlw
ZUNsYXNzTmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBwYXJhbWV0ZXJBdChp
bnQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHNpZ25hdHVyZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEphdmFUeXBlIHJldHVyblR5cGUoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzU3RhdGljKCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhv
ZEpvYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVj
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYyODAyYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvSmF2YU1ldGhvZEpvYmplY3Qu
Y3BwCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFNZXRob2RKb2JqZWN0LmgiCisKKyNpZiBFTkFC
TEUoSkFWQV9CUklER0UpCisKKyNpbmNsdWRlICJKYXZhU3RyaW5nLmgiCisKKyNpZiBVU0UoSlND
KQorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL1Njb3Bl
Q2hhaW4uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdzOworCitK
YXZhTWV0aG9kSm9iamVjdDo6SmF2YU1ldGhvZEpvYmplY3QoSk5JRW52KiBlbnYsIGpvYmplY3Qg
YU1ldGhvZCkKK3sKKyAgICAvLyBHZXQgcmV0dXJuIHR5cGUgbmFtZQorICAgIGpzdHJpbmcgcmV0
dXJuVHlwZU5hbWUgPSAwOworICAgIGlmIChqb2JqZWN0IHJldHVyblR5cGUgPSBjYWxsSk5JTWV0
aG9kPGpvYmplY3Q+KGFNZXRob2QsICJnZXRSZXR1cm5UeXBlIiwgIigpTGphdmEvbGFuZy9DbGFz
czsiKSkgeworICAgICAgICAgICAgcmV0dXJuVHlwZU5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5n
PihjYWxsSk5JTWV0aG9kPGpvYmplY3Q+KHJldHVyblR5cGUsICJnZXROYW1lIiwgIigpTGphdmEv
bGFuZy9TdHJpbmc7IikpOworICAgICAgICBpZiAoIXJldHVyblR5cGVOYW1lKQorICAgICAgICAg
ICAgcmV0dXJuVHlwZU5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7CisgICAg
ICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0dXJuVHlwZSk7CisgICAgfQorICAgIG1fcmV0dXJu
VHlwZUNsYXNzTmFtZSA9IEphdmFTdHJpbmcoZW52LCByZXR1cm5UeXBlTmFtZSk7CisgICAgbV9y
ZXR1cm5UeXBlID0gamF2YVR5cGVGcm9tQ2xhc3NOYW1lKG1fcmV0dXJuVHlwZUNsYXNzTmFtZS51
dGY4KCkpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0dXJuVHlwZU5hbWUpOworCisgICAg
Ly8gR2V0IG1ldGhvZCBuYW1lCisgICAganN0cmluZyBtZXRob2ROYW1lID0gc3RhdGljX2Nhc3Q8
anN0cmluZz4oY2FsbEpOSU1ldGhvZDxqb2JqZWN0PihhTWV0aG9kLCAiZ2V0TmFtZSIsICIoKUxq
YXZhL2xhbmcvU3RyaW5nOyIpKTsKKyAgICBpZiAoIW1ldGhvZE5hbWUpCisgICAgICAgIG1ldGhv
ZE5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7CisgICAgbV9uYW1lID0gSmF2
YVN0cmluZyhlbnYsIG1ldGhvZE5hbWUpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobWV0aG9k
TmFtZSk7CisKKyAgICAvLyBHZXQgcGFyYW1ldGVycworICAgIGlmIChqYXJyYXkganBhcmFtZXRl
cnMgPSBzdGF0aWNfY2FzdDxqYXJyYXk+KGNhbGxKTklNZXRob2Q8am9iamVjdD4oYU1ldGhvZCwg
ImdldFBhcmFtZXRlclR5cGVzIiwgIigpW0xqYXZhL2xhbmcvQ2xhc3M7IikpKSB7CisgICAgICAg
IHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKGpwYXJhbWV0ZXJz
KTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsgaSsr
KSB7CisgICAgICAgICAgICBqb2JqZWN0IGFQYXJhbWV0ZXIgPSBlbnYtPkdldE9iamVjdEFycmF5
RWxlbWVudChzdGF0aWNfY2FzdDxqb2JqZWN0QXJyYXk+KGpwYXJhbWV0ZXJzKSwgaSk7CisgICAg
ICAgICAgICBqc3RyaW5nIHBhcmFtZXRlck5hbWUgPSBzdGF0aWNfY2FzdDxqc3RyaW5nPihjYWxs
Sk5JTWV0aG9kPGpvYmplY3Q+KGFQYXJhbWV0ZXIsICJnZXROYW1lIiwgIigpTGphdmEvbGFuZy9T
dHJpbmc7IikpOworICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJOYW1lKQorICAgICAgICAgICAg
ICAgIHBhcmFtZXRlck5hbWUgPSBlbnYtPk5ld1N0cmluZ1VURigiPFVua25vd24+Iik7CisgICAg
ICAgICAgICBtX3BhcmFtZXRlcnMuYXBwZW5kKEphdmFTdHJpbmcoZW52LCBwYXJhbWV0ZXJOYW1l
KS5pbXBsKCkpOworICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhUGFyYW1ldGVyKTsK
KyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocGFyYW1ldGVyTmFtZSk7CisgICAgICAg
IH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqcGFyYW1ldGVycyk7CisgICAgfQorCisg
ICAgLy8gQ3JlYXRlZCBsYXppbHkuCisgICAgbV9zaWduYXR1cmUgPSAwOworCisgICAgamNsYXNz
IG1vZGlmaWVyQ2xhc3MgPSBlbnYtPkZpbmRDbGFzcygiamF2YS9sYW5nL3JlZmxlY3QvTW9kaWZp
ZXIiKTsKKyAgICBpbnQgbW9kaWZpZXJzID0gY2FsbEpOSU1ldGhvZDxqaW50PihhTWV0aG9kLCAi
Z2V0TW9kaWZpZXJzIiwgIigpSSIpOworICAgIG1faXNTdGF0aWMgPSBzdGF0aWNfY2FzdDxib29s
PihjYWxsSk5JU3RhdGljTWV0aG9kPGpib29sZWFuPihtb2RpZmllckNsYXNzLCAiaXNTdGF0aWMi
LCAiKEkpWiIsIG1vZGlmaWVycykpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYobW9kaWZpZXJD
bGFzcyk7Cit9CisKK0phdmFNZXRob2RKb2JqZWN0Ojp+SmF2YU1ldGhvZEpvYmplY3QoKQorewor
ICAgIGlmIChtX3NpZ25hdHVyZSkKKyAgICAgICAgZmFzdEZyZWUobV9zaWduYXR1cmUpOworfQor
CisvLyBKTkkgbWV0aG9kIHNpZ25hdHVyZXMgdXNlICcvJyBiZXR3ZWVuIGNvbXBvbmVudHMgb2Yg
YSBjbGFzcyBuYW1lLCBidXQKKy8vIHdlIGdldCAnLicgYmV0d2VlbiBjb21wb25lbnRzIGZyb20g
dGhlIHJlZmxlY3Rpb24gQVBJLgorc3RhdGljIHZvaWQgYXBwZW5kQ2xhc3NOYW1lKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIGNvbnN0IGNoYXIqIGNsYXNzTmFtZSkKK3sKKyNpZiBVU0UoSlNDKQor
ICAgIEFTU0VSVChKU0xvY2s6OmxvY2tDb3VudCgpID4gMCk7CisjZW5kaWYKKworICAgIGNoYXIq
IGMgPSBmYXN0U3RyRHVwKGNsYXNzTmFtZSk7CisKKyAgICBjaGFyKiByZXN1bHQgPSBjOworICAg
IHdoaWxlICgqYykgeworICAgICAgICBpZiAoKmMgPT0gJy4nKQorICAgICAgICAgICAgKmMgPSAn
Lyc7CisgICAgICAgIGMrKzsKKyAgICB9CisKKyAgICBidWlsZGVyLmFwcGVuZChyZXN1bHQpOwor
CisgICAgZmFzdEZyZWUocmVzdWx0KTsKK30KKworY29uc3QgY2hhciogSmF2YU1ldGhvZEpvYmpl
Y3Q6OnNpZ25hdHVyZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NpZ25hdHVyZSkgeworI2lmIFVT
RShKU0MpCisgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisjZW5k
aWYKKworICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25hdHVyZUJ1aWxkZXI7CisgICAgICAgIHNp
Z25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkg
PSAwOyBpIDwgbV9wYXJhbWV0ZXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBDU3RyaW5n
IGphdmFDbGFzc05hbWUgPSBwYXJhbWV0ZXJBdChpKS51dGY4KCk7CisgICAgICAgICAgICBKYXZh
VHlwZSB0eXBlID0gamF2YVR5cGVGcm9tQ2xhc3NOYW1lKGphdmFDbGFzc05hbWUuZGF0YSgpKTsK
KyAgICAgICAgICAgIGlmICh0eXBlID09IEphdmFUeXBlQXJyYXkpCisgICAgICAgICAgICAgICAg
YXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0YSgpKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBw
ZW5kKHNpZ25hdHVyZUZyb21KYXZhVHlwZSh0eXBlKSk7CisgICAgICAgICAgICAgICAgaWYgKHR5
cGUgPT0gSmF2YVR5cGVPYmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NO
YW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGphdmFDbGFzc05hbWUuZGF0YSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBl
bmQoJyknKTsKKworICAgICAgICBjb25zdCBjaGFyKiByZXR1cm5UeXBlID0gbV9yZXR1cm5UeXBl
Q2xhc3NOYW1lLnV0ZjgoKTsKKyAgICAgICAgaWYgKG1fcmV0dXJuVHlwZSA9PSBKYXZhVHlwZUFy
cmF5KQorICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIHJldHVy
blR5cGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBw
ZW5kKHNpZ25hdHVyZUZyb21KYXZhVHlwZShtX3JldHVyblR5cGUpKTsKKyAgICAgICAgICAgIGlm
IChtX3JldHVyblR5cGUgPT0gSmF2YVR5cGVPYmplY3QpIHsKKyAgICAgICAgICAgICAgICBhcHBl
bmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRlciwgcmV0dXJuVHlwZSk7CisgICAgICAgICAgICAg
ICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoJzsnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIFN0cmluZyBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmVCdWlsZGVyLnRv
U3RyaW5nKCk7CisgICAgICAgIG1fc2lnbmF0dXJlID0gZmFzdFN0ckR1cChzaWduYXR1cmVTdHJp
bmcudXRmOCgpLmRhdGEoKSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fc2lnbmF0dXJlOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2puaS9KYXZhTWV0aG9kSm9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9KYXZhTWV0aG9kSm9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ5NDgyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5p
L0phdmFNZXRob2RKb2JqZWN0LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2Ug
UHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSmF2YU1ldGhvZEpvYmplY3RfaAorI2RlZmluZSBKYXZh
TWV0aG9kSm9iamVjdF9oCisKKyNpZiBFTkFCTEUoSkFWQV9CUklER0UpCisKKyNpbmNsdWRlICJK
YXZhTWV0aG9kLmgiCisjaW5jbHVkZSAiSmF2YVN0cmluZy5oIgorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworbmFtZXNwYWNlIEJpbmRpbmdzIHsK
KworY2xhc3MgSmF2YU1ldGhvZEpvYmplY3QgOiBwdWJsaWMgSmF2YU1ldGhvZCB7CitwdWJsaWM6
CisgICAgSmF2YU1ldGhvZEpvYmplY3QoSk5JRW52Kiwgam9iamVjdCk7CisgICAgdmlydHVhbCB+
SmF2YU1ldGhvZEpvYmplY3QoKTsKKworICAgIC8vIEphdmFNZXRob2QgaW1wbGVtZW50YXRpb24K
KyAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmltcGwoKTsg
fQorICAgIHZpcnR1YWwgUnVudGltZVR5cGUgcmV0dXJuVHlwZUNsYXNzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmV0dXJuVHlwZUNsYXNzTmFtZS51dGY4KCk7IH0KKyAgICB2aXJ0dWFsIFN0cmlu
ZyBwYXJhbWV0ZXJBdChpbnQgaSkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzW2ldOyB9Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiBzaWduYXR1cmUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEph
dmFUeXBlIHJldHVyblR5cGUoKSBjb25zdCB7IHJldHVybiBtX3JldHVyblR5cGU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJldHVybiBtX2lzU3RhdGljOyB9CisKKyAg
ICAvLyBNZXRob2QgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsgfQorCitwcml2YXRlOgorICAg
IFZlY3RvcjxTdHJpbmc+IG1fcGFyYW1ldGVyczsKKyAgICBKYXZhU3RyaW5nIG1fbmFtZTsKKyAg
ICBtdXRhYmxlIGNoYXIqIG1fc2lnbmF0dXJlOworICAgIEphdmFTdHJpbmcgbV9yZXR1cm5UeXBl
Q2xhc3NOYW1lOworICAgIEphdmFUeXBlIG1fcmV0dXJuVHlwZTsKKyAgICBib29sIG1faXNTdGF0
aWM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2VuZGlmIC8vIEphdmFNZXRob2RK
b2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFD
bGFzc0pTQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0Mu
Y3BwCmluZGV4IGE4MjFmZmYuLjQ0ZWEyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSAi
SlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKYXZhRmllbGRKU0MuaCIKLSNpbmNsdWRlICJKYXZh
TWV0aG9kLmgiCisjaW5jbHVkZSAiSmF2YU1ldGhvZEpvYmplY3QuaCIKICNpbmNsdWRlIDxydW50
aW1lL0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC03Niw3
ICs3Niw3IEBAIEphdmFDbGFzczo6SmF2YUNsYXNzKGpvYmplY3QgYW5JbnN0YW5jZSkKICAgICAg
ICAgaW50IG51bU1ldGhvZHMgPSBlbnYtPkdldEFycmF5TGVuZ3RoKG1ldGhvZHMpOwogICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgbnVtTWV0aG9kczsgaSsrKSB7CiAgICAgICAgICAgICBqb2JqZWN0
IGFKTWV0aG9kID0gZW52LT5HZXRPYmplY3RBcnJheUVsZW1lbnQoKGpvYmplY3RBcnJheSltZXRo
b2RzLCBpKTsKLSAgICAgICAgICAgIEphdmFNZXRob2QqIGFNZXRob2QgPSBuZXcgSmF2YU1ldGhv
ZChlbnYsIGFKTWV0aG9kKTsgLy8gZGVsZXRlZCBpbiB0aGUgSmF2YUNsYXNzIGRlc3RydWN0b3IK
KyAgICAgICAgICAgIEphdmFNZXRob2QqIGFNZXRob2QgPSBuZXcgSmF2YU1ldGhvZEpvYmplY3Qo
ZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCiAg
ICAgICAgICAgICBNZXRob2RMaXN0KiBtZXRob2RMaXN0OwogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAppbmRleCBmMWRh
ZDFlLi44MDZlZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhSW5zdGFuY2VKU0MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0ph
dmFJbnN0YW5jZUpTQy5jcHAKQEAgLTE5NSw3ICsxOTUsOCBAQCBKU1ZhbHVlIEphdmFJbnN0YW5j
ZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1l
dGhvZAogICAgICAgICBqb2JqZWN0IG9iaiA9IG1faW5zdGFuY2UtPm1faW5zdGFuY2U7CiAgICAg
ICAgIEpTVmFsdWUgZXhjZXB0aW9uRGVzY3JpcHRpb247CiAgICAgICAgIGNvbnN0IGNoYXIgKmNh
bGxpbmdVUkwgPSAwOyAvLyBGSVhNRSwgbmVlZCB0byBwcm9wYWdhdGUgY2FsbGluZyBVUkwgdG8g
SmF2YQotICAgICAgICBoYW5kbGVkID0gZGlzcGF0Y2hKTklDYWxsKGV4ZWMsIHJvb3RPYmplY3Qt
Pm5hdGl2ZUhhbmRsZSgpLCBvYmosIGpNZXRob2QtPmlzU3RhdGljKCksIGpNZXRob2QtPnJldHVy
blR5cGUoKSwgak1ldGhvZC0+bWV0aG9kSUQob2JqKSwgakFyZ3MuZGF0YSgpLCByZXN1bHQsIGNh
bGxpbmdVUkwsIGV4Y2VwdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgam1ldGhvZElEIG1ldGhv
ZElkID0gZ2V0TWV0aG9kSUQob2JqLCBqTWV0aG9kLT5uYW1lKCkudXRmOCgpLmRhdGEoKSwgak1l
dGhvZC0+c2lnbmF0dXJlKCkpOworICAgICAgICBoYW5kbGVkID0gZGlzcGF0Y2hKTklDYWxsKGV4
ZWMsIHJvb3RPYmplY3QtPm5hdGl2ZUhhbmRsZSgpLCBvYmosIGpNZXRob2QtPmlzU3RhdGljKCks
IGpNZXRob2QtPnJldHVyblR5cGUoKSwgbWV0aG9kSWQsIGpBcmdzLmRhdGEoKSwgcmVzdWx0LCBj
YWxsaW5nVVJMLCBleGNlcHRpb25EZXNjcmlwdGlvbik7CiAgICAgICAgIGlmIChleGNlcHRpb25E
ZXNjcmlwdGlvbikgewogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBleGNlcHRpb25EZXNjcmlwdGlvbi50b1N0cmluZyhleGVjKSkpOwogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL3Y4L0phdmFDbGFzc1Y4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2
YUNsYXNzVjguY3BwCmluZGV4IDU0NGJlYzkuLjI0ZDA1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9qbmkvdjgvSmF2YUNsYXNzVjguY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5B
QkxFKEpBVkFfQlJJREdFKQogCiAjaW5jbHVkZSAiSmF2YUZpZWxkVjguaCIKLSNpbmNsdWRlICJK
YXZhTWV0aG9kLmgiCisjaW5jbHVkZSAiSmF2YU1ldGhvZEpvYmplY3QuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzo6QmluZGluZ3M7CiAKQEAgLTYyLDEzICs2MiwxMyBAQCBKYXZhQ2xhc3M6Okph
dmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpCiAgICAgaW50IG51bU1ldGhvZHMgPSBlbnYtPkdl
dEFycmF5TGVuZ3RoKG1ldGhvZHMpOwogICAgIGZvciAoaSA9IDA7IGkgPCBudW1NZXRob2RzOyBp
KyspIHsKICAgICAgICAgam9iamVjdCBhSk1ldGhvZCA9IGVudi0+R2V0T2JqZWN0QXJyYXlFbGVt
ZW50KHN0YXRpY19jYXN0PGpvYmplY3RBcnJheT4obWV0aG9kcyksIGkpOwotICAgICAgICBKYXZh
TWV0aG9kKiBhTWV0aG9kID0gbmV3IEphdmFNZXRob2QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0
ZWQgaW4gdGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCisgICAgICAgIEphdmFNZXRob2QqIGFNZXRo
b2QgPSBuZXcgSmF2YU1ldGhvZEpvYmplY3QoZW52LCBhSk1ldGhvZCk7IC8vIGRlbGV0ZWQgaW4g
dGhlIEphdmFDbGFzcyBkZXN0cnVjdG9yCiAgICAgICAgIE1ldGhvZExpc3QqIG1ldGhvZExpc3Q7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1ldGhvZExpc3QgPSBtX21ldGhvZHMuZ2V0KGFNZXRo
b2QtPm5hbWUoKS51dGY4KCkpOworICAgICAgICAgICAgbWV0aG9kTGlzdCA9IG1fbWV0aG9kcy5n
ZXQoYU1ldGhvZC0+bmFtZSgpKTsKICAgICAgICAgICAgIGlmICghbWV0aG9kTGlzdCkgewogICAg
ICAgICAgICAgICAgIG1ldGhvZExpc3QgPSBuZXcgTWV0aG9kTGlzdCgpOwotICAgICAgICAgICAg
ICAgIG1fbWV0aG9kcy5zZXQoYU1ldGhvZC0+bmFtZSgpLnV0ZjgoKSwgbWV0aG9kTGlzdCk7Cisg
ICAgICAgICAgICAgICAgbV9tZXRob2RzLnNldChhTWV0aG9kLT5uYW1lKCksIG1ldGhvZExpc3Qp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1ldGhvZExpc3QtPmFwcGVuZChh
TWV0aG9kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvdjgvSmF2YUlu
c3RhbmNlVjguY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VW
OC5jcHAKaW5kZXggMmQ2NGJjNy4uZDEwNzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2puaS92OC9KYXZhSW5zdGFuY2VWOC5jcHAKQEAgLTcyLDEyICs3MiwxMiBAQCBKYXZhQ2xh
c3MqIEphdmFJbnN0YW5jZTo6Z2V0Q2xhc3MoKSBjb25zdAogCiBKYXZhVmFsdWUgSmF2YUluc3Rh
bmNlOjppbnZva2VNZXRob2QoY29uc3QgSmF2YU1ldGhvZCogbWV0aG9kLCBKYXZhVmFsdWUqIGFy
Z3MpCiB7Ci0gICAgQVNTRVJUKGdldENsYXNzKCktPm1ldGhvZHNOYW1lZChtZXRob2QtPm5hbWUo
KS51dGY4KCkpLmZpbmQobWV0aG9kKSAhPSBub3RGb3VuZCk7CisgICAgQVNTRVJUKGdldENsYXNz
KCktPm1ldGhvZHNOYW1lZChtZXRob2QtPm5hbWUoKS51dGY4KCkuZGF0YSgpKS5maW5kKG1ldGhv
ZCkgIT0gbm90Rm91bmQpOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSBtZXRob2QtPm51
bVBhcmFtZXRlcnMoKTsKICAgICBPd25BcnJheVB0cjxqdmFsdWU+IGp2YWx1ZUFyZ3MgPSBhZG9w
dEFycmF5UHRyKG5ldyBqdmFsdWVbbnVtUGFyYW1zXSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAgICAganZhbHVlQXJnc1tpXSA9IGphdmFW
YWx1ZVRvSnZhbHVlKGFyZ3NbaV0pOwotICAgIGp2YWx1ZSByZXN1bHQgPSBjYWxsSk5JTWV0aG9k
KGphdmFJbnN0YW5jZSgpLCBtZXRob2QtPnJldHVyblR5cGUoKSwgbWV0aG9kLT5uYW1lKCkudXRm
OCgpLCBtZXRob2QtPnNpZ25hdHVyZSgpLCBqdmFsdWVBcmdzLmdldCgpKTsKKyAgICBqdmFsdWUg
cmVzdWx0ID0gY2FsbEpOSU1ldGhvZChqYXZhSW5zdGFuY2UoKSwgbWV0aG9kLT5yZXR1cm5UeXBl
KCksIG1ldGhvZC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIG1ldGhvZC0+c2lnbmF0dXJlKCksIGp2
YWx1ZUFyZ3MuZ2V0KCkpOwogICAgIHJldHVybiBqdmFsdWVUb0phdmFWYWx1ZShyZXN1bHQsIG1l
dGhvZC0+cmV0dXJuVHlwZSgpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>