<?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>138731</bug_id>
          
          <creation_ts>2014-11-14 01:57:29 -0800</creation_ts>
          <short_desc>Move DataDetectors scanning code to WebCore</short_desc>
          <delta_ts>2014-11-15 10:58:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1048692</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 01:57:29 -0800</bug_when>
    <thetext>Move DataDetectors scanning code to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048693</commentid>
    <comment_count>1</comment_count>
      <attachid>241566</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 01:58:05 -0800</bug_when>
    <thetext>Created attachment 241566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048694</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 01:59:08 -0800</bug_when>
    <thetext>This would be a prime candidate (one of many) for some kind of small Mac-only &quot;WebKitKit&quot; in between WebCore and WebKit{2}...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048747</commentid>
    <comment_count>3</comment_count>
      <attachid>241566</attachid>
    <who name="">mitz</who>
    <bug_when>2014-11-14 07:13:18 -0800</bug_when>
    <thetext>Comment on attachment 241566
Patch

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        * platform/mac/DataDetection.h: Copied from Source/WebCore/editing/DictionaryLookup.h.
&gt; +        * platform/mac/DataDetection.mm: Added.
&gt; +        (WebCore::DataDetection::detectItemAroundHitTestResult):
&gt; +        Moved from WebKit2.

platform/ is not the right place for this code, which depends on non-platform WebCore concepts such as the DOM and the render tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048750</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-11-14 07:51:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 241566 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241566&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:22
&gt; &gt; +        * platform/mac/DataDetection.h: Copied from Source/WebCore/editing/DictionaryLookup.h.
&gt; &gt; +        * platform/mac/DataDetection.mm: Added.
&gt; &gt; +        (WebCore::DataDetection::detectItemAroundHitTestResult):
&gt; &gt; +        Moved from WebKit2.
&gt; 
&gt; platform/ is not the right place for this code, which depends on
&gt; non-platform WebCore concepts such as the DOM and the render tree.

Agreed, maybe we can move it to page/mac/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048753</commentid>
    <comment_count>5</comment_count>
      <attachid>241566</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-14 08:05:54 -0800</bug_when>
    <thetext>Comment on attachment 241566
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Move DataDetectors scanning code to WebCore, so that both WebKits can use it.

Is this a good long-term direction? Why not have WK2 just link with WK1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048760</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-11-14 08:24:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 241566 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241566&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Move DataDetectors scanning code to WebCore, so that both WebKits can use it.
&gt; 
&gt; Is this a good long-term direction? Why not have WK2 just link with WK1?

It already does. 😑</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048761</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 08:35:00 -0800</bug_when>
    <thetext>Oh yes, of course, totally wrong place.

(In reply to comment #5)
&gt; Comment on attachment 241566 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241566&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Move DataDetectors scanning code to WebCore, so that both WebKits can use it.
&gt; 
&gt; Is this a good long-term direction? Why not have WK2 just link with WK1?

Ideal long term answer, in my book, is https://bugs.webkit.org/show_bug.cgi?id=138731#c, not hiding things in WebKit legacy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048763</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-11-14 08:44:11 -0800</bug_when>
    <thetext>I don’t think there’s anuthing wrong, conceptually or practically, with this code being in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048789</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-14 10:48:51 -0800</bug_when>
    <thetext>&gt; Agreed, maybe we can move it to page/mac/?

Or editing, perhaps?

Editing already handles related &quot;scan the text and possibly display something&quot; tasks like dictionary lookup, alternative text presentation, linkification, and so on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048856</commentid>
    <comment_count>10</comment_count>
      <attachid>241621</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 13:29:05 -0800</bug_when>
    <thetext>Created attachment 241621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048857</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-11-14 13:36:36 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/176137</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049005</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-11-15 10:58:43 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; http://trac.webkit.org/changeset/176137

iOS build fix committed as r176156: &lt;http://trac.webkit.org/changeset/176156&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241566</attachid>
            <date>2014-11-14 01:58:05 -0800</date>
            <delta_ts>2014-11-14 13:29:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138731-20141114015812.patch</filename>
            <type>text/plain</type>
            <size>26695</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFmOTRlOGE0MjU5YjJj
NDc4NDNhNjQ1YmUzNTc5OTAxOThmMjRmMC4uNDMwN2Q5MmMzMmI4NzcwNmUyMzM2ZjFlMTVkMWE4
YjNjMWUwMzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTExLTE0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRGF0YURl
dGVjdG9ycyBzY2FubmluZyBjb2RlIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODczMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTg4Nzc1MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgRXhwb3J0IG91ciBuZXcgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFk
ZCBEYXRhRGV0ZWN0aW9uLnttbSwgaH0KKworICAgICAgICAqIGVkaXRpbmcvRGljdGlvbmFyeUxv
b2t1cC5oOgorICAgICAgICAqIGVkaXRpbmcvRGljdGlvbmFyeUxvb2t1cC5tbToKKyAgICAgICAg
U3dhcCB0byBQTEFURk9STShNQUMpIGluc3RlYWQgb2YgIVBMQVRGT1JNKElPUykuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvRGF0YURldGVjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RpY3Rpb25hcnlMb29rdXAuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
RGF0YURldGVjdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9u
OjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdCk6CisgICAgICAgIE1vdmVkIGZyb20gV2Vi
S2l0Mi4KKwogMjAxNC0xMS0xMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjXSBLZWVwIGFyb3VuZCBtb3JlIGRlY29kZWQgaW1hZ2UgZGF0YSwg
c2luY2UgaXQncyBwdXJnZWFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1NzMxOGE2MjQ4NzNiMWYyNTU0YzUz
NzgyNWQ3N2FiZWQ3YjhiOWIwLi5hNTUwMzM4NWVmZWZiMjgwY2I0Y2JkNjMwMDY3NGE3NWE1YzI2
MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTQtMTEtMTQgIFRpbSBIb3J0b24g
IDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBEYXRhRGV0ZWN0b3Jz
IHNjYW5uaW5nIGNvZGUgdG8gV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NzMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODg3NzUz
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
IERhdGFEZXRlY3RvcnMgc2Nhbm5pbmcgY29kZSB0byBXZWJDb3JlLCBzbyB0aGF0IGJvdGggV2Vi
S2l0cyBjYW4gdXNlIGl0LgorCisgICAgICAgICogU2hhcmVkL1RleHRJbmRpY2F0b3IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UpOgorICAgICAg
ICBNb3ZlIGNyZWF0ZVdpdGhSYW5nZSBpbiBmcm9tIFdlYlBhZ2VNYWMncyB0ZXh0SW5kaWNhdG9y
Rm9yUmFuZ2UuCisKKyAgICAgICAgKFdlYktpdDo6VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNl
bGVjdGlvbkluRnJhbWUpOgorICAgICAgICAqIFNoYXJlZC9UZXh0SW5kaWNhdG9yLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgQ29uc3RpZnkgc29tZSB0aGluZ3MuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24pOgorICAg
ICAgICBBdm9pZCB1c2luZyB0aGUgREQgcmVzdWx0IGlmIGl0IGRpZG4ndCBjb21lIHdpdGggYSBu
b24tbnVsbCBSYW5nZS4KKyAgICAgICAgTWFrZSB1c2Ugb2YgZGV0ZWN0SXRlbUFyb3VuZEhpdFRl
c3RSZXN1bHQgYW5kIFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZS4KKworICAgICAgICAo
V2ViS2l0OjpzY2FuRm9yRGF0YURldGVjdGVkSXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0Ojp0ZXh0SW5kaWNhdG9yRm9yUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICBNb3ZlZCB0aGVz
ZSB0d28gdG8gb3RoZXIgcGxhY2VzLgorCiAyMDE0LTExLTEzICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVHdvIFdLV2ViVmlldyBpbnRlcm5hbCBtZXRob2RzIGFy
ZSBpbXBsZW1lbnRlZCBpbiBhIGNhdGVnb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDFkMzk0
NGM4Y2ViMWYzODVjYTkzODg2MzM1ODZjYTk2MTAwYTYxMjguLmEzY2Y0NzU5ZmY4M2ViYTRhZDI4
MWNmZDI1ZjQ2NTYxZjBmZWExZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yODgsNiArMjg4
LDcgQEAgX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlNDJnQWNjZXNzaWJpbGl0eUVuaGFuY2Vk
VXNlckludGVyZmFjZUVuYWJsZWRFCiBfX1pON1dlYkNvcmUxM0NoYXJhY3RlckRhdGE3c2V0RGF0
YUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFhcHBlbmRD
aGlsZEVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRVJpCiBfX1pON1dlYkNvcmUxM0NvbnRh
aW5lck5vZGUxMXJlbW92ZUNoaWxkRVBOU180Tm9kZUVSaQorX19aTjdXZWJDb3JlMTNEYXRhRGV0
ZWN0aW9uMjlkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdEVSS05TXzEzSGl0VGVzdFJlc3Vs
dEVSTlNfOUZsb2F0UmVjdEVSTjNXVEY2UmVmUHRySU5TXzVSYW5nZUVFRQogX19aTjdXZWJDb3Jl
MTNHcmFwaGljc0xheWVyMTFzZXRDaGlsZHJlbkVSS04zV1RGNlZlY3RvcklQUzBfTG0wRU5TMV8x
NUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTJyZXBsYWNl
Q2hpbGRFUFMwX1MxXwogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTJzZXRaUG9zaXRpb25F
ZgpAQCAtMjQwNCw2ICsyNDA1LDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjMzdG9nZ2xlQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzNGlzQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbkVuYWJsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjM1aXNBdXRvbWF0
aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjM2aXNBdXRv
bWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkRXYKK19fWk43V2ViQ29yZTZFZGl0b3I5Y29w
eUltYWdlRVJLTlNfMTNIaXRUZXN0UmVzdWx0RQogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxh
dGZvcm1XaWRnZXRFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTZXaWRnZXRDMkVQNk5TVmlldwogX19a
TjdXZWJDb3JlN25zQ29sb3JFUktOU181Q29sb3JFCkBAIC0yNTA3LDEwICsyNTA5LDYgQEAgX3dr
TlNSZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEKIF93a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNz
dXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJ
T1MpCi1fX1pON1dlYkNvcmU2RWRpdG9yOWNvcHlJbWFnZUVSS05TXzEzSGl0VGVzdFJlc3VsdEUK
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oSU9TKQogLm9iamNfY2xhc3NfbmFtZV9OU0N1cnNvcgog
Lm9iamNfY2xhc3NfbmFtZV9XQUtDbGlwVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAwNWJlYjIzYzc2NGMwYjI2M2UwNDIy
OWMwY2EwMTAxNjJlN2VmNDIuLjAyZmQ0ZTAwZDllZDBlNmRmZThmMTdhNmNhYTFiYjM3NmZlZTFj
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExMDIsNiArMTEwMiw4IEBACiAJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAv
KiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmggKi87IH07CiAJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAvKiBHcmFk
aWVudEltYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEMkZDMDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLzsgfTsK
IAkJMkQ0ODFGMDQxNDZCNUM2QjAwQUE3ODM0IC8qIEdyYWRpZW50SW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkZDMDU3MTQ2MENENkYwMDI2
MzYzMyAvKiBHcmFkaWVudEltYWdlLmggKi87IH07CisJCTJENThEODU1MUExNUY2NUYwMEE1Rjcy
NiAvKiBEYXRhRGV0ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENThEODU2
MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTQxQTE1RjY1RjAwQTVGNzI2IC8qIERh
dGFEZXRlY3Rpb24ubW0gKi87IH07CiAJCTJENTlGMUJGMUEwMDQ0QzYwMDFGM0QyOSAvKiBEYXRh
RGV0ZWN0b3JzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU5RjFCRTFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENUE1OTJGMTUy
NTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJ
bWFnZU9yaWVudGF0aW9uLmNwcCAqLzsgfTsKIAkJMkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8q
IEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgxMDQs
NiArODEwNiw4IEBACiAJCTJEM0VGNDQ3MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJDb3JlQ0FMYXll
ckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
cmVDQUxheWVyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDQ2RjA0
RDE3Qjk2RkJEMDA1NjQ3RjAgLyogSW50UG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50UG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDQ2RjA0RjE3Qjk2RkQyMDA1NjQ3RjAgLyogSW50U2l6ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRTaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQ1OEQ4NTMxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YURldGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRDU4RDg1NDFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVj
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFEZXRl
Y3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENTlGMUJFMUEwMDQ0QzYw
MDFGM0QyOSAvKiBEYXRhRGV0ZWN0b3JzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFEZXRlY3RvcnNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ1QkM0MjUxNkY4ODJCRTAwNzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDVCQzQyNjE2Rjg4MkJF
MDA3MDQ4RDAgLyogU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNjQwMCw2ICsxNjQwNCw4IEBACiAJCQkJMDYwMjdDQjIwQjFD
QzAzRDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbU1hYy5tbSAqLywKIAkJCQk5M0I2QTBFOTBC
MEJDQTg0MDBGNTAyN0EgLyogQ29udGV4dE1lbnVNYWMubW0gKi8sCiAJCQkJRjU4Nzg0RjAwMkRF
Mzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLywKKwkJCQkyRDU4RDg1MzFBMTVGNjVGMDBB
NUY3MjYgLyogRGF0YURldGVjdGlvbi5oICovLAorCQkJCTJENThEODU0MUExNUY2NUYwMEE1Rjcy
NiAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAv
KiBEcmFnRGF0YU1hYy5tbSAqLywKIAkJCQlBN0NGQjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJh
Z0ltYWdlTWFjLm1tICovLAogCQkJCUUxQkE2NkYwMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5hbWlj
TGlua2VySW50ZXJwb3NpbmcuaCAqLywKQEAgLTI2Mjg4LDYgKzI2Mjk0LDcgQEAKIAkJCQlCMjIy
N0E4ODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0dGVybkVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3QThGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkQ1OEQ4NTUxQTE1RjY1RjAwQTVGNzI2IC8qIERhdGFEZXRl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTkxMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
OTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBIZWFkZXJz
ICovLApAQCAtMjk0MDQsNiArMjk0MTEsNyBAQAogCQkJCTg0QTgxRjQxMEZDN0UwMjcwMDk1NTMw
MCAvKiBTb3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NjMwNkQ3MTdFMTQ5
Q0YwMDVBN0M0RSAvKiBTb3VyY2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzNkQ1QTI1
MTkzRjQwRkMwMENFNENBQiAvKiBTb3VyY2VTaXplTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkyRDU4RDg1NjFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUQwMUEyN0FEMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTYyNkNERTBFMTE0MDQyNEMwMDFFNUE2OCAvKiBTcGF0aWFs
TmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTJBNUFENTE2QTQ4NjE0MDA5NzVB
MjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0aW9uYXJ5TG9va3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3Rpb25hcnlMb29rdXAuaAppbmRleCA1ZWQ4NWFhMWFmMDdhZGM5YWQ0NTBlMGRk
NzQ1OWFkOWVhMjE5Nzk1Li4yZTI1ZGExMjRmNWZkZjY5Y2I2YmE4YzIyYmU2YjhhOGQ5MzQ1Yzhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rpb25hcnlMb29rdXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rpb25hcnlMb29rdXAuaApAQCAtMjYsNyAr
MjYsNyBAQAogI2lmbmRlZiBEaWN0aW9uYXJ5TG9va3VwX2gKICNkZWZpbmUgRGljdGlvbmFyeUxv
b2t1cF9oCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTUwLDYgKzUwLDYgQEAgUGFzc1JlZlB0cjxSYW5n
ZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmLAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2VuZGlmIC8vIERpY3Rpb25hcnlMb29r
dXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0aW9uYXJ5TG9va3Vw
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGM0
YTEzNGJkYzdiMzBjOTViODUzOTA0NmI3ODJkNWVmZmM3ZGVkZTcuLmRiNjQyODc1YmVmZTJmODM5
YWM2M2ZkZTQ0NWY4MDViNjQ1MTEyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rp
b25hcnlMb29rdXAubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiRGljdGlvbmFyeUxvb2t1cC5oIgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiBQTEFU
Rk9STShNQUMpCiAKICNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJGb2N1c0NvbnRyb2xs
ZXIuaCIKQEAgLTE2Niw1ICsxNjYsNSBAQCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rp
b25hcnlMb29rdXBBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaAogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorI2VuZGlmIC8v
IFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RhdGFEZXRlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQ0ODQwMzE5Y2IwYjNiOTZmZTdhNzA4NTRiOWQwODc1ZDgxNzM2
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0
ZWN0aW9uLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YURldGVj
dGlvbl9oCisjZGVmaW5lIERhdGFEZXRlY3Rpb25faAorCisjaWYgUExBVEZPUk0oTUFDKQorCisj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
Q0xBU1MgRERBY3Rpb25Db250ZXh0OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZs
b2F0UmVjdDsKK2NsYXNzIEhpdFRlc3RSZXN1bHQ7CitjbGFzcyBSYW5nZTsKKworY2xhc3MgRGF0
YURldGVjdGlvbiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0
cjxEREFjdGlvbkNvbnRleHQ+IGRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhp
dFRlc3RSZXN1bHQmLCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8
UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNlbmRpZiAvLyBEYXRhRGV0ZWN0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0aW9uLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RhdGFEZXRlY3Rpb24ubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTY3NjM3NDFhZjc4YTEzZjZiNGFlNGY4MDFhODBkOTc0ZDY3MzUyZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0w
LDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRhdGFEZXRlY3Rpb24uaCIKKworI2lt
cG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgorI2ltcG9ydCAiRGljdGlvbmFyeUxvb2t1cC5oIgor
I2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1wb3J0ICJIaXRUZXN0UmVzdWx0LmgiCisjaW1wb3J0
ICJOb2RlLmgiCisjaW1wb3J0ICJSYW5nZS5oIgorI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCisj
aW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKKyNpbXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgorI2lt
cG9ydCAiaHRtbGVkaXRpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8
RERBY3Rpb25Db250ZXh0PiBEYXRhRGV0ZWN0aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0LCBGbG9hdFJlY3QmIGRldGVj
dGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSkKK3sK
KyAgICBOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlv
bkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKTsKKyAgICBpZiAo
cG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKG5vZGUpOworCisgICAgUmVmUHRyPFJhbmdlPiBjb250ZXh0UmFuZ2UgPSByYW5n
ZUV4cGFuZGVkQXJvdW5kUG9zaXRpb25CeUNoYXJhY3RlcnMocG9zaXRpb24sIDI1MCk7CisgICAg
aWYgKCFjb250ZXh0UmFuZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5n
IGZ1bGxQbGFpblRleHRTdHJpbmcgPSBwbGFpblRleHQoY29udGV4dFJhbmdlLmdldCgpKTsKKyAg
ICBpbnQgaGl0TG9jYXRpb24gPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShj
b250ZXh0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24pLmdldCgpKTsKKworICAgIFJl
dGFpblB0cjxERFNjYW5uZXJSZWY+IHNjYW5uZXIgPSBhZG9wdENGKEREU2Nhbm5lckNyZWF0ZShE
RFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51bGxwdHIpKTsKKyAgICBSZXRhaW5QdHI8RERTY2Fu
UXVlcnlSZWY+IHNjYW5RdWVyeSA9IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZ1bGxQbGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgZnVsbFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkpKTsK
KworICAgIGlmICghRERTY2FubmVyU2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5RdWVyeS5n
ZXQoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IHJlc3VsdHMgPSBhZG9wdENGKEREU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nh
bm5lci5nZXQoKSwgRERTY2FubmVyQ29weVJlc3VsdHNPcHRpb25zTm9PdmVybGFwKSk7CisKKyAg
ICAvLyBGaW5kIHRoZSBERFJlc3VsdFJlZiB0aGF0IGludGVyc2VjdHMgdGhlIGhpdFRlc3RSZXN1
bHQncyBWaXNpYmxlUG9zaXRpb24uCisgICAgRERSZXN1bHRSZWYgbWFpblJlc3VsdCA9IG51bGxw
dHI7CisgICAgUmVmUHRyPFJhbmdlPiBtYWluUmVzdWx0UmFuZ2U7CisgICAgQ0ZJbmRleCByZXN1
bHRDb3VudCA9IENGQXJyYXlHZXRDb3VudChyZXN1bHRzLmdldCgpKTsKKyAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCByZXN1bHRDb3VudDsgaSsrKSB7CisgICAgICAgIEREUmVzdWx0UmVmIHJl
c3VsdCA9IChERFJlc3VsdFJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc3VsdHMuZ2V0KCks
IGkpOworICAgICAgICBDRlJhbmdlIHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRS
YW5nZShyZXN1bHQpOworICAgICAgICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNv
bnRleHQubG9jYXRpb24gJiYgKGhpdExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9j
YXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKSB7CisgICAgICAgICAgICBtYWlu
UmVzdWx0ID0gcmVzdWx0OworICAgICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJh
dG9yOjpzdWJyYW5nZShjb250ZXh0UmFuZ2UuZ2V0KCksIHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxv
Y2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4dC5sZW5ndGgpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIW1haW5SZXN1bHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4
dCA9IGFkb3B0TlMoW1tnZXREREFjdGlvbkNvbnRleHRDbGFzcygpIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2FjdGlvbkNvbnRleHQgc2V0QWxsUmVzdWx0czpAWyAoaWQpbWFpblJlc3VsdCBdXTsKKyAg
ICBbYWN0aW9uQ29udGV4dCBzZXRNYWluUmVzdWx0Om1haW5SZXN1bHRdOworCisgICAgVmVjdG9y
PEZsb2F0UXVhZD4gcXVhZHM7CisgICAgbWFpblJlc3VsdFJhbmdlLT50ZXh0UXVhZHMocXVhZHMp
OworICAgIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBtYWluUmVzdWx0UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS52aWV3KCk7
CisgICAgZm9yIChjb25zdCBhdXRvJiBxdWFkIDogcXVhZHMpCisgICAgICAgIGRldGVjdGVkRGF0
YUJvdW5kaW5nQm94LnVuaXRlKGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhxdWFkLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCkpKTsKKyAgICAKKyAgICBkZXRlY3RlZERhdGFSYW5nZSA9IG1haW5S
ZXN1bHRSYW5nZTsKKyAgICAKKyAgICByZXR1cm4gYWN0aW9uQ29udGV4dDsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJ
bmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmRpY2F0b3IuY3BwCmlu
ZGV4IDhhYTNiYTUwNDRmYzlkMmJmZThlNzIxODBlYzRiYTNiNTZmNzU1ZGIuLjQyZDgzNjNmMTdm
N2VjMTA3YjkyZGNmNWNjMzk2NTgyZjUwMzRiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4
dEluZGljYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgpAQCAtMTU0LDcgKzE1NSwyNCBAQCBQYXNzUmVmUHRyPFRleHRJbmRpY2F0
b3I+IFRleHRJbmRpY2F0b3I6OmNyZWF0ZShjb25zdCBUZXh0SW5kaWNhdG9yOjpEYXRhJiBkYXRh
KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dEluZGljYXRvcihkYXRhKSk7CiB9CiAKLVBh
c3NSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlv
bkluRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQorUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKQoreworICAgIEZy
YW1lKiBmcmFtZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkuZnJhbWUoKTsK
KworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVmlzaWJs
ZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7
CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbigmcmFuZ2UpOworCisgICAgUmVm
UHRyPFRleHRJbmRpY2F0b3I+IGluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhT
ZWxlY3Rpb25JbkZyYW1lKCpXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpKTsKKworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKKyAgICAKKyAg
ICByZXR1cm4gaW5kaWNhdG9yLnJlbGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxUZXh0SW5kaWNh
dG9yPiBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShjb25zdCBXZWJG
cmFtZSYgZnJhbWUpCiB7CiAgICAgRnJhbWUmIGNvcmVGcmFtZSA9ICpmcmFtZS5jb3JlRnJhbWUo
KTsKICAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGNvcmVGcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvVGV4dEluZGljYXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJ
bmRpY2F0b3IuaAppbmRleCA4NDk5NThmNjFjMDIzOTQ5MTQ3ODY3MzM0ODhhMTQ1YzQwMjIwNGQ5
Li43MmM1NmQ1YTUxMjgzOGE3ZDkxMDNhOGJiODk3YTdlZjYwMjY3ZTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9UZXh0SW5kaWNhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgUmFuZ2U7CiB9CiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtNTksNyArNjAsOCBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IGNyZWF0ZShjb25zdCBUZXh0SW5kaWNhdG9yOjpE
YXRhJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gY3JlYXRlV2l0aFNl
bGVjdGlvbkluRnJhbWUoV2ViRnJhbWUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0SW5k
aWNhdG9yPiBjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZShjb25zdCBXZWJGcmFtZSYpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IGNyZWF0ZVdpdGhSYW5nZShjb25zdCBX
ZWJDb3JlOjpSYW5nZSYpOwogCiAgICAgflRleHRJbmRpY2F0b3IoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMGU0MGUyNjBmYzU5
MGQyOGU1ODBmOWFkNzlmZjYxMzFlMDMyMjdlZS4uODI3YzA2MDg3MTA4MzliZDNiNDZhODIyMzEw
NWQ1NGFjODdhZTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC03ODMsNyArNzgzLDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gV2Vi
RnJhbWU6OndlYkFyY2hpdmVEYXRhKEZyYW1lRmlsdGVyRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQK
IH0KICNlbmRpZgogCi1QYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0
ZVNlbGVjdGlvblNuYXBzaG90KCkKK1Bhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBXZWJGcmFt
ZTo6Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKSBjb25zdAogewogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlvbigqY29yZUZyYW1lKCks
IFdlYkNvcmU6OlNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KTsKICAgICBpZiAoIXNuYXBz
aG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRl
eCA2MGM5NDM0NjE4NWQ4Mzk1M2EyODU1NmViMGE0MzM4OGE5N2I3ZjE4Li4zYTU3M2UwM2Y0ZGM1
ZGZiNjVhODM1MWVkMWZkMjY2ZDEzMjczMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiB3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uLCB2
b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCk7CisgICAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IGNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViRnJhbWU+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVM
b2FkZXJDbGllbnQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjZDU1MzU0ZDNjZGZiODcwMTZlMGY2MjY4NzMyYzVk
N2MwOTEzNzZkLi5jOGEwMWUyNWJlOWVlYWQwZWU0YWNiOTZlMDk0OWU0NWFkZDI4NzQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCkBAIC01Niw2ICs1Niw3IEBACiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNr
Rm9yd2FyZENvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVjdGlvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0b3JzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rp
Y3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+CkBAIC05
NjcsODYgKzk2OCw2IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBV
UkwmKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxE
REFjdGlvbkNvbnRleHQ+IHNjYW5Gb3JEYXRhRGV0ZWN0ZWRJdGVtcyhjb25zdCBIaXRUZXN0UmVz
dWx0JiBoaXRUZXN0UmVzdWx0LCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBS
ZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSkKLXsKLSAgICBOb2RlKiBub2RlID0gaGl0
VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwot
ICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3RSZXN1
bHQubG9jYWxQb2ludCgpLCBudWxscHRyKTsKLSAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwotCi0g
ICAgUmVmUHRyPFJhbmdlPiBjb250ZXh0UmFuZ2UgPSByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRp
b25CeUNoYXJhY3RlcnMocG9zaXRpb24sIDI1MCk7Ci0gICAgaWYgKCFjb250ZXh0UmFuZ2UpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgU3RyaW5nIGZ1bGxQbGFpblRleHRTdHJpbmcg
PSBwbGFpblRleHQoY29udGV4dFJhbmdlLmdldCgpKTsKLSAgICBpbnQgaGl0TG9jYXRpb24gPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShjb250ZXh0UmFuZ2UtPnN0YXJ0UG9z
aXRpb24oKSwgcG9zaXRpb24pLmdldCgpKTsKLQotICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+
IHNjYW5uZXIgPSBhZG9wdENGKEREU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQs
IDAsIG51bGxwdHIpKTsKLSAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+IHNjYW5RdWVyeSA9
IGFkb3B0Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZ1bGxQbGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZSYW5nZU1ha2Uo
MCwgZnVsbFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkpKTsKLQotICAgIGlmICghRERTY2FubmVy
U2NhblF1ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5RdWVyeS5nZXQoKSkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHJlc3VsdHMgPSBhZG9wdENG
KEREU2Nhbm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgRERTY2FubmVy
Q29weVJlc3VsdHNPcHRpb25zTm9PdmVybGFwKSk7Ci0KLSAgICAvLyBGaW5kIHRoZSBERFJlc3Vs
dFJlZiB0aGF0IGludGVyc2VjdHMgdGhlIGhpdFRlc3RSZXN1bHQncyBWaXNpYmxlUG9zaXRpb24u
Ci0gICAgRERSZXN1bHRSZWYgbWFpblJlc3VsdCA9IG51bGxwdHI7Ci0gICAgUmVmUHRyPFJhbmdl
PiBtYWluUmVzdWx0UmFuZ2U7Ci0gICAgQ0ZJbmRleCByZXN1bHRDb3VudCA9IENGQXJyYXlHZXRD
b3VudChyZXN1bHRzLmdldCgpKTsKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCByZXN1bHRD
b3VudDsgaSsrKSB7Ci0gICAgICAgIEREUmVzdWx0UmVmIHJlc3VsdCA9IChERFJlc3VsdFJlZilD
RkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc3VsdHMuZ2V0KCksIGkpOwotICAgICAgICBDRlJhbmdl
IHJlc3VsdFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOwotICAgICAg
ICBpZiAoaGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhp
dExvY2F0aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJ
bkNvbnRleHQubGVuZ3RoKSB7Ci0gICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OwotICAg
ICAgICAgICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjb250ZXh0
UmFuZ2UuZ2V0KCksIHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUlu
Q29udGV4dC5sZW5ndGgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBpZiAoIW1haW5SZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmV0
YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dCA9IGFkb3B0TlMoW1tnZXREREFj
dGlvbkNvbnRleHRDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0gICAgW2FjdGlvbkNvbnRleHQgc2V0
QWxsUmVzdWx0czpAWyAoaWQpbWFpblJlc3VsdCBdXTsKLSAgICBbYWN0aW9uQ29udGV4dCBzZXRN
YWluUmVzdWx0Om1haW5SZXN1bHRdOwotCi0gICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7Ci0g
ICAgbWFpblJlc3VsdFJhbmdlLT50ZXh0UXVhZHMocXVhZHMpOwotICAgIGRldGVjdGVkRGF0YUJv
dW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWlu
UmVzdWx0UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS52aWV3KCk7Ci0gICAgZm9yIChjb25zdCBhdXRv
JiBxdWFkIDogcXVhZHMpCi0gICAgICAgIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LnVuaXRlKGZy
YW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhxdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpKTsK
LQotICAgIGRldGVjdGVkRGF0YVJhbmdlID0gbWFpblJlc3VsdFJhbmdlOwotCi0gICAgcmV0dXJu
IGFjdGlvbkNvbnRleHQ7Ci19Ci0KLXN0YXRpYyBQYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRl
eHRJbmRpY2F0b3JGb3JSYW5nZShSYW5nZSogcmFuZ2UpCi17Ci0gICAgaWYgKCFyYW5nZSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSByYW5nZS0+c3RhcnRD
b250YWluZXIoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotCi0gICAgaWYgKCFmcmFtZSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKHJhbmdlKTsKLQotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0
b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZSgqV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmZyYW1lKSk7Ci0KLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7Ci0KLSAgICByZXR1cm4gaW5kaWNhdG9yLnJlbGVhc2UoKTsK
LX0KLQogdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdl
YkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb25JblZpZXdDb29vcmRpbmF0ZXMpCiB7CiAgICAgbV9s
YXN0QWN0aW9uTWVudUhpdFBhZ2VPdmVybGF5ID0gbnVsbHB0cjsKQEAgLTExMTIsNyArMTAzMyw3
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJD
b3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgICAgICAgICBkZXRlY3RlZERhdGFCb3Vu
ZGluZ0JveC51bml0ZShmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocXVhZC5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKSk7CiAKICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFC
b3VuZGluZ0JveCA9IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94OwotICAgICAgICBhY3Rpb25NZW51
UmVzdWx0LmRldGVjdGVkRGF0YVRleHRJbmRpY2F0b3IgPSB0ZXh0SW5kaWNhdG9yRm9yUmFuZ2Uo
bWFpblJlc3VsdFJhbmdlLmdldCgpKTsKKyAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3Rl
ZERhdGFUZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKCptYWlu
UmVzdWx0UmFuZ2UpOwogICAgICAgICBtX2xhc3RBY3Rpb25NZW51UmFuZ2VGb3JTZWxlY3Rpb24g
PSBtYWluUmVzdWx0UmFuZ2U7CiAgICAgICAgIG1fbGFzdEFjdGlvbk1lbnVIaXRQYWdlT3Zlcmxh
eSA9IHdlYk92ZXJsYXk7CiAKQEAgLTExMjMsMTAgKzEwNDQsMTAgQEAgdm9pZCBXZWJQYWdlOjpw
ZXJmb3JtQWN0aW9uTWVudUhpdFRlc3RBdExvY2F0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9j
YXRpb25JblYKICAgICBpZiAoIXBhZ2VPdmVybGF5RGlkT3ZlcnJpZGVEYXRhRGV0ZWN0b3JzICYm
IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkgJiYgaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKS0+
aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBkZXRlY3RlZERhdGFCb3VuZGluZ0Jv
eDsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBkZXRlY3RlZERhdGFSYW5nZTsKLSAgICAgICAgYWN0
aW9uTWVudVJlc3VsdC5hY3Rpb25Db250ZXh0ID0gc2NhbkZvckRhdGFEZXRlY3RlZEl0ZW1zKGhp
dFRlc3RSZXN1bHQsIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBkZXRlY3RlZERhdGFSYW5nZSk7
Ci0gICAgICAgIGlmIChhY3Rpb25NZW51UmVzdWx0LmFjdGlvbkNvbnRleHQpIHsKKyAgICAgICAg
YWN0aW9uTWVudVJlc3VsdC5hY3Rpb25Db250ZXh0ID0gRGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRl
bUFyb3VuZEhpdFRlc3RSZXN1bHQoaGl0VGVzdFJlc3VsdCwgZGV0ZWN0ZWREYXRhQm91bmRpbmdC
b3gsIGRldGVjdGVkRGF0YVJhbmdlKTsKKyAgICAgICAgaWYgKGFjdGlvbk1lbnVSZXN1bHQuYWN0
aW9uQ29udGV4dCAmJiBkZXRlY3RlZERhdGFSYW5nZSkgewogICAgICAgICAgICAgYWN0aW9uTWVu
dVJlc3VsdC5kZXRlY3RlZERhdGFCb3VuZGluZ0JveCA9IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94
OwotICAgICAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5kaWNhdG9y
ID0gdGV4dEluZGljYXRvckZvclJhbmdlKGRldGVjdGVkRGF0YVJhbmdlLmdldCgpKTsKKyAgICAg
ICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvciA9IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqZGV0ZWN0ZWREYXRhUmFuZ2UpOwogICAgICAgICAg
ICAgbV9sYXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gZGV0ZWN0ZWREYXRhUmFuZ2U7
CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241621</attachid>
            <date>2014-11-14 13:29:05 -0800</date>
            <delta_ts>2014-11-14 13:30:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138731-20141114132912.patch</filename>
            <type>text/plain</type>
            <size>54428</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGRmNmViMjhiNWE0Mjk2
Y2NlNjFiN2YzZTJjZmRjYmQ4MTM2MTVhNS4uODIwMTJjMmE5NzhhNzhiZjY0YmZiYjNjOTE0ZmY2
ZTY4OTY4ZThkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTExLTE0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgRGF0YURl
dGVjdG9ycyBzY2FubmluZyBjb2RlIHRvIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODczMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTg4Nzc1MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgRXhwb3J0IG91ciBuZXcgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFk
ZCBEYXRhRGV0ZWN0aW9uLnttbSwgaH0KKyAgICAgICAgQWRqdXN0IHRoZSBwcm9qZWN0IHNvIHRo
YXQgZWRpdGluZy9tYWMgYWN0dWFsbHkgcG9pbnRzIHRvIGVkaXRpbmcvbWFjIGluc3RlYWQgb2Yg
ZWRpdGluZy8KKworICAgICAgICAqIGVkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAuaDoKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tOgorICAgICAgICBTd2FwIHRv
IFBMQVRGT1JNKE1BQykgaW5zdGVhZCBvZiAhUExBVEZPUk0oSU9TKS4KKyAgICAgICAgTW92ZSBE
aWN0aW9uYXJ5TG9va3VwLnttbSwgaH0gdG8gZWRpdGluZy9tYWMsIHdoZXJlIHRoZXkgd2VyZSBp
biB0aGUgcHJvamVjdCBidXQgbm90IG9uIGRpc2suCisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9E
YXRhRGV0ZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvbWFjL0RhdGFEZXRlY3Rp
b24ubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0SXRl
bUFyb3VuZEhpdFRlc3RSZXN1bHQpOgorICAgICAgICBNb3ZlZCBmcm9tIFdlYktpdDIuCisKIDIw
MTQtMTEtMTQgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgogCiAgICAgICAgIERv
IHByb3BlciB0ZWFyZG93biBmb3Igb3B0aW1pemVkIGZ1bGxzY3JlZW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAz
Y2Y4M2IwODRkZThhMTYwOGM2N2Y2MzNhMzFjZTVjZDVjMDRmNTRlLi42OWJhOTc5ZDViNDI2N2Rj
M2IzMTU4YThmZGJlOTE1OWI5NTQ1ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTQtMTEtMTQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBEYXRhRGV0ZWN0b3JzIHNjYW5uaW5nIGNvZGUgdG8gV2ViQ29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NzMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xODg3NzUzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIERhdGFEZXRlY3RvcnMgc2Nhbm5pbmcgY29kZSB0byBXZWJD
b3JlLCBzbyB0aGF0IGJvdGggV2ViS2l0cyBjYW4gdXNlIGl0LgorCisgICAgICAgICogU2hhcmVk
L1RleHRJbmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0SW5kaWNhdG9yOjpjcmVh
dGVXaXRoUmFuZ2UpOgorICAgICAgICBNb3ZlIGNyZWF0ZVdpdGhSYW5nZSBpbiBmcm9tIFdlYlBh
Z2VNYWMncyB0ZXh0SW5kaWNhdG9yRm9yUmFuZ2UuCisKKyAgICAgICAgKFdlYktpdDo6VGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUpOgorICAgICAgICAqIFNoYXJlZC9U
ZXh0SW5kaWNhdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgQ29uc3Rp
Znkgc29tZSB0aGluZ3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25NZW51SGl0
VGVzdEF0TG9jYXRpb24pOgorICAgICAgICBBdm9pZCB1c2luZyB0aGUgREQgcmVzdWx0IGlmIGl0
IGRpZG4ndCBjb21lIHdpdGggYSBub24tbnVsbCBSYW5nZS4KKyAgICAgICAgTWFrZSB1c2Ugb2Yg
ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RSZXN1bHQgYW5kIFRleHRJbmRpY2F0b3I6OmNyZWF0ZVdp
dGhSYW5nZS4KKworICAgICAgICAoV2ViS2l0OjpzY2FuRm9yRGF0YURldGVjdGVkSXRlbXMpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojp0ZXh0SW5kaWNhdG9yRm9yUmFuZ2UpOiBEZWxldGVk
LgorICAgICAgICBNb3ZlZCB0aGVzZSB0d28gdG8gb3RoZXIgcGxhY2VzLgorCiAyMDE0LTExLTE0
ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHNvbWUgdHJh
Y2luZyB0byBoZWxwIGludmVzdGlnYXRpbmcgPHJkYXI6Ly9wcm9ibGVtLzE4OTA1MzgzPiBbaU9T
XSBDcmFzaCBkdWUgdG8gbnVsbCBtX3dlYlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlzdEZvckN1
cnJlbnRTd2lwZSBpbiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCAxZDM5NDRjOGNlYjFmMzg1Y2E5Mzg4NjMzNTg2Y2E5NjEwMGE2
MTI4Li5hM2NmNDc1OWZmODNlYmE0YWQyODFjZmQyNWY0NjU2MWYwZmVhMWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMjg4LDYgKzI4OCw3IEBAIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNo
ZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkRQogX19aTjdXZWJD
b3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29y
ZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVF
RUVSaQogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFyZW1vdmVDaGlsZEVQTlNfNE5vZGVF
UmkKK19fWk43V2ViQ29yZTEzRGF0YURldGVjdGlvbjI5ZGV0ZWN0SXRlbUFyb3VuZEhpdFRlc3RS
ZXN1bHRFUktOU18xM0hpdFRlc3RSZXN1bHRFUk5TXzlGbG9hdFJlY3RFUk4zV1RGNlJlZlB0cklO
U181UmFuZ2VFRUUKIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjExc2V0Q2hpbGRyZW5FUktO
M1dURjZWZWN0b3JJUFMwX0xtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29y
ZTEzR3JhcGhpY3NMYXllcjEycmVwbGFjZUNoaWxkRVBTMF9TMV8KIF9fWk43V2ViQ29yZTEzR3Jh
cGhpY3NMYXllcjEyc2V0WlBvc2l0aW9uRWYKQEAgLTI0MDQsNiArMjQwNSw3IEBAIF9fWk43V2Vi
Q29yZTZFZGl0b3IzM3RvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkV2CiBfX1pON1dl
YkNvcmU2RWRpdG9yMzRpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkRXYKIF9fWk43
V2ViQ29yZTZFZGl0b3IzNWlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkRXYKIF9f
Wk43V2ViQ29yZTZFZGl0b3IzNmlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZEV2
CitfX1pON1dlYkNvcmU2RWRpdG9yOWNvcHlJbWFnZUVSS05TXzEzSGl0VGVzdFJlc3VsdEUKIF9f
Wk43V2ViQ29yZTZXaWRnZXQxN3NldFBsYXRmb3JtV2lkZ2V0RVA2TlNWaWV3CiBfX1pON1dlYkNv
cmU2V2lkZ2V0QzJFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTduc0NvbG9yRVJLTlNfNUNvbG9yRQpA
QCAtMjUwNywxMCArMjUwOSw2IEBAIF93a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhCiBf
d2tDcmVhdGVNZW1vcnlTdGF0dXNQcmVzc3VyZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZQog
I2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQotX19aTjdXZWJDb3JlNkVkaXRvcjljb3B5SW1h
Z2VFUktOU18xM0hpdFRlc3RSZXN1bHRFCi0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKElPUykKIC5v
YmpjX2NsYXNzX25hbWVfTlNDdXJzb3IKIC5vYmpjX2NsYXNzX25hbWVfV0FLQ2xpcFZpZXcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjOTMwOGJmOTMzNzZiYjMyYzQ2MmQwYjM0NDQyYTg2NjBiZDA2NGM5Li5kYzQ1NzFlN2VmZWMz
NTNmMzM3OTY2NDU4MTJlZmRjNDhiNjU2YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTAyLDYgKzExMDIsOCBAQAogCQky
RDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMkZDMDU1MTQ2MENE
NkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQkyRDQ4MUYw
MzE0NkI1QzY1MDBBQTc4MzQgLyogR3JhZGllbnRJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDJGQzA1NjE0NjBDRDZGMDAyNjM2MzMgLyog
R3JhZGllbnRJbWFnZS5jcHAgKi87IH07CiAJCTJENDgxRjA0MTQ2QjVDNkIwMEFBNzgzNCAvKiBH
cmFkaWVudEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDJGQzA1NzE0NjBDRDZGMDAyNjM2MzMgLyogR3JhZGllbnRJbWFnZS5oICovOyB9Owor
CQkyRDU4RDg1NTFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OEQ4NTMxQTE1RjY1RjAwQTVG
NzI2IC8qIERhdGFEZXRlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkyRDU4RDg1NjFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENThE
ODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwogCQkyRDU5RjFC
RjFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1OUYxQkUxQTAwNDRDNjAwMUYzRDI5IC8q
IERhdGFEZXRlY3RvcnNTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkyRDVBNTkyRjE1MjUyNTIzMDAzNkVFNTEgLyogSW1hZ2VPcmllbnRhdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc0
OEQ3NDEyQ0MzRjg5MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5jcHAgKi87IH07CiAJCTJE
NUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc0OEQ2NjEyQ0MzNzYzMDAxRkJB
NDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04MDMxLDcgKzgwMzMsNyBAQAogCQkyOTNFQUUxRTEzNTZCMkZF
MDA2N0FDRjkgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOTNFQUUyMDEzNTZCMzJFMDA2N0FDRjkgLyogUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI5NDg5RkM1MTJDMDBGMDMwMEQ4M0YwRiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOTQ5ODY4MTE5NTM0MTk0MDA3MkQyQkQg
LyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBUZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbTsgcGF0aCA9IG1h
Yy9UZXh0VW5kb0luc2VydGlvbk1hcmt1cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMjk0OTg2ODExOTUzNDE5NDAwNzJEMkJEIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3Vw
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dFVuZG9J
bnNlcnRpb25NYXJrdXBNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5N0JF
M0Q5MTZDMDQzRDgwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTgxQ0E5RDEzMTgyMkVDMDBE
MTJGMkEgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5
ODFDQTlFMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA4MCw3ICs4MDgyLDcgQEAKIAkJMjlFMDRBMjdCRUQy
RjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNCZWZvcmVVbmxvYWRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyOUU0RDhERjE2QjA5NDBGMDBDODQ3MDQgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5RTREOEUwMTZCMDk1OTgwMEM4NDcwNCAvKiBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlGQUY0QjUxOTVBQjA4OTAwQTUyMkRDIC8qIFRleHRVbmRv
SW5zZXJ0aW9uTWFya3VwTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRl
eHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmg7IHBhdGggPSBtYWMvVGV4dFVuZG9JbnNlcnRpb25N
YXJrdXBNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjlGQUY0QjUxOTVBQjA4
OTAwQTUyMkRDIC8qIFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVbmRvSW5zZXJ0aW9uTWFya3VwTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJCNDIzNTlGMTUyNTBGNjAwMERCQkNEOCAvKiBSZW5kZXJT
VkdFbGxpcHNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clNWR0VsbGlwc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQjQyMzVBMDE1
MjUwRjYwMDBEQkJDRDggLyogUmVuZGVyU1ZHRWxsaXBzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdFbGxpcHNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJCRThFMkM2MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
Lmg7IHBhdGggPSBwYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04MTA1LDYgKzgxMDcsOCBAQAogCQkyRDNFRjQ0NzE5MTc5MTVDMDAw
MzQxODQgLyogV2ViQ29yZUNBTGF5ZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlQ0FMYXllckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQ0NkYwNEQxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBvaW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFBvaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0NkYwNEYxN0I5NkZEMjAwNTY0N0YwIC8qIEludFNp
emUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50U2l6ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENThEODUzMUExNUY2NUYwMEE1RjcyNiAv
KiBEYXRhRGV0ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFE
ZXRlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ1OEQ4NTQxQTE1RjY1
RjAwQTVGNzI2IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDU5RjFCRTFBMDA0NEM2MDAxRjNEMjkgLyogRGF0YURldGVjdG9yc1NQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0b3JzU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUJDNDI1MTZGODgyQkUwMDcwNDhEMCAvKiBTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ1QkM0MjYxNkY4ODJCRTAwNzA0OEQwIC8qIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODgyMSw3ICs4ODI1LDcg
QEAKIAkJNEE2RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIENTU0ZvbnRGZWF0dXJlVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZlYXR1cmVWYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyog
Rm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb250RmVhdHVyZVNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEE2RTlGQzYxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlU2V0dGluZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBGb250RmVhdHVyZVNldHRpbmdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRBOEM5NkVBMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFt
ZVNlbGVjdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBGcmFtZVNlbGVjdGlvbk1hYy5tbTsgcGF0aCA9IG1hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE4Qzk2RUEwQkU2OTAzMjAwNEVFRkYwIC8q
IEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTk3NTUzNTE4NThFRDlCMDBCRDZEMTUgLyogUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxi
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9u
RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTk3NTUzNjE4
NThFRDlCMDBCRDZEMTUgLyogUlRDUGVlckNvbm5lY3Rpb25FcnJvckNhbGxiYWNrLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2FsbGJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTlDQzgxNTE2QkI5QUM2MDBFQzY0NUEgLyog
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU0RlZmF1bHRTdHlsZVNoZWV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzIyNywxMCArMTMyMzEsMTAgQEAKIAkJQ0UwOEMzRDAxNTJCNTk5QTAwMjFCOEMy
IC8qIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2RDg5Mjk0QzdBQUNFMEFEODlCM0REIC8qIE1hdGhNTE1lbmNs
b3NlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxNZW5j
bG9zZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0U3QjJEQUYxNTg2
QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDsgcGF0
aCA9IG1hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbTsgcGF0aCA9IG1hYy9BbHRlcm5hdGl2ZVRleHRV
SUNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNFN0IyREIxMTU4
NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg7IHBhdGggPSBt
YWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUNFN0IyREIyMTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UubW07IHBhdGggPSBtYWMvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyog
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDRTdCMkRCMDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRTdCMkRCMTE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTdCMkRCMjE1ODZBQkFEMDA5OEIz
RkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTgyNDVFRjE5QjY3MUJBMDBBQzAxMjIgLyogQ0ZOZXR3b3Jr
Q29ubmVjdGlvbkNhY2hlU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENG
TmV0d29ya0Nvbm5lY3Rpb25DYWNoZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTgyNDVGMTE5QjY3MUQ1MDBBQzAxMjIgLyogQ0ZVUkxSZXF1ZXN0U1BJLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGVVJMUmVxdWVzdFNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRUNBREZDMjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGljdGF0
aW9uQWx0ZXJuYXRpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3Mjgs
NyArMTM3MzIsNyBAQAogCQlFQkY1MTIxQTE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVy
c2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUeXBlQ29u
dmVyc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkY1MTIxQjE2OTY0
OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNUeXBlQ29udmVyc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1t
OyBwYXRoID0gbWFjL0VkaXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVByZWZpeC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjEy
MTcxRjMxNkE4QkM2MzAwMDA1M0NBIC8qIFdlYlZUVEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVlRURWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMTkzOCw2ICsyMTk0Miw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlDRTdCMkRBRjE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
LmggKi8sCiAJCQkJQ0U3QjJEQjAxNTg2QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlci5tbSAqLywKKwkJCQkyRDU4RDg1MzFBMTVGNjVGMDBBNUY3MjYgLyogRGF0YURl
dGVjdGlvbi5oICovLAorCQkJCTJENThEODU0MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRhRGV0ZWN0
aW9uLm1tICovLAogCQkJCTkzN0ZGM0Q0MUExMDEyRDYwMDhFQkEzMSAvKiBEaWN0aW9uYXJ5TG9v
a3VwLmggKi8sCiAJCQkJOTM3RkYzRDYxQTEwMTMxQjAwOEVCQTMxIC8qIERpY3Rpb25hcnlMb29r
dXAubW0gKi8sCiAJCQkJRUQ1MDFEQzUwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRvck1hYy5tbSAq
LywKQEAgLTIxOTQ3LDcgKzIxOTUzLDcgQEAKIAkJCQkyOUZBRjRCNTE5NUFCMDg5MDBBNTIyREMg
LyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMuaCAqLywKIAkJCQkyOTQ5ODY4MTE5NTM0MTk0
MDA3MkQyQkQgLyogVGV4dFVuZG9JbnNlcnRpb25NYXJrdXBNYWMubW0gKi8sCiAJCQkpOwotCQkJ
bmFtZSA9IG1hYzsKKwkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OwogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewpAQCAtMjYyOTEs
NiArMjYyOTcsNyBAQAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJu
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEMwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOEYwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BvbHlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDU4RDg1NTFBMTVG
NjVGMDBBNUY3MjYgLyogRGF0YURldGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdB
OTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E5NDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjIyN0E5NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVB
c3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQwOCw2ICsyOTQxNSw3IEBACiAJCQkJ
ODRBODFGNDEwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDc2MzA2RDcxN0UxNDlDRjAwNUE3QzRFIC8qIFNvdXJjZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTM2RDVBMjUxOTNGNDBGQzAwQ0U0Q0FCIC8qIFNvdXJjZVNpemVMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJENThEODU2MUExNUY2NUYwMEE1RjcyNiAvKiBEYXRh
RGV0ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRDAxQTI3QUQxMEM5QkZEODAwMDI2QTQy
IC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjI2Q0RFMEUxMTQw
NDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUFBMkE1QUQ1MTZBNDg2MTQwMDk3NUEyNSAvKiBTcGVlY2hTeW50aGVzaXMuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3Rpb25hcnlMb29r
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGlvbmFyeUxvb2t1cC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWQ4NWFhMWFmMDdhZGM5YWQ0NTBlMGRkNzQ1OWFkOWVh
MjE5Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGlvbmFyeUxvb2t1cC5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRGljdGlvbmFyeUxvb2t1cF9oCi0j
ZGVmaW5lIERpY3Rpb25hcnlMb29rdXBfaAotCi0jaWYgIVBMQVRGT1JNKElPUykKLQotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLUBjbGFzcyBOU0RpY3Rpb25hcnk7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgSGl0VGVzdFJlc3VsdDsKLWNsYXNzIFJhbmdlOwotY2xhc3Mg
VmlzaWJsZVBvc2l0aW9uOwotY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKLQotLy8gRklYTUU6IFNv
bWUgb2YgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBwcm9iYWJseSBiZSBpbiBhIG1vcmUgZ2VuZXJp
YyBjbGFzcy4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1
NjcKLWJvb2wgaXNQb3NpdGlvbkluUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgUmFuZ2Uq
KTsKLWJvb2wgc2hvdWxkVXNlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKTsKLQotUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VFeHBhbmRlZEFy
b3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBudW1i
ZXJPZkNoYXJhY3RlcnNUb0V4cGFuZCk7Ci1QYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rp
b25hcnlMb29rdXBGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIE5TRGljdGlv
bmFyeSAqKm9wdGlvbnMpOwotUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9v
a3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBOU0RpY3Rpb25hcnkgKipv
cHRpb25zKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKLQotI2VuZGlmIC8vIERpY3Rpb25hcnlMb29rdXBfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EaWN0aW9uYXJ5TG9va3VwLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NGExMzRiZGM3YjMwYzk1Yjg1MzkwNDZiNzgyZDVlZmZjN2RlZGU3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGlj
dGlvbmFyeUxvb2t1cC5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJEaWN0aW9uYXJ5TG9va3VwLmgiCi0K
LSNpZiAhUExBVEZPUk0oSU9TKQotCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRm9j
dXNDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rp
b24uaCIKLSNpbXBvcnQgIkhUTUxDb252ZXJ0ZXIuaCIKLSNpbXBvcnQgIkhpdFRlc3RSZXN1bHQu
aCIKLSNpbXBvcnQgIlBhZ2UuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJP
YmplY3QuaCIKLSNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiVmlzaWJsZVBvc2l0
aW9uLmgiCi0jaW1wb3J0ICJWaXNpYmxlU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJWaXNpYmxlVW5p
dHMuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgImh0bWxl
ZGl0aW5nLmgiCi0jaW1wb3J0IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotYm9vbCBpc1Bvc2l0aW9uSW5SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9u
LCBSYW5nZSogcmFuZ2UpCi17Ci0gICAgUmVmUHRyPFJhbmdlPiBwb3NpdGlvblJhbmdlID0gbWFr
ZVJhbmdlKHBvc2l0aW9uLCBwb3NpdGlvbik7Ci0KLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICByYW5nZS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwg
cG9zaXRpb25SYW5nZS5nZXQoKSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFyYW5nZS0+aXNQb2ludEluUmFuZ2UocG9zaXRpb25SYW5nZS0+c3Rh
cnRDb250YWluZXIoKSwgcG9zaXRpb25SYW5nZS0+c3RhcnRPZmZzZXQoKSwgZWMpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBzaG91bGRVc2VTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQot
ewotICAgIGlmICghc2VsZWN0aW9uLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Ci0gICAgaWYgKCFzZWxlY3RlZFJhbmdlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gaXNQb3NpdGlvbkluUmFuZ2UocG9zaXRpb24sIHNlbGVjdGVkUmFuZ2Uu
Z2V0KCkpOwotfQotCi1QYXNzUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRp
b25CeUNoYXJhY3RlcnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgaW50IG51bWJl
ck9mQ2hhcmFjdGVyc1RvRXhwYW5kKQotewotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBQb3NpdGlvbiBlbmQgPSBwb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFyYWN0ZXJzVG9FeHBh
bmQ7ICsraSkgewotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhzdGFydCkg
PT0gTFRSKQotICAgICAgICAgICAgc3RhcnQgPSBzdGFydC5wcmV2aW91cyhDaGFyYWN0ZXIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGFydCA9IHN0YXJ0Lm5leHQoQ2hhcmFjdGVyKTsK
LQotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhlbmQpID09IExUUikKLSAg
ICAgICAgICAgIGVuZCA9IGVuZC5uZXh0KENoYXJhY3Rlcik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGVuZCA9IGVuZC5wcmV2aW91cyhDaGFyYWN0ZXIpOwotICAgIH0KLQotICAgIHJldHVy
biBtYWtlUmFuZ2Uoc3RhcnQsIGVuZCk7Ci19Ci0KLVBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9y
RGljdGlvbmFyeUxvb2t1cEZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24sIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCi17Ci0gICAgUmVmUHRyPFJhbmdlPiBzZWxl
Y3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKCFzZWxl
Y3RlZFJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFZpc2libGVQb3NpdGlv
biBzZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKTsKLSAgICBWaXNpYmxl
UG9zaXRpb24gc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uLnZpc2libGVFbmQoKTsKLQotICAgIC8v
IEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFw
aHMgb2YgdGV4dC4KLSAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQgPSBzdGFydE9m
UGFyYWdyYXBoKHNlbGVjdGlvblN0YXJ0KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gcGFyYWdyYXBo
RW5kID0gZW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uRW5kKTsKLQotICAgIGludCBsZW5ndGhUb1Nl
bGVjdGlvblN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdy
YXBoU3RhcnQsIHNlbGVjdGlvblN0YXJ0KS5nZXQoKSk7Ci0gICAgaW50IGxlbmd0aFRvU2VsZWN0
aW9uRW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChtYWtlUmFuZ2UocGFyYWdyYXBoU3Rh
cnQsIHNlbGVjdGlvbkVuZCkuZ2V0KCkpOwotICAgIE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01h
a2VSYW5nZShsZW5ndGhUb1NlbGVjdGlvblN0YXJ0LCBsZW5ndGhUb1NlbGVjdGlvbkVuZCAtIGxl
bmd0aFRvU2VsZWN0aW9uU3RhcnQpOwotCi0gICAgU3RyaW5nIGZ1bGxQbGFpblRleHRTdHJpbmcg
PSBwbGFpblRleHQobWFrZVJhbmdlKHBhcmFncmFwaFN0YXJ0LCBwYXJhZ3JhcGhFbmQpLmdldCgp
KTsKLQotICAgIC8vIFNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmFuZ2Ugd2Ugd2FudCwgd2Ug
anVzdCBuZWVkIHRvIGdyYWIgdGhlIHJldHVybmVkIG9wdGlvbnMuCi0gICAgd2tFeHRyYWN0V29y
ZERlZmluaXRpb25Ub2tlblJhbmdlRnJvbUNvbnRleHR1YWxTdHJpbmcoZnVsbFBsYWluVGV4dFN0
cmluZywgcmFuZ2VUb1Bhc3MsIG9wdGlvbnMpOwotICAgIAotICAgIHJldHVybiBzZWxlY3RlZFJh
bmdlLnJlbGVhc2UoKTsKLX0KLQotUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0aW9uYXJ5
TG9va3VwQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQs
IE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpCi17Ci0gICAgTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1
bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRnJhbWUqIGZyYW1l
ID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgbm8g
Y2hhcmFjdGVyIGF0IHRoZSBwb2ludC4KLSAgICBpZiAoIWZyYW1lLT5yYW5nZUZvclBvaW50KGhp
dFRlc3RSZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSByZW5kZXJlci0+
cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7Ci0g
ICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICBwb3NpdGlvbiA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLQotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
ID0gZnJhbWUtPnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgaWYgKHNob3VsZFVzZVNlbGVjdGlvbihwb3Np
dGlvbiwgc2VsZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1
cEZvclNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOwotCi0gICAgLy8gQXMgY29udGV4dCwg
d2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJlZm9yZSBhbmQgYWZ0
ZXIgdGhlIHBvaW50LgotICAgIFJlZlB0cjxSYW5nZT4gZnVsbENoYXJhY3RlclJhbmdlID0gcmFu
Z2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBvc2l0aW9uLCAyNTApOwotICAg
IGlmICghZnVsbENoYXJhY3RlclJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IE5TUmFuZ2UgcmFuZ2VUb1Bhc3MgPSBOU01ha2VSYW5nZShUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKG1ha2VSYW5nZShmdWxsQ2hhcmFjdGVyUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcG9zaXRp
b24pLmdldCgpKSwgMCk7Ci0KLSAgICBTdHJpbmcgZnVsbFBsYWluVGV4dFN0cmluZyA9IHBsYWlu
VGV4dChmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCkpOwotCi0gICAgTlNSYW5nZSBleHRyYWN0ZWRS
YW5nZSA9IHdrRXh0cmFjdFdvcmREZWZpbml0aW9uVG9rZW5SYW5nZUZyb21Db250ZXh0dWFsU3Ry
aW5nKGZ1bGxQbGFpblRleHRTdHJpbmcsIHJhbmdlVG9QYXNzLCBvcHRpb25zKTsKLQotICAgIC8v
IFRoaXMgZnVuY3Rpb24gc29tZXRpbWVzIHJldHVybnMge05TTm90Rm91bmQsIDB9IGlmIGl0IHdh
cyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcuCi0gICAgaWYgKGV4dHJhY3RlZFJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLmdldCgp
LCBleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiwgZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGF0YURldGVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGF0YURldGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NDg0
MDMxOWNiMGIzYjk2ZmU3YTcwODU0YjlkMDg3NWQ4MTczNjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EYXRhRGV0ZWN0aW9uLmgKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRGF0YURldGVjdGlvbl9oCisjZGVmaW5lIERhdGFEZXRl
Y3Rpb25faAorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgRERBY3Rpb25Db250ZXh0Owor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIEhpdFRlc3RS
ZXN1bHQ7CitjbGFzcyBSYW5nZTsKKworY2xhc3MgRGF0YURldGVjdGlvbiB7CitwdWJsaWM6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGRldGVj
dEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCBGbG9hdFJlY3Qm
IGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5n
ZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShN
QUMpCisKKyNlbmRpZiAvLyBEYXRhRGV0ZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hYy9EYXRhRGV0ZWN0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2NzYzNzQxYWY3OGExM2Y2YjRhZTRm
ODAxYTgwZDk3NGQ2NzM1MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9EYXRhRGV0ZWN0aW9uLm1tCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkRhdGFEZXRlY3Rpb24uaCIKKworI2ltcG9ydCAiRGF0YURldGVjdG9yc1NQSS5oIgor
I2ltcG9ydCAiRGljdGlvbmFyeUxvb2t1cC5oIgorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCisjaW1w
b3J0ICJIaXRUZXN0UmVzdWx0LmgiCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0ICJSYW5nZS5o
IgorI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCisjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKKyNp
bXBvcnQgIlZpc2libGVQb3NpdGlvbi5oIgorI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBEYXRhRGV0ZWN0
aW9uOjpkZXRlY3RJdGVtQXJvdW5kSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXRUZXN0UmVzdWx0LCBGbG9hdFJlY3QmIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBSZWZQdHI8
UmFuZ2U+JiBkZXRlY3RlZERhdGFSYW5nZSkKK3sKKyAgICBOb2RlKiBub2RlID0gaGl0VGVzdFJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9j
YWxQb2ludCgpLCBudWxscHRyKTsKKyAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAg
IHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOworCisgICAgUmVm
UHRyPFJhbmdlPiBjb250ZXh0UmFuZ2UgPSByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpb25CeUNo
YXJhY3RlcnMocG9zaXRpb24sIDI1MCk7CisgICAgaWYgKCFjb250ZXh0UmFuZ2UpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIGZ1bGxQbGFpblRleHRTdHJpbmcgPSBwbGFp
blRleHQoY29udGV4dFJhbmdlLmdldCgpKTsKKyAgICBpbnQgaGl0TG9jYXRpb24gPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShjb250ZXh0UmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSwgcG9zaXRpb24pLmdldCgpKTsKKworICAgIFJldGFpblB0cjxERFNjYW5uZXJSZWY+IHNjYW5u
ZXIgPSBhZG9wdENGKEREU2Nhbm5lckNyZWF0ZShERFNjYW5uZXJUeXBlU3RhbmRhcmQsIDAsIG51
bGxwdHIpKTsKKyAgICBSZXRhaW5QdHI8RERTY2FuUXVlcnlSZWY+IHNjYW5RdWVyeSA9IGFkb3B0
Q0YoRERTY2FuUXVlcnlDcmVhdGVGcm9tU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZ1bGxQ
bGFpblRleHRTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgZnVs
bFBsYWluVGV4dFN0cmluZy5sZW5ndGgoKSkpKTsKKworICAgIGlmICghRERTY2FubmVyU2NhblF1
ZXJ5KHNjYW5uZXIuZ2V0KCksIHNjYW5RdWVyeS5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IHJlc3VsdHMgPSBhZG9wdENGKEREU2Nh
bm5lckNvcHlSZXN1bHRzV2l0aE9wdGlvbnMoc2Nhbm5lci5nZXQoKSwgRERTY2FubmVyQ29weVJl
c3VsdHNPcHRpb25zTm9PdmVybGFwKSk7CisKKyAgICAvLyBGaW5kIHRoZSBERFJlc3VsdFJlZiB0
aGF0IGludGVyc2VjdHMgdGhlIGhpdFRlc3RSZXN1bHQncyBWaXNpYmxlUG9zaXRpb24uCisgICAg
RERSZXN1bHRSZWYgbWFpblJlc3VsdCA9IG51bGxwdHI7CisgICAgUmVmUHRyPFJhbmdlPiBtYWlu
UmVzdWx0UmFuZ2U7CisgICAgQ0ZJbmRleCByZXN1bHRDb3VudCA9IENGQXJyYXlHZXRDb3VudChy
ZXN1bHRzLmdldCgpKTsKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCByZXN1bHRDb3VudDsg
aSsrKSB7CisgICAgICAgIEREUmVzdWx0UmVmIHJlc3VsdCA9IChERFJlc3VsdFJlZilDRkFycmF5
R2V0VmFsdWVBdEluZGV4KHJlc3VsdHMuZ2V0KCksIGkpOworICAgICAgICBDRlJhbmdlIHJlc3Vs
dFJhbmdlSW5Db250ZXh0ID0gRERSZXN1bHRHZXRSYW5nZShyZXN1bHQpOworICAgICAgICBpZiAo
aGl0TG9jYXRpb24gPj0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24gJiYgKGhpdExvY2F0
aW9uIC0gcmVzdWx0UmFuZ2VJbkNvbnRleHQubG9jYXRpb24pIDwgcmVzdWx0UmFuZ2VJbkNvbnRl
eHQubGVuZ3RoKSB7CisgICAgICAgICAgICBtYWluUmVzdWx0ID0gcmVzdWx0OworICAgICAgICAg
ICAgbWFpblJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShjb250ZXh0UmFuZ2Uu
Z2V0KCksIHJlc3VsdFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uLCByZXN1bHRSYW5nZUluQ29udGV4
dC5sZW5ndGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIW1haW5SZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRy
PEREQWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dCA9IGFkb3B0TlMoW1tnZXREREFjdGlvbkNv
bnRleHRDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgW2FjdGlvbkNvbnRleHQgc2V0QWxsUmVz
dWx0czpAWyAoaWQpbWFpblJlc3VsdCBdXTsKKyAgICBbYWN0aW9uQ29udGV4dCBzZXRNYWluUmVz
dWx0Om1haW5SZXN1bHRdOworCisgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CisgICAgbWFp
blJlc3VsdFJhbmdlLT50ZXh0UXVhZHMocXVhZHMpOworICAgIGRldGVjdGVkRGF0YUJvdW5kaW5n
Qm94ID0gRmxvYXRSZWN0KCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluUmVzdWx0
UmFuZ2UtPm93bmVyRG9jdW1lbnQoKS52aWV3KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBxdWFk
IDogcXVhZHMpCisgICAgICAgIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LnVuaXRlKGZyYW1lVmll
dy0+Y29udGVudHNUb1dpbmRvdyhxdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpKTsKKyAgICAK
KyAgICBkZXRlY3RlZERhdGFSYW5nZSA9IG1haW5SZXN1bHRSYW5nZTsKKyAgICAKKyAgICByZXR1
cm4gYWN0aW9uQ29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlMjVk
YTEyNGY1ZmRmNjljYjZiYThjMjJiZTZiOGE4ZDkzNDVjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGljdGlvbmFyeUxvb2t1cF9oCisjZGVmaW5lIERp
Y3Rpb25hcnlMb29rdXBfaAorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKworQGNsYXNzIE5TRGljdGlvbmFyeTsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBIaXRUZXN0UmVzdWx0OworY2xhc3MgUmFuZ2U7CitjbGFzcyBWaXNpYmxlUG9z
aXRpb247CitjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOworCisvLyBGSVhNRTogU29tZSBvZiB0aGVz
ZSBmdW5jdGlvbnMgc2hvdWxkIHByb2JhYmx5IGJlIGluIGEgbW9yZSBnZW5lcmljIGNsYXNzLgor
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODU2NworYm9vbCBp
c1Bvc2l0aW9uSW5SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSYW5nZSopOworYm9vbCBz
aG91bGRVc2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpOworCitQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRp
b25CeUNoYXJhY3RlcnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50IG51bWJlck9mQ2hhcmFj
dGVyc1RvRXhwYW5kKTsKK1Bhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1
cEZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgTlNEaWN0aW9uYXJ5ICoqb3B0
aW9ucyk7CitQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29rdXBBdEhpdFRl
c3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIE5TRGljdGlvbmFyeSAqKm9wdGlvbnMpOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyNl
bmRpZiAvLyBEaWN0aW9uYXJ5TG9va3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EaWN0aW9uYXJ5TG9va3VwLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNjQyODc1YmVmZTJmODM5YWM2M2Zk
ZTQ0NWY4MDViNjQ1MTEyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwLm1tCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJEaWN0aW9uYXJ5TG9va3VwLmgiCisKKyNp
ZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgIkRvY3VtZW50LmgiCisjaW1wb3J0ICJGb2N1c0Nv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIkZyYW1lLmgiCisjaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5o
IgorI2ltcG9ydCAiSFRNTENvbnZlcnRlci5oIgorI2ltcG9ydCAiSGl0VGVzdFJlc3VsdC5oIgor
I2ltcG9ydCAiUGFnZS5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBvcnQgIlJlbmRlck9iamVj
dC5oIgorI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCisjaW1wb3J0ICJWaXNpYmxlUG9zaXRpb24u
aCIKKyNpbXBvcnQgIlZpc2libGVTZWxlY3Rpb24uaCIKKyNpbXBvcnQgIlZpc2libGVVbml0cy5o
IgorI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiaHRtbGVkaXRp
bmcuaCIKKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIGlzUG9zaXRpb25JblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24sIFJh
bmdlKiByYW5nZSkKK3sKKyAgICBSZWZQdHI8UmFuZ2U+IHBvc2l0aW9uUmFuZ2UgPSBtYWtlUmFu
Z2UocG9zaXRpb24sIHBvc2l0aW9uKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IHJhbmdlLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX1NUQVJULCBwb3Np
dGlvblJhbmdlLmdldCgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIXJhbmdlLT5pc1BvaW50SW5SYW5nZShwb3NpdGlvblJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCBwb3NpdGlvblJhbmdlLT5zdGFydE9mZnNldCgpLCBlYykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIHNob3VsZFVzZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHBvc2l0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7Cisg
ICAgaWYgKCFzZWxlY3Rpb24uaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKTsKKyAgICBpZiAoIXNlbGVjdGVkUmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBpc1Bvc2l0aW9uSW5SYW5nZShwb3NpdGlvbiwgc2VsZWN0ZWRSYW5nZS5nZXQo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRXhwYW5kZWRBcm91bmRQb3NpdGlvbkJ5
Q2hhcmFjdGVycyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgbnVtYmVyT2ZD
aGFyYWN0ZXJzVG9FeHBhbmQpCit7CisgICAgUG9zaXRpb24gc3RhcnQgPSBwb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOworICAgIFBvc2l0aW9uIGVuZCA9IHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYXJhY3RlcnNUb0V4cGFuZDsg
KytpKSB7CisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHN0YXJ0KSA9PSBM
VFIpCisgICAgICAgICAgICBzdGFydCA9IHN0YXJ0LnByZXZpb3VzKENoYXJhY3Rlcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnQubmV4dChDaGFyYWN0ZXIpOworCisg
ICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKGVuZCkgPT0gTFRSKQorICAgICAg
ICAgICAgZW5kID0gZW5kLm5leHQoQ2hhcmFjdGVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZW5kID0gZW5kLnByZXZpb3VzKENoYXJhY3Rlcik7CisgICAgfQorCisgICAgcmV0dXJuIG1h
a2VSYW5nZShzdGFydCwgZW5kKTsKK30KKworUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JEaWN0
aW9uYXJ5TG9va3VwRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biwgTlNEaWN0aW9uYXJ5ICoqb3B0aW9ucykKK3sKKyAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVk
UmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBpZiAoIXNlbGVjdGVk
UmFuZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHNl
bGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOworICAgIFZpc2libGVQb3Np
dGlvbiBzZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb24udmlzaWJsZUVuZCgpOworCisgICAgLy8gQXMg
Y29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgc3Vycm91bmRpbmcgcGFyYWdyYXBocyBv
ZiB0ZXh0LgorICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJh
Z3JhcGgoc2VsZWN0aW9uU3RhcnQpOworICAgIFZpc2libGVQb3NpdGlvbiBwYXJhZ3JhcGhFbmQg
PSBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpOworCisgICAgaW50IGxlbmd0aFRvU2VsZWN0
aW9uU3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhT
dGFydCwgc2VsZWN0aW9uU3RhcnQpLmdldCgpKTsKKyAgICBpbnQgbGVuZ3RoVG9TZWxlY3Rpb25F
bmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG1ha2VSYW5nZShwYXJhZ3JhcGhTdGFydCwg
c2VsZWN0aW9uRW5kKS5nZXQoKSk7CisgICAgTlNSYW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJh
bmdlKGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQsIGxlbmd0aFRvU2VsZWN0aW9uRW5kIC0gbGVuZ3Ro
VG9TZWxlY3Rpb25TdGFydCk7CisKKyAgICBTdHJpbmcgZnVsbFBsYWluVGV4dFN0cmluZyA9IHBs
YWluVGV4dChtYWtlUmFuZ2UocGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaEVuZCkuZ2V0KCkpOwor
CisgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50LCB3ZSBqdXN0
IG5lZWQgdG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KKyAgICB3a0V4dHJhY3RXb3JkRGVm
aW5pdGlvblRva2VuUmFuZ2VGcm9tQ29udGV4dHVhbFN0cmluZyhmdWxsUGxhaW5UZXh0U3RyaW5n
LCByYW5nZVRvUGFzcywgb3B0aW9ucyk7CisgICAgCisgICAgcmV0dXJuIHNlbGVjdGVkUmFuZ2Uu
cmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvckRpY3Rpb25hcnlMb29r
dXBBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgTlNE
aWN0aW9uYXJ5ICoqb3B0aW9ucykKK3sKKyAgICBOb2RlKiBub2RlID0gaGl0VGVzdFJlc3VsdC5p
bm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBGcmFtZSogZnJhbWUgPSBu
b2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBpcyBubyBjaGFy
YWN0ZXIgYXQgdGhlIHBvaW50LgorICAgIGlmICghZnJhbWUtPnJhbmdlRm9yUG9pbnQoaGl0VGVz
dFJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3Np
dGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKTsKKyAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKG5vZGUpOworCisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBm
cmFtZS0+cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAgICBpZiAoc2hvdWxkVXNlU2VsZWN0aW9uKHBvc2l0aW9u
LCBzZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gcmFuZ2VGb3JEaWN0aW9uYXJ5TG9va3VwRm9y
U2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CisKKyAgICAvLyBBcyBjb250ZXh0LCB3ZSBh
cmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0
aGUgcG9pbnQuCisgICAgUmVmUHRyPFJhbmdlPiBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSByYW5nZUV4
cGFuZGVkQXJvdW5kUG9zaXRpb25CeUNoYXJhY3RlcnMocG9zaXRpb24sIDI1MCk7CisgICAgaWYg
KCFmdWxsQ2hhcmFjdGVyUmFuZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNS
YW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
bWFrZVJhbmdlKGZ1bGxDaGFyYWN0ZXJSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbiku
Z2V0KCkpLCAwKTsKKworICAgIFN0cmluZyBmdWxsUGxhaW5UZXh0U3RyaW5nID0gcGxhaW5UZXh0
KGZ1bGxDaGFyYWN0ZXJSYW5nZS5nZXQoKSk7CisKKyAgICBOU1JhbmdlIGV4dHJhY3RlZFJhbmdl
ID0gd2tFeHRyYWN0V29yZERlZmluaXRpb25Ub2tlblJhbmdlRnJvbUNvbnRleHR1YWxTdHJpbmco
ZnVsbFBsYWluVGV4dFN0cmluZywgcmFuZ2VUb1Bhc3MsIG9wdGlvbnMpOworCisgICAgLy8gVGhp
cyBmdW5jdGlvbiBzb21ldGltZXMgcmV0dXJucyB7TlNOb3RGb3VuZCwgMH0gaWYgaXQgd2FzIHVu
YWJsZSB0byBkZXRlcm1pbmUgYSBnb29kIHN0cmluZy4KKyAgICBpZiAoZXh0cmFjdGVkUmFuZ2Uu
bG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShmdWxsQ2hhcmFjdGVyUmFuZ2UuZ2V0KCksIGV4
dHJhY3RlZFJhbmdlLmxvY2F0aW9uLCBleHRyYWN0ZWRSYW5nZS5sZW5ndGgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9UZXh0SW5kaWNhdG9yLmNwcAppbmRleCA4YWEzYmE1MDQ0ZmM5ZDJiZmU4ZTcy
MTgwZWM0YmEzYjU2Zjc1NWRiLi40MmQ4MzYzZjE3ZjdlYzEwN2I5MmRjZjVjYzM5NjU4MmY1MDM0
YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZGljYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmRpY2F0b3IuY3BwCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
U2VsZWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTE1NCw3ICsx
NTUsMjQgQEAgUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmVhdGUo
Y29uc3QgVGV4dEluZGljYXRvcjo6RGF0YSYgZGF0YSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFRleHRJbmRpY2F0b3IoZGF0YSkpOwogfQogCi1QYXNzUmVmUHRyPFRleHRJbmRpY2F0b3I+IFRl
eHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKFdlYkZyYW1lJiBmcmFtZSkK
K1Bhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdl
KGNvbnN0IFJhbmdlJiByYW5nZSkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSByYW5nZS5zdGFydENv
bnRhaW5lcigpLT5kb2N1bWVudCgpLmZyYW1lKCk7CisKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0g
ZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oJnJhbmdlKTsKKworICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0
b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZSgqV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmZyYW1lKSk7CisKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKG9sZFNlbGVjdGlvbik7CisgICAgCisgICAgcmV0dXJuIGluZGljYXRvci5yZWxlYXNl
KCk7Cit9CisKK1Bhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoY29uc3QgV2ViRnJhbWUmIGZyYW1lKQogewogICAgIEZyYW1l
JiBjb3JlRnJhbWUgPSAqZnJhbWUuY29yZUZyYW1lKCk7CiAgICAgSW50UmVjdCBzZWxlY3Rpb25S
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChjb3JlRnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91
bmRzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmRpY2F0b3Iu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5kaWNhdG9yLmgKaW5kZXggODQ5OTU4ZjYx
YzAyMzk0OTE0Nzg2NzMzNDg4YTE0NWM0MDIyMDRkOS4uNzJjNTZkNWE1MTI4MzhhN2Q5MTAzYThi
Yjg5N2E3ZWY2MDI2N2U0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJ
bmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZGljYXRvci5oCkBA
IC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKK2NsYXNzIFJhbmdlOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTU5LDcgKzYwLDgg
QEAgcHVibGljOgogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9y
PiBjcmVhdGUoY29uc3QgVGV4dEluZGljYXRvcjo6RGF0YSYpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFRleHRJbmRpY2F0b3I+IGNyZWF0ZVdpdGhTZWxlY3Rpb25JbkZyYW1lKFdlYkZyYW1lJik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gY3JlYXRlV2l0aFNlbGVjdGlv
bkluRnJhbWUoY29uc3QgV2ViRnJhbWUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0SW5k
aWNhdG9yPiBjcmVhdGVXaXRoUmFuZ2UoY29uc3QgV2ViQ29yZTo6UmFuZ2UmKTsKIAogICAgIH5U
ZXh0SW5kaWNhdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCmluZGV4IDBlNDBlMjYwZmM1OTBkMjhlNTgwZjlhZDc5ZmY2MTMxZTAzMjI3
ZWUuLjgyN2MwNjA4NzEwODM5YmQzYjQ2YTgyMjMxMDVkNTRhYzg3YWUxN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNzgzLDcgKzc4
Myw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFt
ZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkCiB9CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IFdlYkZyYW1lOjpjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgpCitQYXNz
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gV2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90
KCkgY29uc3QKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0g
c25hcHNob3RTZWxlY3Rpb24oKmNvcmVGcmFtZSgpLCBXZWJDb3JlOjpTbmFwc2hvdE9wdGlvbnNG
b3JjZUJsYWNrVGV4dCk7CiAgICAgaWYgKCFzbmFwc2hvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNjBjOTQzNDYxODVkODM5NTNhMjg1NTZl
YjBhNDMzODhhOTdiN2YxOC4uM2E1NzNlMDNmNGRjNWRmYjY1YTgzNTFlZDFmZDI2NmQxMzI3MzEy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gd2ViQXJj
aGl2ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiwgdm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAot
ICAgIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hvdCgp
OworICAgIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTZWxlY3Rpb25TbmFwc2hv
dCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lPiBj
cmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50Pik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
Y2Q1NTM1NGQzY2RmYjg3MDE2ZTBmNjI2ODczMmM1ZDdjMDkxMzc2ZC4uYzhhMDFlMjViZTllZWFk
MGVlNGFjYjk2ZTA5NDllNDVhZGQyODc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTYsNiArNTYsNyBAQAogI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0
Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RhdGFEZXRlY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YURldGVj
dG9yc1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgpAQCAtOTY3LDg2ICs5NjgsNiBAQCBTdHJpbmcgV2Vi
UGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBzY2FuRm9yRGF0
YURldGVjdGVkSXRlbXMoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCwgRmxvYXRS
ZWN0JiBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCwgUmVmUHRyPFJhbmdlPiYgZGV0ZWN0ZWREYXRh
UmFuZ2UpCi17Ci0gICAgTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSByZW5kZXJl
ci0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7
Ci0gICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICBwb3NpdGlvbiA9IGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZShub2RlKTsKLQotICAgIFJlZlB0cjxSYW5nZT4gY29udGV4dFJh
bmdlID0gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBvc2l0aW9uLCAy
NTApOwotICAgIGlmICghY29udGV4dFJhbmdlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIFN0cmluZyBmdWxsUGxhaW5UZXh0U3RyaW5nID0gcGxhaW5UZXh0KGNvbnRleHRSYW5nZS5n
ZXQoKSk7Ci0gICAgaW50IGhpdExvY2F0aW9uID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCht
YWtlUmFuZ2UoY29udGV4dFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIHBvc2l0aW9uKS5nZXQoKSk7
Ci0KLSAgICBSZXRhaW5QdHI8RERTY2FubmVyUmVmPiBzY2FubmVyID0gYWRvcHRDRihERFNjYW5u
ZXJDcmVhdGUoRERTY2FubmVyVHlwZVN0YW5kYXJkLCAwLCBudWxscHRyKSk7Ci0gICAgUmV0YWlu
UHRyPEREU2NhblF1ZXJ5UmVmPiBzY2FuUXVlcnkgPSBhZG9wdENGKEREU2NhblF1ZXJ5Q3JlYXRl
RnJvbVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmdWxsUGxhaW5UZXh0U3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIGZ1bGxQbGFpblRleHRTdHJpbmcubGVu
Z3RoKCkpKSk7Ci0KLSAgICBpZiAoIUREU2Nhbm5lclNjYW5RdWVyeShzY2FubmVyLmdldCgpLCBz
Y2FuUXVlcnkuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiByZXN1bHRzID0gYWRvcHRDRihERFNjYW5uZXJDb3B5UmVzdWx0c1dpdGhP
cHRpb25zKHNjYW5uZXIuZ2V0KCksIEREU2Nhbm5lckNvcHlSZXN1bHRzT3B0aW9uc05vT3Zlcmxh
cCkpOwotCi0gICAgLy8gRmluZCB0aGUgRERSZXN1bHRSZWYgdGhhdCBpbnRlcnNlY3RzIHRoZSBo
aXRUZXN0UmVzdWx0J3MgVmlzaWJsZVBvc2l0aW9uLgotICAgIEREUmVzdWx0UmVmIG1haW5SZXN1
bHQgPSBudWxscHRyOwotICAgIFJlZlB0cjxSYW5nZT4gbWFpblJlc3VsdFJhbmdlOwotICAgIENG
SW5kZXggcmVzdWx0Q291bnQgPSBDRkFycmF5R2V0Q291bnQocmVzdWx0cy5nZXQoKSk7Ci0gICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcmVzdWx0Q291bnQ7IGkrKykgewotICAgICAgICBERFJl
c3VsdFJlZiByZXN1bHQgPSAoRERSZXN1bHRSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXN1
bHRzLmdldCgpLCBpKTsKLSAgICAgICAgQ0ZSYW5nZSByZXN1bHRSYW5nZUluQ29udGV4dCA9IERE
UmVzdWx0R2V0UmFuZ2UocmVzdWx0KTsKLSAgICAgICAgaWYgKGhpdExvY2F0aW9uID49IHJlc3Vs
dFJhbmdlSW5Db250ZXh0LmxvY2F0aW9uICYmIChoaXRMb2NhdGlvbiAtIHJlc3VsdFJhbmdlSW5D
b250ZXh0LmxvY2F0aW9uKSA8IHJlc3VsdFJhbmdlSW5Db250ZXh0Lmxlbmd0aCkgewotICAgICAg
ICAgICAgbWFpblJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAgICAgIG1haW5SZXN1bHRSYW5nZSA9
IFRleHRJdGVyYXRvcjo6c3VicmFuZ2UoY29udGV4dFJhbmdlLmdldCgpLCByZXN1bHRSYW5nZUlu
Q29udGV4dC5sb2NhdGlvbiwgcmVzdWx0UmFuZ2VJbkNvbnRleHQubGVuZ3RoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFtYWluUmVzdWx0KQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGFj
dGlvbkNvbnRleHQgPSBhZG9wdE5TKFtbZ2V0RERBY3Rpb25Db250ZXh0Q2xhc3MoKSBhbGxvY10g
aW5pdF0pOwotICAgIFthY3Rpb25Db250ZXh0IHNldEFsbFJlc3VsdHM6QFsgKGlkKW1haW5SZXN1
bHQgXV07Ci0gICAgW2FjdGlvbkNvbnRleHQgc2V0TWFpblJlc3VsdDptYWluUmVzdWx0XTsKLQot
ICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwotICAgIG1haW5SZXN1bHRSYW5nZS0+dGV4dFF1
YWRzKHF1YWRzKTsKLSAgICBkZXRlY3RlZERhdGFCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwot
ICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpblJlc3VsdFJhbmdlLT5vd25lckRvY3VtZW50
KCkudmlldygpOwotICAgIGZvciAoY29uc3QgYXV0byYgcXVhZCA6IHF1YWRzKQotICAgICAgICBk
ZXRlY3RlZERhdGFCb3VuZGluZ0JveC51bml0ZShmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3co
cXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKSk7Ci0KLSAgICBkZXRlY3RlZERhdGFSYW5nZSA9
IG1haW5SZXN1bHRSYW5nZTsKLQotICAgIHJldHVybiBhY3Rpb25Db250ZXh0OwotfQotCi1zdGF0
aWMgUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yRm9yUmFuZ2UoUmFuZ2Uq
IHJhbmdlKQotewotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgRnJhbWUqIGZyYW1lID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkuZnJh
bWUoKTsKLQotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
VmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCk7Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihyYW5nZSk7Ci0KLSAg
ICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFNlbGVjdGlvbkluRnJhbWUoKldlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpOwot
Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwotCi0g
ICAgcmV0dXJuIGluZGljYXRvci5yZWxlYXNlKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6cGVyZm9y
bUFjdGlvbk1lbnVIaXRUZXN0QXRMb2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9u
SW5WaWV3Q29vb3JkaW5hdGVzKQogewogICAgIG1fbGFzdEFjdGlvbk1lbnVIaXRQYWdlT3Zlcmxh
eSA9IG51bGxwdHI7CkBAIC0xMTEyLDcgKzEwMzMsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1B
Y3Rpb25NZW51SGl0VGVzdEF0TG9jYXRpb24oV2ViQ29yZTo6RmxvYXRQb2ludCBsb2NhdGlvbklu
VgogICAgICAgICAgICAgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3gudW5pdGUoZnJhbWVWaWV3LT5j
b250ZW50c1RvV2luZG93KHF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKSkpOwogCiAgICAgICAg
IGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3ggPSBkZXRlY3RlZERhdGFC
b3VuZGluZ0JveDsKLSAgICAgICAgYWN0aW9uTWVudVJlc3VsdC5kZXRlY3RlZERhdGFUZXh0SW5k
aWNhdG9yID0gdGV4dEluZGljYXRvckZvclJhbmdlKG1haW5SZXN1bHRSYW5nZS5nZXQoKSk7Cisg
ICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvciA9IFRleHRJ
bmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSgqbWFpblJlc3VsdFJhbmdlKTsKICAgICAgICAgbV9s
YXN0QWN0aW9uTWVudVJhbmdlRm9yU2VsZWN0aW9uID0gbWFpblJlc3VsdFJhbmdlOwogICAgICAg
ICBtX2xhc3RBY3Rpb25NZW51SGl0UGFnZU92ZXJsYXkgPSB3ZWJPdmVybGF5OwogCkBAIC0xMTIz
LDEwICsxMDQ0LDEwIEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk1lbnVIaXRUZXN0QXRM
b2NhdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0aW9uSW5WCiAgICAgaWYgKCFwYWdlT3Zl
cmxheURpZE92ZXJyaWRlRGF0YURldGVjdG9ycyAmJiBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgp
ICYmIGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBG
bG9hdFJlY3QgZGV0ZWN0ZWREYXRhQm91bmRpbmdCb3g7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4g
ZGV0ZWN0ZWREYXRhUmFuZ2U7Ci0gICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuYWN0aW9uQ29udGV4
dCA9IHNjYW5Gb3JEYXRhRGV0ZWN0ZWRJdGVtcyhoaXRUZXN0UmVzdWx0LCBkZXRlY3RlZERhdGFC
b3VuZGluZ0JveCwgZGV0ZWN0ZWREYXRhUmFuZ2UpOwotICAgICAgICBpZiAoYWN0aW9uTWVudVJl
c3VsdC5hY3Rpb25Db250ZXh0KSB7CisgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuYWN0aW9uQ29u
dGV4dCA9IERhdGFEZXRlY3Rpb246OmRldGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KGhpdFRl
c3RSZXN1bHQsIGRldGVjdGVkRGF0YUJvdW5kaW5nQm94LCBkZXRlY3RlZERhdGFSYW5nZSk7Cisg
ICAgICAgIGlmIChhY3Rpb25NZW51UmVzdWx0LmFjdGlvbkNvbnRleHQgJiYgZGV0ZWN0ZWREYXRh
UmFuZ2UpIHsKICAgICAgICAgICAgIGFjdGlvbk1lbnVSZXN1bHQuZGV0ZWN0ZWREYXRhQm91bmRp
bmdCb3ggPSBkZXRlY3RlZERhdGFCb3VuZGluZ0JveDsKLSAgICAgICAgICAgIGFjdGlvbk1lbnVS
ZXN1bHQuZGV0ZWN0ZWREYXRhVGV4dEluZGljYXRvciA9IHRleHRJbmRpY2F0b3JGb3JSYW5nZShk
ZXRlY3RlZERhdGFSYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBhY3Rpb25NZW51UmVzdWx0LmRl
dGVjdGVkRGF0YVRleHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2Uo
KmRldGVjdGVkRGF0YVJhbmdlKTsKICAgICAgICAgICAgIG1fbGFzdEFjdGlvbk1lbnVSYW5nZUZv
clNlbGVjdGlvbiA9IGRldGVjdGVkRGF0YVJhbmdlOwogICAgICAgICB9CiAgICAgfQo=
</data>
<flag name="review"
          id="266479"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>