<?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>110736</bug_id>
          
          <creation_ts>2013-02-25 01:47:23 -0800</creation_ts>
          <short_desc>[BlackBerry] Upstream the datalist support UI</short_desc>
          <delta_ts>2013-02-26 08:30:23 -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>WebKit BlackBerry</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>0</everconfirmed>
          <reporter name="Alberto Garcia">berto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840800</commentid>
    <comment_count>0</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-02-25 01:47:23 -0800</bug_when>
    <thetext>These are new suggestion box classes to support the datalist UI for textfields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840804</commentid>
    <comment_count>1</comment_count>
      <attachid>190018</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-02-25 01:50:31 -0800</bug_when>
    <thetext>Created attachment 190018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840850</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-25 03:54:44 -0800</bug_when>
    <thetext>Attachment 190018 did not pass style-queue:

Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp:1272:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:124:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:125:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:126:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:127:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:129:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:132:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:133:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:134:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:135:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:136:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:137:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:140:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:141:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:142:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:143:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:144:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:145:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:146:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:147:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:148:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indenFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/css/themeBlackBerry.css&apos;, u&apos;Source/WebCore/platform/blackberry/RenderThemeBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/blackberry/RenderThemeBlackBerry.h&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/PlatformBlackBerry.cmake&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxElement.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxElement.h&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.h&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/InputHandler.h&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp&apos;]&quot; exit_code: 1
t] [3]
Source/WebKit/blackberry/WebCoreSupport/SuggestionBoxHandler.cpp:149:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 26 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840979</commentid>
    <comment_count>3</comment_count>
      <attachid>190018</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-02-25 08:05:54 -0800</bug_when>
    <thetext>Comment on attachment 190018
Patch

We should fix coding style before upstreaming this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841009</commentid>
    <comment_count>4</comment_count>
      <attachid>190070</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-02-25 09:03:40 -0800</bug_when>
    <thetext>Created attachment 190070
Patch

Here&apos;s the updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841957</commentid>
    <comment_count>5</comment_count>
      <attachid>190272</attachid>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-02-26 06:43:08 -0800</bug_when>
    <thetext>Created attachment 190272
Patch

The author of the code was missing in the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841959</commentid>
    <comment_count>6</comment_count>
      <attachid>190272</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2013-02-26 06:46:31 -0800</bug_when>
    <thetext>Comment on attachment 190272
Patch

Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841967</commentid>
    <comment_count>7</comment_count>
      <attachid>190272</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-02-26 07:08:58 -0800</bug_when>
    <thetext>Comment on attachment 190272
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842035</commentid>
    <comment_count>8</comment_count>
      <attachid>190272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 08:30:17 -0800</bug_when>
    <thetext>Comment on attachment 190272
Patch

Clearing flags on attachment: 190272

Committed r144063: &lt;http://trac.webkit.org/changeset/144063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842036</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-26 08:30:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190018</attachid>
            <date>2013-02-25 01:50:31 -0800</date>
            <delta_ts>2013-02-25 09:03:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>suggestionbox.diff</filename>
            <type>text/plain</type>
            <size>29192</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTdjM2NmLi43YTA4ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MvdGhlbWVC
bGFja0JlcnJ5LmNzczoKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRv
d24tYm94KToKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94
LWl0ZW0pOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCk6
CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWRyb3Bkb3duLWJveC1pdGVtLWxh
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c3VwcG9ydHNE
YXRhTGlzdFVJKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5Lmg6CisgICAgICAgIChSZW5kZXJUaGVtZUJsYWNr
QmVycnkpOgorCiAyMDEzLTAyLTI0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXByb3ZlIHNwZWVkIG9mIExpbmtpZmll
ci5yZXNldCBvcGVyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVC
bGFja0JlcnJ5LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUJsYWNrQmVycnkuY3NzCmlu
ZGV4IDJmY2FkYzAuLjhjZTY2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVt
ZUJsYWNrQmVycnkuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUJsYWNrQmVycnku
Y3NzCkBAIC02Miw2ICs2Miw0OSBAQCBzZWxlY3Rbc2l6ZT0iMSJdIHsKICAgICBmb250LXdlaWdo
dDogbm9ybWFsOwogfQogCisKKy8qIFN1Z2dlc3Rpb24gQm94ICovCisKK2lucHV0Ojotd2Via2l0
LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ei1pbmRleDogMjE0NzQ4MzY0NzsKKyAgICBvcGFjaXR5OiAwLjk4OworICAgIG1heC1oZWlnaHQ6
IDIwMHB4OworICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKKyAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDsKKyAgICBib3JkZXItdG9wOiBub25lOwor
ICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2ZjZmM7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAw
cHggNXB4IDVweCAtMnB4ICM2MDYwNjAgaW5zZXQ7CisgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAy
cHggMHB4IDhweCAtNXB4ICNBRUFFQUU7Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24t
ZHJvcGRvd24tYm94LWl0ZW0geworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiAxMDAl
OworICAgIHBhZGRpbmc6IDEwcHggNXB4OworICAgIGNvbG9yOiAjMzYzNjM2OworICAgIHRleHQt
ZGVjb3JhdGlvbjogbm9uZTsKKyAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U4ZThlODsK
KyAgICB0ZXh0LW92ZXJmbG93OiAtYmxhY2tiZXJyeS1mYWRlOworICAgIG92ZXJmbG93OiBoaWRk
ZW47Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4LXRleHQgeworICAgIGZv
bnQtd2VpZ2h0OiBib2xkOworfQorCitpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWRyb3Bkb3du
LWJveC1pdGVtLWxhc3QgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIHdpZHRoOiAxMDAlOwor
ICAgIHBhZGRpbmc6IDEwcHggNXB4OworICAgIGNvbG9yOiAjMzYzNjM2OworICAgIHRleHQtZGVj
b3JhdGlvbjogbm9uZTsKKyAgICB0ZXh0LW92ZXJmbG93OiAtYmxhY2tiZXJyeS1mYWRlOworICAg
IG92ZXJmbG93OiBoaWRkZW47CisgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKK30KKwogaW5wdXRb
dHlwZT0iZGF0ZSJdLCBpbnB1dFt0eXBlPSJkYXRldGltZSJdLCBpbnB1dFt0eXBlPSJkYXRldGlt
ZS1sb2NhbCJdLCBpbnB1dFt0eXBlPSJ0aW1lIl0sIGlucHV0W3R5cGU9Im1vbnRoIl0gewogICAg
IGZvbnQtZmFtaWx5OiAiU2xhdGUgUHJvIjsKICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVy
VGhlbWVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAppbmRleCBjNzUyNWRiLi4wNTVhYTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJU
aGVtZUJsYWNrQmVycnkuY3BwCkBAIC0xMjY3LDQgKzEyNjcsMTAgQEAgQ29sb3IgUmVuZGVyVGhl
bWVCbGFja0JlcnJ5OjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkg
Y29uc3QKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZZWxsb3cuCiB9CiAKK2Jv
b2wgUmVuZGVyVGhlbWVCbGFja0JlcnJ5OjpzdXBwb3J0c0RhdGFMaXN0VUkoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKSBjb25zdAoreworICAgIC8vVE9ETzogc3VwcG9ydCBvdGhlciBpbnB1dCB0
eXBlcyBpbiB0aGUgZnV0dXJlLgorICAgIHJldHVybiB0eXBlID09IElucHV0VHlwZU5hbWVzOjp0
ZXh0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCmlu
ZGV4IDFlZWI1NWIuLmJkYTYyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtOTYsNiArOTYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hI
aWdobGlnaHRDb2xvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2
ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkZWZhdWx0R1VJRm9udCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGI0ZDQ2ZWEuLjkyNzMwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjUg
IEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6
CisKIDIwMTMtMDItMjIgIEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgRGlzYWJsZSBNZWRpYVNvdXJjZSBvbiBBcHBsZSBXaW5kb3dzIHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYWY4ZDE0MS4uMTFmOWQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTExOCw2ICsxMTgsOCBAQCBs
aXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05h
dmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKKyAgICBibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9WaWJyYXRpb25DbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
aW5kZXggNGIzNTQxMS4uOTJmMmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3Vw
cG9ydCBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTEwNzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94RWxlbWVudDo6U3Vn
Z2VzdGlvbkJveEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEVsZW1l
bnQ6On5TdWdnZXN0aW9uQm94RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9u
Qm94RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdWdn
ZXN0aW9uQm94RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U3VnZ2VzdGlvbkJveEVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rp
b25Cb3hIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpTdWdnZXN0aW9uQm94SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6flN1Z2dlc3Rpb25Cb3hIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNldElucHV0RWxlbWVudEFuZFVw
ZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNo
b3dEcm9wZG93bkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6
aGlkZURyb3Bkb3duQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVy
OjpjaGFuZ2VJbnB1dEVsZW1lbnRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dWdnZXN0aW9uQm94SGFuZGxlcjo6cGFyc2VTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6aW5zZXJ0U3VnZ2VzdGlvbnNUb0Ryb3Bkb3duQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OmFkanVzdERyb3Bkb3duQm94UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmJ1aWxkRHJvcGRvd25Cb3hUcmVlKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3VnZ2VzdGlvbkJveEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmZvY3VzZWRFbGVtZW50KToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6dXBkYXRlRm9ybVN0YXRlKToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvVG91Y2hFdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpUb3VjaEV2ZW50SGFu
ZGxlcjo6aGFuZGxlVG91Y2hQb2ludCk6CisKIDIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8
YWxiZ2FyY2lhQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIENocm9tZUNsaWVudEJs
YWNrQmVycnk6IGZpeCB2YXJpYWJsZSBuYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUzZjIxMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0
aW9uQm94RWxlbWVudC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rp
b25Cb3hFbGVtZW50LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFu
ZGxlci5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitTdWdnZXN0aW9uQm94RWxlbWVudDo6U3VnZ2VzdGlvbkJveEVsZW1lbnQoU3VnZ2VzdGlvbkJv
eEhhbmRsZXIqIGVsZW1lbnQsIFN0cmluZyYgdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KG5hbWUsIGRvY3Vt
ZW50KQorICAgICwgbV9zdWdnZXN0aW9uQm94KGVsZW1lbnQpCisgICAgLCBtX3ZhbHVlKHZhbHVl
KQoreworfQorCitTdWdnZXN0aW9uQm94RWxlbWVudDo6flN1Z2dlc3Rpb25Cb3hFbGVtZW50KCkK
K3sKK30KKworUGFzc1JlZlB0cjxTdWdnZXN0aW9uQm94RWxlbWVudD4gU3VnZ2VzdGlvbkJveEVs
ZW1lbnQ6OmNyZWF0ZShTdWdnZXN0aW9uQm94SGFuZGxlciogZWxlbWVudCwgU3RyaW5nJiB2YWx1
ZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VnZ2Vz
dGlvbkJveEVsZW1lbnQoZWxlbWVudCwgdmFsdWUsIEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVu
dCkpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAg
ICAgIC8vIENhcHR1cmUgYSBtb3VzZSBkb3duIGV2ZW50IHdpdGggbGVmdCBjbGljayBhbmQgc2V0
IHRoZSBwYXJlbnQgaW5wdXQgZWxlbWVudCB0byB0aGUgbm9kZSdzIHRleHQKKyAgICAgICAgaWYg
KGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIHN0YXRpY19j
YXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9uICYmIGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlvbkJveC0+Y2hhbmdlSW5w
dXRFbGVtZW50SW5uZXJUZXh0VmFsdWUobV92YWx1ZSk7CisgICAgICAgICAgICBtX3N1Z2dlc3Rp
b25Cb3gtPmhpZGVEcm9wZG93bkJveCgpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8qIG5h
bWVzcGFjZSBXZWJDb3JlICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZWRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQu
aApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICov
CisjaWZuZGVmIFN1Z2dlc3Rpb25Cb3hFbGVtZW50X2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkJveEVs
ZW1lbnRfaAorCisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTdWdnZXN0aW9uQm94SGFuZGxlcjsKK2NsYXNzIEV2ZW50OworCitjbGFz
cyBTdWdnZXN0aW9uQm94RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3VnZ2VzdGlvbkJveEVsZW1lbnQ+IGNyZWF0ZShTdWdn
ZXN0aW9uQm94SGFuZGxlciosIFN0cmluZyYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB+U3Vn
Z2VzdGlvbkJveEVsZW1lbnQoKTsKKworcHJpdmF0ZToKKyAgICBTdWdnZXN0aW9uQm94RWxlbWVu
dChTdWdnZXN0aW9uQm94SGFuZGxlciosIFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKKworICAgIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKiBtX3N1Z2dlc3Rpb25Cb3g7CisgICAgU3Ry
aW5nIG1fdmFsdWU7Cit9OworCit9IC8qIG5hbWVzcGFjZSBXZWJDb3JlICovCisjZW5kaWYgLyog
U3VnZ2VzdGlvbkJveEVsZW1lbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzZTQ5NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9u
Qm94SGFuZGxlci5jcHAKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkJveEhhbmRsZXIuaCIKKworI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5j
bHVkZSAiRE9NVG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXZF
bGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNw
YW5FbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25Cb3hFbGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5o
IgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOworCitTdWdnZXN0aW9uQm94SGFuZGxlcjo6U3VnZ2VzdGlvbkJveEhhbmRsZXIoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkKKyAgICA6IG1faW5wdXRFbGVtZW50KGVsZW1lbnQpCit7
Cit9CisKK1N1Z2dlc3Rpb25Cb3hIYW5kbGVyOjp+U3VnZ2VzdGlvbkJveEhhbmRsZXIoKQorewor
ICAgIGhpZGVEcm9wZG93bkJveCgpOworfQorCitQYXNzT3duUHRyPFN1Z2dlc3Rpb25Cb3hIYW5k
bGVyPiBTdWdnZXN0aW9uQm94SGFuZGxlcjo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTdWdnZXN0aW9uQm94SGFuZGxlcihlbGVt
ZW50KSk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNldElucHV0RWxlbWVudEFu
ZFVwZGF0ZURpc3BsYXkoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCBhbGxvd0VtcHR5
UHJlZml4KQoreworICAgIGhpZGVEcm9wZG93bkJveCgpOworICAgIG1faW5wdXRFbGVtZW50ID0g
ZWxlbWVudDsKKyAgICBzaG93RHJvcGRvd25Cb3goYWxsb3dFbXB0eVByZWZpeCk7Cit9CisKK3Zv
aWQgU3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNob3dEcm9wZG93bkJveChib29sIGFsbG93RW1wdHlQ
cmVmaXgpCit7CisgICAgLy8gQ2xlYXJpbmcgc3VnZ2VzdGlvbnMgYW5kIHBhcnNlIGFnYWluCisg
ICAgbV9zdWdnZXN0aW9ucy5jbGVhcigpOworICAgIHBhcnNlU3VnZ2VzdGlvbnMoYWxsb3dFbXB0
eVByZWZpeCk7CisKKyAgICAvLyBEb24ndCBib3RoZXIgYnVpbGRpbmcgdGhlIHRyZWUgaWYgc3Vn
Z2VzdGlvbiBzaXplIGlzIDAuCisgICAgLy8gV2UgbmVlZCB0byBjYWxsIGluc2VydFN1Z2dlc3Rp
b25zIHRvIGNsZWFyIHByZXZpb3VzIHN1Z2dlc3Rpb25zCisgICAgLy8gaW4gdGhlIERPTSBpZiBz
dWdnZXN0aW9uIHNpemUgaXMgMC4KKyAgICBpZiAoIW1fZHJvcGRvd25Cb3gpIHsKKyAgICAgICAg
aWYgKCFtX3N1Z2dlc3Rpb25zLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
YnVpbGREcm9wZG93bkJveFRyZWUoKTsKKyAgICB9CisKKyAgICBpbnNlcnRTdWdnZXN0aW9uc1Rv
RHJvcGRvd25Cb3goKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6aGlkZURyb3Bk
b3duQm94KCkKK3sKKyAgICBpZiAobV9kcm9wZG93bkJveCkgeworICAgICAgICBpZiAoU2hhZG93
Um9vdCogc2hhZG93Um9vdCA9IG1faW5wdXRFbGVtZW50LT51c2VyQWdlbnRTaGFkb3dSb290KCkp
IHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBzaGFkb3dSb290
LT5yZW1vdmVDaGlsZChtX2Ryb3Bkb3duQm94LmdldCgpLCBlYyk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9kcm9wZG93bkJveCA9IDA7CisgICAgfQorICAgIG1fc3VnZ2VzdGlvbnMuY2xlYXIoKTsK
K30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6Y2hhbmdlSW5wdXRFbGVtZW50SW5uZXJU
ZXh0VmFsdWUoU3RyaW5nJiB0ZXh0KQoreworICAgIG1faW5wdXRFbGVtZW50LT5zZXRJbm5lclRl
eHRWYWx1ZSh0ZXh0KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6cGFyc2VTdWdn
ZXN0aW9ucyhib29sIGFsbG93RW1wdHlQcmVmaXgpCit7CisgICAgLy8gUmV0dXJuIGlmIHRoaXMg
aGFuZGxlciBkb2Vzbid0IGhhdmUgYW4gaW5wdXQgZWxlbWVudCB0byBhdHRhY2ggdG8KKyAgICBp
ZiAoIW1faW5wdXRFbGVtZW50KQorICAgICAgICAgcmV0dXJuOworCisgICAgIC8vIExpc3QgYXR0
cmlidXRlIGV4aXN0cywgY2hlY2sgaWYgZGF0YWxpc3QgZXhpc3RzLgorICAgICBIVE1MRGF0YUxp
c3RFbGVtZW50KiBkTGlzdCA9IG1faW5wdXRFbGVtZW50LT5kYXRhTGlzdCgpOworICAgICBpZiAo
IWRMaXN0KQorICAgICAgICAgcmV0dXJuOworCisgICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4g
b3B0aW9uc0xpc3QgPSBkTGlzdC0+b3B0aW9ucygpOworICAgICBTdHJpbmcgcHJlZml4ID0gbV9p
bnB1dEVsZW1lbnQtPmlubmVyVGV4dFZhbHVlKCk7CisKKyAgICAgLy8gRXhpdCBpZjoKKyAgICAg
Ly8gMSkgSWYgbGVuZ3RoIG9mIG5vZGVzIGluIGRhdGFsaXN0IGlzIGVtcHR5LCByZXR1cm4uCisg
ICAgIC8vIDIpIElmIHdlIGRvIG5vdCBhbGxvdyBlbXB0eSBwcmVmaXhlcyBhbmQgcHJlZml4IGlz
IG51bGwKKyAgICAgaWYgKCFvcHRpb25zTGlzdC0+bGVuZ3RoKCkgfHwgKCFhbGxvd0VtcHR5UHJl
Zml4ICYmIHByZWZpeC5pc0VtcHR5KCkpKSB7CisgICAgICAgICBoaWRlRHJvcGRvd25Cb3goKTsK
KyAgICAgICAgIHJldHVybjsKKyAgICAgfQorCisgICAgIC8vIFByZWZpeCBtYXRjaCB0aGUgaW5u
ZXIgdGV4dCB2YWx1ZSBvZiB0aGUgaW5wdXQgYWdhaW5zdCB0aGUgY2FuZGlkYXRlIHN1Z2dlc3Rp
b25zLgorICAgICAvLyBNYWtlIHN1cmUgdGhlIGxlbmd0aCBvZiB0aGUgc3VnZ2VzdGlvbiBpcyBz
bWFsbGVyIHRoYW4gbWF4IGxlbmd0aAorICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IG9wdGlvbnNMaXN0LT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICBIVE1MT3B0aW9uRWxlbWVu
dCogdGFyZ2V0ID0gdG9IVE1MT3B0aW9uRWxlbWVudCgob3B0aW9uc0xpc3QtPml0ZW0oaSkpKTsK
KyAgICAgICAgIGlmICghbV9pbnB1dEVsZW1lbnQtPmlzVmFsaWRWYWx1ZSh0YXJnZXQtPnZhbHVl
KCkpKQorICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgU3RyaW5nIGNhbmRpZGF0ZVN0
cmluZyA9IG1faW5wdXRFbGVtZW50LT5zYW5pdGl6ZVZhbHVlKHRhcmdldC0+dmFsdWUoKSk7Cisg
ICAgICAgICBpZiAoIWNhbmRpZGF0ZVN0cmluZy5maW5kSWdub3JpbmdDYXNlKHByZWZpeCkgJiYg
Y2FuZGlkYXRlU3RyaW5nLmxlbmd0aCgpIDw9ICh1bnNpZ25lZCkgbV9pbnB1dEVsZW1lbnQtPm1h
eExlbmd0aCgpKQorICAgICAgICAgICAgIG1fc3VnZ2VzdGlvbnMuYXBwZW5kKGNhbmRpZGF0ZVN0
cmluZyk7CisgICAgIH0KK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6aW5zZXJ0U3Vn
Z2VzdGlvbnNUb0Ryb3Bkb3duQm94KCkKK3sKKyAgICAvLyBJbiBjYXNlIHNvbWVvbmUgaXMgY2Fs
bGluZyB0aGlzIGZ1bmN0aW9uIHdpdGhvdXQgc3VjY2Vzc2Z1bGx5IGJ1aWxkaW5nIHRoZSBkcm9w
ZG93bkJveCB0cmVlCisgICAgQVNTRVJUKG1fZHJvcGRvd25Cb3gpOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9kcm9wZG93bkJveC0+ZG9jdW1lbnQoKTsKKworICAgIC8vIENsZWFyIHRo
ZSBkcm9wZG93biBib3gncyBwcmV2aW91cyB2YWx1ZXMKKyAgICBtX2Ryb3Bkb3duQm94LT5yZW1v
dmVDaGlsZHJlbigpOworCisgICAgaW50IHByZWZpeEluZGV4ID0gbV9pbnB1dEVsZW1lbnQtPmlu
bmVyVGV4dFZhbHVlKCkubGVuZ3RoKCk7CisKKyAgICB1bnNpZ25lZCB0b3RhbCA9IG1fc3VnZ2Vz
dGlvbnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbDsgKytpKSB7
CisgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gc3VnZ2VzdGlvbkl0ZW0gPSBTdWdnZXN0aW9u
Qm94RWxlbWVudDo6Y3JlYXRlKHRoaXMsIG1fc3VnZ2VzdGlvbnNbaV0sIGRvY3VtZW50KTsKKyAg
ICAgICAgaWYgKGkgPCB0b3RhbCAtIDEpCisgICAgICAgICAgICBzdWdnZXN0aW9uSXRlbS0+c2V0
UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94LWl0ZW0iKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPnNldFBzZXVkbygiLXdlYmtpdC1zdWdn
ZXN0aW9uLWRyb3Bkb3duLWJveC1pdGVtLWxhc3QiKTsKKworICAgICAgICAvLyBBcHBlbmQgdGhl
IHBhcnQgd2hlcmUgaXQgcHJlZml4IG1hdGNoZWQKKyAgICAgICAgUmVmUHRyPEhUTUxTcGFuRWxl
bWVudD4gcHJlZml4RWxlbWVudCA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6
c3BhblRhZywgZG9jdW1lbnQpOworICAgICAgICBwcmVmaXhFbGVtZW50LT5hcHBlbmRDaGlsZChU
ZXh0OjpjcmVhdGUoZG9jdW1lbnQsIG1fc3VnZ2VzdGlvbnNbaV0uc3Vic3RyaW5nKDAsIHByZWZp
eEluZGV4KSkpOworICAgICAgICBwcmVmaXhFbGVtZW50LT5zZXRQc2V1ZG8oIi13ZWJraXQtc3Vn
Z2VzdGlvbi1wcmVmaXgtdGV4dCIpOworICAgICAgICBzdWdnZXN0aW9uSXRlbS0+YXBwZW5kQ2hp
bGQocHJlZml4RWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAg
ICAgIC8vIEFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgdGV4dCBpbiB0aGUgc3VnZ2VzdGlvbiBpdGVt
CisgICAgICAgIHN1Z2dlc3Rpb25JdGVtLT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1l
bnQsIG1fc3VnZ2VzdGlvbnNbaV0uc3Vic3RyaW5nKHByZWZpeEluZGV4KSksIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgICAgICBtX2Ryb3Bkb3duQm94LT5hcHBlbmRDaGlsZChzdWdnZXN0aW9u
SXRlbS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgYWRqdXN0RHJvcGRvd25Cb3hQb3NpdGlvbihjb25zdCBMYXlvdXRSZWN0JiBob3N0UmVj
dCwgSFRNTEVsZW1lbnQqIGRyb3Bkb3duQm94KQoreworICAgIC8vIEZJWE1FOiByZXZlcnNlIHBv
c2l0aW9uaW5nIGFuZCBzY3JvbGwKKyAgICBBU1NFUlQoZHJvcGRvd25Cb3gpOworICAgIGlmICho
b3N0UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgaG9zdFggPSBo
b3N0UmVjdC54KCk7CisgICAgZG91YmxlIGhvc3RZID0gaG9zdFJlY3QueSgpOworICAgIGlmIChS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZHJvcGRvd25Cb3gtPnJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgaWYgKFJlbmRlckJveCogY29udGFpbmVyID0gcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygp
KSB7CisgICAgICAgICAgICBGbG9hdFBvaW50IGNvbnRhaW5lckxvY2F0aW9uID0gY29udGFpbmVy
LT5sb2NhbFRvQWJzb2x1dGUoKTsKKyAgICAgICAgICAgIGhvc3RYIC09IGNvbnRhaW5lckxvY2F0
aW9uLngoKSArIGNvbnRhaW5lci0+Ym9yZGVyTGVmdCgpOworICAgICAgICAgICAgaG9zdFkgLT0g
Y29udGFpbmVyTG9jYXRpb24ueSgpICsgY29udGFpbmVyLT5ib3JkZXJUb3AoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGRyb3Bkb3duQm94LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VG9wLCBob3N0WSArIGhvc3RSZWN0LmhlaWdodCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKKyAgICAvLyBUaGUgJ2xlZnQnIHZhbHVlIG9mIDo6LXdlYmtpdC12YWxpZGF0aW9u
LWJ1YmJsZS1hcnJvdy4KKyAgICBjb25zdCBpbnQgYnViYmxlQXJyb3dUb3BPZmZzZXQgPSAzMjsK
KyAgICBkb3VibGUgYnViYmxlWCA9IGhvc3RYOworICAgIGlmIChob3N0UmVjdC53aWR0aCgpIC8g
MiA8IGJ1YmJsZUFycm93VG9wT2Zmc2V0KQorICAgICAgICBidWJibGVYID0gbWF4KGhvc3RYICsg
aG9zdFJlY3Qud2lkdGgoKSAvIDIgLSBidWJibGVBcnJvd1RvcE9mZnNldCwgMC4wKTsKKyAgICBk
cm9wZG93bkJveC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIGJ1YmJs
ZVgsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hI
YW5kbGVyOjpidWlsZERyb3Bkb3duQm94VHJlZSgpCit7CisgICAgU2hhZG93Um9vdCogc2hhZG93
Um9vdCA9IG1faW5wdXRFbGVtZW50LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisKKyAg
ICAvLyBSZXR1cm4gaWYgc2hhZG93Um9vdCBpcyBudWxsCisgICAgaWYgKCFzaGFkb3dSb290KQor
ICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2lucHV0RWxlbWVu
dC0+ZG9jdW1lbnQoKTsKKyAgICBtX2Ryb3Bkb3duQm94ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7CisgICAgbV9kcm9wZG93bkJveC0+c2V0UHNldWRvKCItd2Via2l0LXN1Z2dl
c3Rpb24tZHJvcGRvd24tYm94Iik7CisgICAgLy8gTmVlZCB0byBmb3JjZSBwb3NpdGlvbjphYnNv
bHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3QgYXNzdW1lIGl0CisgICAgLy8gY29u
dGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5kZXJlcnMgYXMgY2hpbGRyZW4uCisg
ICAgbV9kcm9wZG93bkJveC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVBvc2l0
aW9uLCBDU1NWYWx1ZUFic29sdXRlKTsKKworICAgIC8vIE1pbnVzIDIgcGl4ZWxzIGJlY2F1c2Ug
b2YgdGhlIDFweCBib3JkZXJzIG9uIHRoZSBzdWdnZXN0aW9uIGJveC4KKyAgICBtX2Ryb3Bkb3du
Qm94LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmluZzo6bnVt
YmVyKG1faW5wdXRFbGVtZW50LT5ib3VuZGluZ0JveCgpLndpZHRoKCkucmF3VmFsdWUoKSAtIDIp
ICsgInB4IiwgZmFsc2UpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNoYWRvd1Jv
b3QtPmFwcGVuZENoaWxkKG1fZHJvcGRvd25Cb3guZ2V0KCksIGVjKTsKKyAgICBBU1NFUlQoIWVj
KTsKKyAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CisgICAgYWRqdXN0RHJvcGRvd25Cb3hQ
b3NpdGlvbihtX2lucHV0RWxlbWVudC0+Ym91bmRpbmdCb3goKSwgbV9kcm9wZG93bkJveC5nZXQo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5YjQ2OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0
aW9uQm94SGFuZGxlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN1
Z2dlc3Rpb25Cb3hIYW5kbGVyX2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkJveEhhbmRsZXJfaAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBIVE1MRWxlbWVudDsKKworY2xhc3MgU3VnZ2Vz
dGlvbkJveEhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN1Z2dlc3Rpb25Cb3hI
YW5kbGVyKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxTdWdnZXN0aW9uQm94SGFu
ZGxlcj4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB+U3VnZ2VzdGlvbkJveEhhbmRs
ZXIoKTsKKyAgICB2b2lkIHNldElucHV0RWxlbWVudEFuZFVwZGF0ZURpc3BsYXkoSFRNTElucHV0
RWxlbWVudCosIGJvb2wgYWxsb3dFbXB0eVByZWZpeCA9IGZhbHNlKTsKKyAgICB2b2lkIGNoYW5n
ZUlucHV0RWxlbWVudElubmVyVGV4dFZhbHVlKFN0cmluZyYgdGV4dCk7CisgICAgdm9pZCBzaG93
RHJvcGRvd25Cb3goYm9vbCk7CisgICAgdm9pZCBoaWRlRHJvcGRvd25Cb3goKTsKKyAgICBIVE1M
SW5wdXRFbGVtZW50KiBmb2N1c2VkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFbGVt
ZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU3VnZ2VzdGlvbkJveEhhbmRsZXIoSFRNTElu
cHV0RWxlbWVudCopOworICAgIHZvaWQgaW5zZXJ0U3VnZ2VzdGlvbnNUb0Ryb3Bkb3duQm94KCk7
CisgICAgdm9pZCBidWlsZERyb3Bkb3duQm94VHJlZSgpOworICAgIHZvaWQgcGFyc2VTdWdnZXN0
aW9ucyhib29sKTsKKworICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX2lucHV0RWxlbWVu
dDsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fZHJvcGRvd25Cb3g7CisgICAgVmVjdG9yPFN0
cmluZz4gbV9zdWdnZXN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCmluZGV4IDU5ZDFmYTcu
LjUyOTc1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0lucHV0SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlNl
bGVjdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKICNpbmNsdWRlICJT
cGVsbGluZ0hhbmRsZXIuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFuZGxlci5oIgogI2lu
Y2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC04NzEsNiArODcyLDkgQEAgdm9pZCBJbnB1
dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZvY3VzZWQoYm9vbCByZWZvY3VzT2NjdXJpbmcpCiAKICAg
ICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+aW5wdXRGb2N1c0xvc3QoKTsKIAorICAgICAgICAv
LyBIaWRlIHRoZSBzdWdnZXN0aW9uIGJveCBpZiBpdCBpcyB2aXNpYmxlLgorICAgICAgICBoaWRl
VGV4dElucHV0VHlwZVN1Z2dlc3Rpb25Cb3goKTsKKwogICAgICAgICAvLyBSZXBhaW50IHRoZSBl
bGVtZW50IGFic2VudCBvZiB0aGUgY2FyZXQuCiAgICAgICAgIGlmIChtX2N1cnJlbnRGb2N1c0Vs
ZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPnJl
bmRlcmVyKCktPnJlcGFpbnQoKTsKQEAgLTEwODMsNiArMTA4Nyw5IEBAIHZvaWQgSW5wdXRIYW5k
bGVyOjpzZXRFbGVtZW50Rm9jdXNlZChFbGVtZW50KiBlbGVtZW50KQogCiAgICAgaGFuZGxlSW5w
dXRMb2NhbGVDaGFuZ2VkKG1fd2ViUGFnZS0+bV93ZWJTZXR0aW5ncy0+aXNXcml0aW5nRGlyZWN0
aW9uUlRMKCkpOwogCisgICAgLy8gdXBkYXRlIHRoZSBzdWdnZXN0aW9uIGJveAorICAgIHNob3dU
ZXh0SW5wdXRUeXBlU3VnZ2VzdGlvbkJveCgpOworCiAgICAgaWYgKCFtX2RlbGF5S2V5Ym9hcmRW
aXNpYmlsaXR5Q2hhbmdlKQogICAgICAgICBub3RpZnlDbGllbnRPZktleWJvYXJkVmlzaWJpbGl0
eUNoYW5nZSh0cnVlLCB0cnVlIC8qIHRyaWdnZXJlZEJ5Rm9jdXNDaGFuZ2UgKi8pOwogCkBAIC0x
NzI4LDYgKzE3MzUsMTAgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkSW5wdXQo
Y29uc3QgUGxhdGZvcm06OktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXYKICAgICAgICAgaWYgKCFj
aGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uICYmIHR5cGUgPT0gUGxhdGZvcm06OktleWJvYXJkRXZl
bnQ6OktleVVwKQogICAgICAgICAgICAgZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUoRWRn
ZUlmTmVlZGVkKTsKICAgICB9CisKKyAgICBpZiAobV9jdXJyZW50Rm9jdXNFbGVtZW50ICYmIGtl
eWJvYXJkRXZlbnRIYW5kbGVkKQorICAgICAgICBzaG93VGV4dElucHV0VHlwZVN1Z2dlc3Rpb25C
b3goKTsKKwogICAgIHJldHVybiBrZXlib2FyZEV2ZW50SGFuZGxlZDsKIH0KIApAQCAtMjU0Miw1
ICsyNTUzLDM4IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpyZXN0b3JlVmlld1N0YXRlKCkKICAgICBm
b2N1c2VkTm9kZUNoYW5nZWQoKTsKIH0KIAordm9pZCBJbnB1dEhhbmRsZXI6OnNob3dUZXh0SW5w
dXRUeXBlU3VnZ2VzdGlvbkJveChib29sIGFsbG93RW1wdHlQcmVmaXgpCit7CisgICAgSFRNTElu
cHV0RWxlbWVudCogZm9jdXNlZElucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihtX2N1cnJlbnRGb2N1c0VsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpOworICAgIGlm
ICghZm9jdXNlZElucHV0RWxlbWVudCB8fCAhZm9jdXNlZElucHV0RWxlbWVudC0+aXNUZXh0Rmll
bGQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFmb2N1c2VkSW5wdXRFbGVtZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc3VnZ2VzdGlvbkRyb3Bkb3duQm94SGFuZGxl
cikKKyAgICAgICAgbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyID0gU3VnZ2VzdGlvbkJv
eEhhbmRsZXI6OmNyZWF0ZShmb2N1c2VkSW5wdXRFbGVtZW50KTsKKworICAgIC8vIElmIHRoZSBm
b2N1c2VkIGlucHV0IGVsZW1lbnQgaXNuJ3QgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbnNpZGUgdGhl
IGhhbmRsZXIsIHJlc2V0IGFuZCBkaXNwbGF5LgorICAgIC8vIElmIHRoZSBmb2N1c2VkIGVsZW1l
bnQgaXMgdGhlIHNhbWUsIGRpc3BsYXkgdGhlIHN1Z2dlc3Rpb25zLgorICAgIGlmICgobV9zdWdn
ZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyLT5mb2N1c2VkRWxlbWVudCgpKSAmJiBtX3N1Z2dlc3Rp
b25Ecm9wZG93bkJveEhhbmRsZXItPmZvY3VzZWRFbGVtZW50KCkgIT0gZm9jdXNlZElucHV0RWxl
bWVudCkKKyAgICAgICAgbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyLT5zZXRJbnB1dEVs
ZW1lbnRBbmRVcGRhdGVEaXNwbGF5KGZvY3VzZWRJbnB1dEVsZW1lbnQpOworICAgIGVsc2UKKyAg
ICAgICAgbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyLT5zaG93RHJvcGRvd25Cb3goYWxs
b3dFbXB0eVByZWZpeCk7Cit9CisKK3ZvaWQgSW5wdXRIYW5kbGVyOjpoaWRlVGV4dElucHV0VHlw
ZVN1Z2dlc3Rpb25Cb3goKQoreworICAgIGlmIChtX3N1Z2dlc3Rpb25Ecm9wZG93bkJveEhhbmRs
ZXIpCisgICAgICAgIG1fc3VnZ2VzdGlvbkRyb3Bkb3duQm94SGFuZGxlci0+aGlkZURyb3Bkb3du
Qm94KCk7Cit9CisKK3ZvaWQgSW5wdXRIYW5kbGVyOjplbGVtZW50VG91Y2hlZChXZWJDb3JlOjpF
bGVtZW50KiBub25TaGFkb3dFbGVtZW50VW5kZXJGYXRGaW5nZXIpCit7CisgICAgLy8gQXR0ZW1w
dCB0byBzaG93IGFsbCBzdWdnZXN0aW9ucyB3aGVuIHRoZSBpbnB1dCBmaWVsZCBpcyBlbXB0eSBh
bmQgYSB0YXAgaXMgcmVnaXN0ZXJlZCB3aGVuIHRoZSBlbGVtZW50IGlzIGZvY3VzZWQuCisgICAg
aWYgKGlzQWN0aXZlVGV4dEVkaXQoKSAmJiBub25TaGFkb3dFbGVtZW50VW5kZXJGYXRGaW5nZXIg
PT0gbV9jdXJyZW50Rm9jdXNFbGVtZW50KQorICAgICAgICBzaG93VGV4dElucHV0VHlwZVN1Z2dl
c3Rpb25Cb3godHJ1ZSAvKiBhbGxvd0VtcHR5UHJlZml4ICovKTsKK30KKwogfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIu
aAppbmRleCA0NjFkNDg4Li40NWJkNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuaApAQCAtNTAsNiArNTAsNyBAQCBj
bGFzcyBTcGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFz
cyBWaXNpYmxlUG9zaXRpb247CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOworY2xhc3MgU3VnZ2Vz
dGlvbkJveEhhbmRsZXI7CiB9CiAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKQEAgLTE1OCw2ICsx
NTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWxsUmVxdWVzdENoZWNraW5nRm9yKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q+KTsKICAgICB2b2lkIHNldFN5c3RlbVNwZWxs
Q2hlY2tTdGF0dXMoYm9vbCBlbmFibGVkKSB7IG1fc3BlbGxDaGVja1N0YXR1c0NvbmZpcm1lZCA9
IHRydWU7IG1fZ2xvYmFsU3BlbGxDaGVja1N0YXR1cyA9IGVuYWJsZWQ7IH0KIAorICAgIHZvaWQg
ZWxlbWVudFRvdWNoZWQoV2ViQ29yZTo6RWxlbWVudCopOwogICAgIHZvaWQgcmVzdG9yZVZpZXdT
dGF0ZSgpOwogCiBwcml2YXRlOgpAQCAtMjIzLDYgKzIyNSw5IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIHNob3VsZE5vdGlmeVdlYlZpZXcoY29uc3QgUGxhdGZvcm06OktleWJvYXJkRXZlbnQmKTsK
IAorICAgIHZvaWQgc2hvd1RleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KGJvb2wgYWxsb3dFbXB0
eVByZWZpeCA9IGZhbHNlKTsKKyAgICB2b2lkIGhpZGVUZXh0SW5wdXRUeXBlU3VnZ2VzdGlvbkJv
eCgpOworCiAgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKIAogICAgIFJlZlB0cjxXZWJD
b3JlOjpFbGVtZW50PiBtX2N1cnJlbnRGb2N1c0VsZW1lbnQ7CkBAIC0yNTcsNiArMjYyLDggQEAg
cHJpdmF0ZToKICAgICBib29sIG1fc3BlbGxDaGVja1N0YXR1c0NvbmZpcm1lZDsKICAgICBib29s
IG1fZ2xvYmFsU3BlbGxDaGVja1N0YXR1czsKIAorICAgIE93blB0cjxXZWJDb3JlOjpTdWdnZXN0
aW9uQm94SGFuZGxlcj4gbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyOworCiAgICAgRElT
QUJMRV9DT1BZKElucHV0SGFuZGxlcik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFuZGxlci5jcHAKaW5k
ZXggMzUyMjgyOS4uNDkyYWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1RvdWNoRXZlbnRIYW5kbGVyLmNwcApAQCAtMTE3LDYg
KzExNyw4IEBAIHZvaWQgVG91Y2hFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoUG9pbnQoY29uc3Qg
UGxhdGZvcm06OlRvdWNoUG9pbnQmIHBvaW50LCB1bnNpCiAgICAgICAgICAgICAgICAgbV9zaG91
bGRSZXF1ZXN0U3BlbGxDaGVja09wdGlvbnMgPSBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5z
aG91bGRSZXF1ZXN0U3BlbGxDaGVja2luZ09wdGlvbnNGb3JQb2ludChtX2xhc3RGYXRGaW5nZXJz
UmVzdWx0LmFkanVzdGVkUG9zaXRpb24oKSwgZWxlbWVudFVuZGVyRmF0RmluZ2VyLCBtX3NwZWxs
Q2hlY2tPcHRpb25SZXF1ZXN0KTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgbV93ZWJQ
YWdlLT5tX2lucHV0SGFuZGxlci0+ZWxlbWVudFRvdWNoZWQobGFzdEZhdEZpbmdlcnNSZXN1bHQo
KS5ub2RlQXNFbGVtZW50SWZBcHBsaWNhYmxlKEZhdEZpbmdlcnNSZXN1bHQ6OlNoYWRvd0NvbnRl
bnROb3RBbGxvd2VkKSk7CisKICAgICAgICAgICAgIGhhbmRsZUZhdEZpbmdlclByZXNzZWQoc2hp
ZnRBY3RpdmUsIGFsdEFjdGl2ZSwgY3RybEFjdGl2ZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQo=
</data>
<flag name="review"
          id="210604"
          type_id="1"
          status="-"
          setter="cgarcia"
    />
    <flag name="commit-queue"
          id="210605"
          type_id="3"
          status="-"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190070</attachid>
            <date>2013-02-25 09:03:40 -0800</date>
            <delta_ts>2013-02-26 06:43:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>suggestionbox.diff</filename>
            <type>text/plain</type>
            <size>29155</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlM2ZmZGI3Li4zYjc5OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MvdGhlbWVC
bGFja0JlcnJ5LmNzczoKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRv
d24tYm94KToKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94
LWl0ZW0pOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCk6
CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLWRyb3Bkb3duLWJveC1pdGVtLWxh
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQmxhY2tCZXJyeTo6c3VwcG9ydHNE
YXRhTGlzdFVJKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5Lmg6CisgICAgICAgIChSZW5kZXJUaGVtZUJsYWNr
QmVycnkpOgorCiAyMDEzLTAyLTI1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZWR1Y2UgYW1vdW50IG9mIGNvZGUgdGhhdCBpbmNsdWRlcyBTdHlsZVByb3Bl
cnR5U2V0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUJsYWNrQmVycnku
Y3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKaW5kZXggMmZjYWRj
MC4uOGNlNjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJy
eS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MKQEAgLTYy
LDYgKzYyLDQ5IEBAIHNlbGVjdFtzaXplPSIxIl0gewogICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7
CiB9CiAKKworLyogU3VnZ2VzdGlvbiBCb3ggKi8KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlv
bi1kcm9wZG93bi1ib3ggeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB6LWluZGV4OiAy
MTQ3NDgzNjQ3OworICAgIG9wYWNpdHk6IDAuOTg7CisgICAgbWF4LWhlaWdodDogMjAwcHg7Cisg
ICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjZTBlMGUwOworICAgIGJvcmRlci10b3A6IG5vbmU7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogI2ZjZmNmYzsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDBweCA1cHggNXB4
IC0ycHggIzYwNjA2MCBpbnNldDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAwcHggOHB4
IC01cHggI0FFQUVBRTsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1kcm9wZG93bi1i
b3gtaXRlbSB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDEwMCU7CisgICAgcGFk
ZGluZzogMTBweCA1cHg7CisgICAgY29sb3I6ICMzNjM2MzY7CisgICAgdGV4dC1kZWNvcmF0aW9u
OiBub25lOworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4OworICAgIHRleHQt
b3ZlcmZsb3c6IC1ibGFja2JlcnJ5LWZhZGU7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKwor
aW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCB7CisgICAgZm9udC13ZWlnaHQ6
IGJvbGQ7Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94LWl0ZW0t
bGFzdCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDEwMCU7CisgICAgcGFkZGlu
ZzogMTBweCA1cHg7CisgICAgY29sb3I6ICMzNjM2MzY7CisgICAgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOworICAgIHRleHQtb3ZlcmZsb3c6IC1ibGFja2JlcnJ5LWZhZGU7CisgICAgb3ZlcmZsb3c6
IGhpZGRlbjsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCiBpbnB1dFt0eXBlPSJkYXRl
Il0sIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0s
IGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7CiAgICAgZm9udC1mYW1p
bHk6ICJTbGF0ZSBQcm8iOwogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVt
ZUJsYWNrQmVycnkuY3BwCmluZGV4IGM3NTI1ZGIuLjIzOWQ2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tC
ZXJyeS5jcHAKQEAgLTEyNjcsNCArMTI2NywxMCBAQCBDb2xvciBSZW5kZXJUaGVtZUJsYWNrQmVy
cnk6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAogICAg
IHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8vIFllbGxvdy4KIH0KIAorYm9vbCBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUpIGNvbnN0Cit7CisgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBpbnB1dCB0eXBlcyBpbiB0
aGUgZnV0dXJlLgorICAgIHJldHVybiB0eXBlID09IElucHV0VHlwZU5hbWVzOjp0ZXh0KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5oCmluZGV4IDFlZWI1
NWIuLmJkYTYyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtOTYsNiArOTYsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRD
b2xvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFy
Y2hIaWdobGlnaHRDb2xvcigpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0
YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3QgU3RyaW5nJiBkZWZhdWx0R1VJRm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0ZDQ2ZWEu
LjkyNzMwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDItMjUgIEFsYmVydG8g
R2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0
cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2U6CisKIDIwMTMt
MDItMjIgIEFhcm9uIENvbHdlbGwgIDxhY29sd2VsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RGlzYWJsZSBNZWRpYVNvdXJjZSBvbiBBcHBsZSBXaW5kb3dzIHBvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYWY4ZDE0MS4uMTFmOWQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTExOCw2ICsxMTgsOCBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGFnZVBvcHVw
QmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L05hdmlnYXRvckNv
bnRlbnRVdGlsc0NsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKKyAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmNwcAorICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
U3VnZ2VzdGlvbkJveEVsZW1lbnQuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9W
aWJyYXRpb25DbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nv
bG9yUGlja2VyQ2xpZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNGIz
NTQxMS4uOTJmMmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDUgQEAKKzIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94RWxlbWVudDo6U3VnZ2VzdGlvbkJv
eEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEVsZW1lbnQ6On5TdWdn
ZXN0aW9uQm94RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94RWxlbWVu
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94
RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3VnZ2VzdGlv
bkJveEVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5k
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
Z2dlc3Rpb25Cb3hIYW5kbGVyOjpTdWdnZXN0aW9uQm94SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6flN1Z2dlc3Rpb25Cb3hIYW5kbGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNldElucHV0RWxlbWVudEFuZFVwZGF0ZURpc3Bs
YXkpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNob3dEcm9wZG93
bkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6aGlkZURyb3Bk
b3duQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjaGFuZ2VJ
bnB1dEVsZW1lbnRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9u
Qm94SGFuZGxlcjo6cGFyc2VTdWdnZXN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0
aW9uQm94SGFuZGxlcjo6aW5zZXJ0U3VnZ2VzdGlvbnNUb0Ryb3Bkb3duQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OmFkanVzdERyb3Bkb3duQm94UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmJ1aWxkRHJvcGRvd25Cb3hUcmVlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoU3VnZ2VzdGlvbkJveEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6dXBkYXRlRm9ybVN0YXRlKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bnB1dEhhbmRsZXIpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpUb3VjaEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hQb2ludCk6CisKIDIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWxiZ2FyY2lh
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIENocm9tZUNsaWVudEJsYWNrQmVycnk6
IGZpeCB2YXJpYWJsZSBuYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUzZjIxMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxl
bWVudC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25Cb3hFbGVt
ZW50LmgiCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFuZGxlci5oIgor
I2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdWdnZXN0
aW9uQm94RWxlbWVudDo6U3VnZ2VzdGlvbkJveEVsZW1lbnQoU3VnZ2VzdGlvbkJveEhhbmRsZXIq
IGVsZW1lbnQsIFN0cmluZyYgdmFsdWUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KG5hbWUsIGRvY3VtZW50KQorICAg
ICwgbV9zdWdnZXN0aW9uQm94KGVsZW1lbnQpCisgICAgLCBtX3ZhbHVlKHZhbHVlKQoreworfQor
CitTdWdnZXN0aW9uQm94RWxlbWVudDo6flN1Z2dlc3Rpb25Cb3hFbGVtZW50KCkKK3sKK30KKwor
UGFzc1JlZlB0cjxTdWdnZXN0aW9uQm94RWxlbWVudD4gU3VnZ2VzdGlvbkJveEVsZW1lbnQ6OmNy
ZWF0ZShTdWdnZXN0aW9uQm94SGFuZGxlciogZWxlbWVudCwgU3RyaW5nJiB2YWx1ZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3VnZ2VzdGlvbkJveEVs
ZW1lbnQoZWxlbWVudCwgdmFsdWUsIEhUTUxOYW1lczo6ZGl2VGFnLCBkb2N1bWVudCkpOworfQor
Cit2b2lkIFN1Z2dlc3Rpb25Cb3hFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CisgICAgICAgIC8vIENh
cHR1cmUgYSBtb3VzZSBkb3duIGV2ZW50IHdpdGggbGVmdCBjbGljayBhbmQgc2V0IHRoZSBwYXJl
bnQgaW5wdXQgZWxlbWVudCB0byB0aGUgbm9kZSdzIHRleHQKKyAgICAgICAgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmIHN0YXRpY19jYXN0PE1vdXNl
RXZlbnQqPihldmVudCktPmJ1dHRvbigpICE9IFJpZ2h0QnV0dG9uICYmIGRvY3VtZW50KCktPmZy
YW1lKCkpIHsKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlvbkJveC0+Y2hhbmdlSW5wdXRFbGVtZW50
SW5uZXJUZXh0VmFsdWUobV92YWx1ZSk7CisgICAgICAgICAgICBtX3N1Z2dlc3Rpb25Cb3gtPmhp
ZGVEcm9wZG93bkJveCgpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8qIG5hbWVzcGFjZSBX
ZWJDb3JlICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI1ZWRmMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQuaApAQCAtMCww
ICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisjaWZuZGVm
IFN1Z2dlc3Rpb25Cb3hFbGVtZW50X2gKKyNkZWZpbmUgU3VnZ2VzdGlvbkJveEVsZW1lbnRfaAor
CisjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTdWdnZXN0aW9uQm94SGFuZGxlcjsKK2NsYXNzIEV2ZW50OworCitjbGFzcyBTdWdnZXN0
aW9uQm94RWxlbWVudCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3VnZ2VzdGlvbkJveEVsZW1lbnQ+IGNyZWF0ZShTdWdnZXN0aW9uQm94
SGFuZGxlciosIFN0cmluZyYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB+U3VnZ2VzdGlvbkJv
eEVsZW1lbnQoKTsKKworcHJpdmF0ZToKKyAgICBTdWdnZXN0aW9uQm94RWxlbWVudChTdWdnZXN0
aW9uQm94SGFuZGxlciosIFN0cmluZyYsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKworICAg
IFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKiBtX3N1Z2dlc3Rpb25Cb3g7CisgICAgU3RyaW5nIG1fdmFs
dWU7Cit9OworCit9IC8qIG5hbWVzcGFjZSBXZWJDb3JlICovCisjZW5kaWYgLyogU3VnZ2VzdGlv
bkJveEVsZW1lbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4ZjMwMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxl
ci5jcHAKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU3VnZ2VzdGlvbkJveEhhbmRsZXIuaCIKKworI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiRE9N
VG9rZW5MaXN0LmgiCisjaW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgor
I2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgorI2lu
Y2x1ZGUgIlN1Z2dlc3Rpb25Cb3hFbGVtZW50LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCisjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
CitTdWdnZXN0aW9uQm94SGFuZGxlcjo6U3VnZ2VzdGlvbkJveEhhbmRsZXIoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKKyAgICA6IG1faW5wdXRFbGVtZW50KGVsZW1lbnQpCit7Cit9CisKK1N1
Z2dlc3Rpb25Cb3hIYW5kbGVyOjp+U3VnZ2VzdGlvbkJveEhhbmRsZXIoKQoreworICAgIGhpZGVE
cm9wZG93bkJveCgpOworfQorCitQYXNzT3duUHRyPFN1Z2dlc3Rpb25Cb3hIYW5kbGVyPiBTdWdn
ZXN0aW9uQm94SGFuZGxlcjo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTdWdnZXN0aW9uQm94SGFuZGxlcihlbGVtZW50KSk7Cit9
CisKK3ZvaWQgU3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNldElucHV0RWxlbWVudEFuZFVwZGF0ZURp
c3BsYXkoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgYm9vbCBhbGxvd0VtcHR5UHJlZml4KQor
eworICAgIGhpZGVEcm9wZG93bkJveCgpOworICAgIG1faW5wdXRFbGVtZW50ID0gZWxlbWVudDsK
KyAgICBzaG93RHJvcGRvd25Cb3goYWxsb3dFbXB0eVByZWZpeCk7Cit9CisKK3ZvaWQgU3VnZ2Vz
dGlvbkJveEhhbmRsZXI6OnNob3dEcm9wZG93bkJveChib29sIGFsbG93RW1wdHlQcmVmaXgpCit7
CisgICAgLy8gQ2xlYXJpbmcgc3VnZ2VzdGlvbnMgYW5kIHBhcnNlIGFnYWluCisgICAgbV9zdWdn
ZXN0aW9ucy5jbGVhcigpOworICAgIHBhcnNlU3VnZ2VzdGlvbnMoYWxsb3dFbXB0eVByZWZpeCk7
CisKKyAgICAvLyBEb24ndCBib3RoZXIgYnVpbGRpbmcgdGhlIHRyZWUgaWYgc3VnZ2VzdGlvbiBz
aXplIGlzIDAuCisgICAgLy8gV2UgbmVlZCB0byBjYWxsIGluc2VydFN1Z2dlc3Rpb25zIHRvIGNs
ZWFyIHByZXZpb3VzIHN1Z2dlc3Rpb25zCisgICAgLy8gaW4gdGhlIERPTSBpZiBzdWdnZXN0aW9u
IHNpemUgaXMgMC4KKyAgICBpZiAoIW1fZHJvcGRvd25Cb3gpIHsKKyAgICAgICAgaWYgKCFtX3N1
Z2dlc3Rpb25zLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYnVpbGREcm9w
ZG93bkJveFRyZWUoKTsKKyAgICB9CisKKyAgICBpbnNlcnRTdWdnZXN0aW9uc1RvRHJvcGRvd25C
b3goKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6aGlkZURyb3Bkb3duQm94KCkK
K3sKKyAgICBpZiAobV9kcm9wZG93bkJveCkgeworICAgICAgICBpZiAoU2hhZG93Um9vdCogc2hh
ZG93Um9vdCA9IG1faW5wdXRFbGVtZW50LT51c2VyQWdlbnRTaGFkb3dSb290KCkpIHsKKyAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgICAgICBzaGFkb3dSb290LT5yZW1vdmVD
aGlsZChtX2Ryb3Bkb3duQm94LmdldCgpLCBlYyk7CisgICAgICAgIH0KKyAgICAgICAgbV9kcm9w
ZG93bkJveCA9IDA7CisgICAgfQorICAgIG1fc3VnZ2VzdGlvbnMuY2xlYXIoKTsKK30KKwordm9p
ZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6Y2hhbmdlSW5wdXRFbGVtZW50SW5uZXJUZXh0VmFsdWUo
U3RyaW5nJiB0ZXh0KQoreworICAgIG1faW5wdXRFbGVtZW50LT5zZXRJbm5lclRleHRWYWx1ZSh0
ZXh0KTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6cGFyc2VTdWdnZXN0aW9ucyhi
b29sIGFsbG93RW1wdHlQcmVmaXgpCit7CisgICAgLy8gUmV0dXJuIGlmIHRoaXMgaGFuZGxlciBk
b2Vzbid0IGhhdmUgYW4gaW5wdXQgZWxlbWVudCB0byBhdHRhY2ggdG8KKyAgICBpZiAoIW1faW5w
dXRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBMaXN0IGF0dHJpYnV0ZSBleGlz
dHMsIGNoZWNrIGlmIGRhdGFsaXN0IGV4aXN0cy4KKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBk
TGlzdCA9IG1faW5wdXRFbGVtZW50LT5kYXRhTGlzdCgpOworICAgIGlmICghZExpc3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9uc0xpc3QgPSBk
TGlzdC0+b3B0aW9ucygpOworICAgIFN0cmluZyBwcmVmaXggPSBtX2lucHV0RWxlbWVudC0+aW5u
ZXJUZXh0VmFsdWUoKTsKKworICAgIC8vIEV4aXQgaWY6CisgICAgLy8gMSkgSWYgbGVuZ3RoIG9m
IG5vZGVzIGluIGRhdGFsaXN0IGlzIGVtcHR5LCByZXR1cm4uCisgICAgLy8gMikgSWYgd2UgZG8g
bm90IGFsbG93IGVtcHR5IHByZWZpeGVzIGFuZCBwcmVmaXggaXMgbnVsbAorICAgIGlmICghb3B0
aW9uc0xpc3QtPmxlbmd0aCgpIHx8ICghYWxsb3dFbXB0eVByZWZpeCAmJiBwcmVmaXguaXNFbXB0
eSgpKSkgeworICAgICAgICBoaWRlRHJvcGRvd25Cb3goKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIFByZWZpeCBtYXRjaCB0aGUgaW5uZXIgdGV4dCB2YWx1ZSBvZiB0aGUgaW5w
dXQgYWdhaW5zdCB0aGUgY2FuZGlkYXRlIHN1Z2dlc3Rpb25zLgorICAgIC8vIE1ha2Ugc3VyZSB0
aGUgbGVuZ3RoIG9mIHRoZSBzdWdnZXN0aW9uIGlzIHNtYWxsZXIgdGhhbiBtYXggbGVuZ3RoCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9wdGlvbnNMaXN0LT5sZW5ndGgoKTsgaSsrKSB7
CisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiB0YXJnZXQgPSB0b0hUTUxPcHRpb25FbGVtZW50
KChvcHRpb25zTGlzdC0+aXRlbShpKSkpOworICAgICAgICBpZiAoIW1faW5wdXRFbGVtZW50LT5p
c1ZhbGlkVmFsdWUodGFyZ2V0LT52YWx1ZSgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBTdHJpbmcgY2FuZGlkYXRlU3RyaW5nID0gbV9pbnB1dEVsZW1lbnQtPnNhbml0aXplVmFs
dWUodGFyZ2V0LT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKCFjYW5kaWRhdGVTdHJpbmcuZmluZEln
bm9yaW5nQ2FzZShwcmVmaXgpICYmIGNhbmRpZGF0ZVN0cmluZy5sZW5ndGgoKSA8PSAodW5zaWdu
ZWQpIG1faW5wdXRFbGVtZW50LT5tYXhMZW5ndGgoKSkKKyAgICAgICAgICAgIG1fc3VnZ2VzdGlv
bnMuYXBwZW5kKGNhbmRpZGF0ZVN0cmluZyk7CisgICAgfQorfQorCit2b2lkIFN1Z2dlc3Rpb25C
b3hIYW5kbGVyOjppbnNlcnRTdWdnZXN0aW9uc1RvRHJvcGRvd25Cb3goKQoreworICAgIC8vIElu
IGNhc2Ugc29tZW9uZSBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBzdWNjZXNzZnVs
bHkgYnVpbGRpbmcgdGhlIGRyb3Bkb3duQm94IHRyZWUKKyAgICBBU1NFUlQobV9kcm9wZG93bkJv
eCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2Ryb3Bkb3duQm94LT5kb2N1bWVudCgp
OworCisgICAgLy8gQ2xlYXIgdGhlIGRyb3Bkb3duIGJveCdzIHByZXZpb3VzIHZhbHVlcworICAg
IG1fZHJvcGRvd25Cb3gtPnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICBpbnQgcHJlZml4SW5kZXgg
PSBtX2lucHV0RWxlbWVudC0+aW5uZXJUZXh0VmFsdWUoKS5sZW5ndGgoKTsKKworICAgIHVuc2ln
bmVkIHRvdGFsID0gbV9zdWdnZXN0aW9ucy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHRvdGFsOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBzdWdnZXN0
aW9uSXRlbSA9IFN1Z2dlc3Rpb25Cb3hFbGVtZW50OjpjcmVhdGUodGhpcywgbV9zdWdnZXN0aW9u
c1tpXSwgZG9jdW1lbnQpOworICAgICAgICBpZiAoaSA8IHRvdGFsIC0gMSkKKyAgICAgICAgICAg
IHN1Z2dlc3Rpb25JdGVtLT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1kcm9wZG93bi1i
b3gtaXRlbSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWdnZXN0aW9uSXRlbS0+c2V0
UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94LWl0ZW0tbGFzdCIpOworCisg
ICAgICAgIC8vIEFwcGVuZCB0aGUgcGFydCB3aGVyZSBpdCBwcmVmaXggbWF0Y2hlZAorICAgICAg
ICBSZWZQdHI8SFRNTFNwYW5FbGVtZW50PiBwcmVmaXhFbGVtZW50ID0gSFRNTFNwYW5FbGVtZW50
OjpjcmVhdGUoSFRNTE5hbWVzOjpzcGFuVGFnLCBkb2N1bWVudCk7CisgICAgICAgIHByZWZpeEVs
ZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgbV9zdWdnZXN0aW9uc1tp
XS5zdWJzdHJpbmcoMCwgcHJlZml4SW5kZXgpKSk7CisgICAgICAgIHByZWZpeEVsZW1lbnQtPnNl
dFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLXByZWZpeC10ZXh0Iik7CisgICAgICAgIHN1Z2dl
c3Rpb25JdGVtLT5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSByZXN0IG9mIHRoZSB0ZXh0IGlu
IHRoZSBzdWdnZXN0aW9uIGl0ZW0KKyAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPmFwcGVuZENoaWxk
KFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgbV9zdWdnZXN0aW9uc1tpXS5zdWJzdHJpbmcocHJlZml4
SW5kZXgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIG1fZHJvcGRvd25Cb3gtPmFw
cGVuZENoaWxkKHN1Z2dlc3Rpb25JdGVtLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhZGp1c3REcm9wZG93bkJveFBvc2l0aW9uKGNvbnN0
IExheW91dFJlY3QmIGhvc3RSZWN0LCBIVE1MRWxlbWVudCogZHJvcGRvd25Cb3gpCit7CisgICAg
Ly8gRklYTUU6IHJldmVyc2UgcG9zaXRpb25pbmcgYW5kIHNjcm9sbAorICAgIEFTU0VSVChkcm9w
ZG93bkJveCk7CisgICAgaWYgKGhvc3RSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGRvdWJsZSBob3N0WCA9IGhvc3RSZWN0LngoKTsKKyAgICBkb3VibGUgaG9zdFkgPSBob3N0
UmVjdC55KCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkcm9wZG93bkJveC0+
cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyQm94KiBjb250YWluZXIgPSByZW5kZXJl
ci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udGFpbmVy
TG9jYXRpb24gPSBjb250YWluZXItPmxvY2FsVG9BYnNvbHV0ZSgpOworICAgICAgICAgICAgaG9z
dFggLT0gY29udGFpbmVyTG9jYXRpb24ueCgpICsgY29udGFpbmVyLT5ib3JkZXJMZWZ0KCk7Cisg
ICAgICAgICAgICBob3N0WSAtPSBjb250YWluZXJMb2NhdGlvbi55KCkgKyBjb250YWluZXItPmJv
cmRlclRvcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgZHJvcGRvd25Cb3gtPnNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIGhvc3RZICsgaG9zdFJlY3QuaGVpZ2h0KCks
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIC8vIFRoZSAnbGVmdCcgdmFsdWUgb2Yg
Ojotd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWFycm93LgorICAgIGNvbnN0IGludCBidWJibGVB
cnJvd1RvcE9mZnNldCA9IDMyOworICAgIGRvdWJsZSBidWJibGVYID0gaG9zdFg7CisgICAgaWYg
KGhvc3RSZWN0LndpZHRoKCkgLyAyIDwgYnViYmxlQXJyb3dUb3BPZmZzZXQpCisgICAgICAgIGJ1
YmJsZVggPSBtYXgoaG9zdFggKyBob3N0UmVjdC53aWR0aCgpIC8gMiAtIGJ1YmJsZUFycm93VG9w
T2Zmc2V0LCAwLjApOworICAgIGRyb3Bkb3duQm94LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TGVmdCwgYnViYmxlWCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cit9CisK
K3ZvaWQgU3VnZ2VzdGlvbkJveEhhbmRsZXI6OmJ1aWxkRHJvcGRvd25Cb3hUcmVlKCkKK3sKKyAg
ICBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gbV9pbnB1dEVsZW1lbnQtPmVuc3VyZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKTsKKworICAgIC8vIFJldHVybiBpZiBzaGFkb3dSb290IGlzIG51bGwKKyAg
ICBpZiAoIXNoYWRvd1Jvb3QpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1faW5wdXRFbGVtZW50LT5kb2N1bWVudCgpOworICAgIG1fZHJvcGRvd25Cb3ggPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBtX2Ryb3Bkb3duQm94LT5zZXRQ
c2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1kcm9wZG93bi1ib3giKTsKKyAgICAvLyBOZWVkIHRv
IGZvcmNlIHBvc2l0aW9uOmFic29sdXRlIGJlY2F1c2UgUmVuZGVyTWVudUxpc3QgZG9lc24ndCBh
c3N1bWUgaXQKKyAgICAvLyBjb250YWlucyBub24tYWJzb2x1dGUgb3Igbm9uLWZpeGVkIHJlbmRl
cmVycyBhcyBjaGlsZHJlbi4KKyAgICBtX2Ryb3Bkb3duQm94LT5zZXRJbmxpbmVTdHlsZVByb3Bl
cnR5KENTU1Byb3BlcnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOworCisgICAgLy8gTWlu
dXMgMiBwaXhlbHMgYmVjYXVzZSBvZiB0aGUgMXB4IGJvcmRlcnMgb24gdGhlIHN1Z2dlc3Rpb24g
Ym94LgorICAgIG1fZHJvcGRvd25Cb3gtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXaWR0aCwgU3RyaW5nOjpudW1iZXIobV9pbnB1dEVsZW1lbnQtPmJvdW5kaW5nQm94KCkud2lk
dGgoKS5yYXdWYWx1ZSgpIC0gMikgKyAicHgiLCBmYWxzZSk7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9kcm9wZG93bkJveC5nZXQoKSwg
ZWMpOworICAgIEFTU0VSVCghZWMpOworICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKyAg
ICBhZGp1c3REcm9wZG93bkJveFBvc2l0aW9uKG1faW5wdXRFbGVtZW50LT5ib3VuZGluZ0JveCgp
LCBtX2Ryb3Bkb3duQm94LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rp
b25Cb3hIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
U3VnZ2VzdGlvbkJveEhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40MjliNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmgKQEAgLTAsMCArMSw2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgU3VnZ2VzdGlvbkJveEhhbmRsZXJfaAorI2RlZmluZSBTdWdnZXN0
aW9uQm94SGFuZGxlcl9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIEhUTUxFbGVt
ZW50OworCitjbGFzcyBTdWdnZXN0aW9uQm94SGFuZGxlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3VnZ2VzdGlvbkJveEhhbmRsZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPFN1Z2dlc3Rpb25Cb3hIYW5kbGVyPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworICAg
IH5TdWdnZXN0aW9uQm94SGFuZGxlcigpOworICAgIHZvaWQgc2V0SW5wdXRFbGVtZW50QW5kVXBk
YXRlRGlzcGxheShIVE1MSW5wdXRFbGVtZW50KiwgYm9vbCBhbGxvd0VtcHR5UHJlZml4ID0gZmFs
c2UpOworICAgIHZvaWQgY2hhbmdlSW5wdXRFbGVtZW50SW5uZXJUZXh0VmFsdWUoU3RyaW5nJiB0
ZXh0KTsKKyAgICB2b2lkIHNob3dEcm9wZG93bkJveChib29sKTsKKyAgICB2b2lkIGhpZGVEcm9w
ZG93bkJveCgpOworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9pbnB1dEVsZW1lbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBTdWdnZXN0
aW9uQm94SGFuZGxlcihIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgdm9pZCBpbnNlcnRTdWdnZXN0
aW9uc1RvRHJvcGRvd25Cb3goKTsKKyAgICB2b2lkIGJ1aWxkRHJvcGRvd25Cb3hUcmVlKCk7Cisg
ICAgdm9pZCBwYXJzZVN1Z2dlc3Rpb25zKGJvb2wpOworCisgICAgUmVmUHRyPEhUTUxJbnB1dEVs
ZW1lbnQ+IG1faW5wdXRFbGVtZW50OworICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9kcm9wZG93
bkJveDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3N1Z2dlc3Rpb25zOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU3VnZ2VzdGlvbkJveEhhbmRsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKaW5kZXggNTlkMWZhNy4uNTI5NzU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC01Nyw2ICs1
Nyw3IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIlNwZWxsQ2hl
Y2tlci5oIgogI2luY2x1ZGUgIlNwZWxsaW5nSGFuZGxlci5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rp
b25Cb3hIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKQEAgLTg3MSw2
ICs4NzIsOSBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZChib29sIHJl
Zm9jdXNPY2N1cmluZykKIAogICAgICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dEZvY3Vz
TG9zdCgpOwogCisgICAgICAgIC8vIEhpZGUgdGhlIHN1Z2dlc3Rpb24gYm94IGlmIGl0IGlzIHZp
c2libGUuCisgICAgICAgIGhpZGVUZXh0SW5wdXRUeXBlU3VnZ2VzdGlvbkJveCgpOworCiAgICAg
ICAgIC8vIFJlcGFpbnQgdGhlIGVsZW1lbnQgYWJzZW50IG9mIHRoZSBjYXJldC4KICAgICAgICAg
aWYgKG1fY3VycmVudEZvY3VzRWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIG1fY3Vy
cmVudEZvY3VzRWxlbWVudC0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwpAQCAtMTA4Myw2ICsxMDg3
LDkgQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkKEVsZW1lbnQqIGVsZW1l
bnQpCiAKICAgICBoYW5kbGVJbnB1dExvY2FsZUNoYW5nZWQobV93ZWJQYWdlLT5tX3dlYlNldHRp
bmdzLT5pc1dyaXRpbmdEaXJlY3Rpb25SVEwoKSk7CiAKKyAgICAvLyB1cGRhdGUgdGhlIHN1Z2dl
c3Rpb24gYm94CisgICAgc2hvd1RleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KCk7CisKICAgICBp
ZiAoIW1fZGVsYXlLZXlib2FyZFZpc2liaWxpdHlDaGFuZ2UpCiAgICAgICAgIG5vdGlmeUNsaWVu
dE9mS2V5Ym9hcmRWaXNpYmlsaXR5Q2hhbmdlKHRydWUsIHRydWUgLyogdHJpZ2dlcmVkQnlGb2N1
c0NoYW5nZSAqLyk7CiAKQEAgLTE3MjgsNiArMTczNSwxMCBAQCBib29sIElucHV0SGFuZGxlcjo6
aGFuZGxlS2V5Ym9hcmRJbnB1dChjb25zdCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCYga2V5Ym9h
cmRFdgogICAgICAgICBpZiAoIWNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gJiYgdHlwZSA9PSBQ
bGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5VXApCiAgICAgICAgICAgICBlbnN1cmVGb2N1c1Rl
eHRFbGVtZW50VmlzaWJsZShFZGdlSWZOZWVkZWQpOwogICAgIH0KKworICAgIGlmIChtX2N1cnJl
bnRGb2N1c0VsZW1lbnQgJiYga2V5Ym9hcmRFdmVudEhhbmRsZWQpCisgICAgICAgIHNob3dUZXh0
SW5wdXRUeXBlU3VnZ2VzdGlvbkJveCgpOworCiAgICAgcmV0dXJuIGtleWJvYXJkRXZlbnRIYW5k
bGVkOwogfQogCkBAIC0yNTQyLDUgKzI1NTMsMzggQEAgdm9pZCBJbnB1dEhhbmRsZXI6OnJlc3Rv
cmVWaWV3U3RhdGUoKQogICAgIGZvY3VzZWROb2RlQ2hhbmdlZCgpOwogfQogCit2b2lkIElucHV0
SGFuZGxlcjo6c2hvd1RleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KGJvb2wgYWxsb3dFbXB0eVBy
ZWZpeCkKK3sKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBmb2N1c2VkSW5wdXRFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fY3VycmVudEZvY3VzRWxlbWVudC0+dG9JbnB1
dEVsZW1lbnQoKSk7CisgICAgaWYgKCFmb2N1c2VkSW5wdXRFbGVtZW50IHx8ICFmb2N1c2VkSW5w
dXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWZv
Y3VzZWRJbnB1dEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9zdWdnZXN0
aW9uRHJvcGRvd25Cb3hIYW5kbGVyKQorICAgICAgICBtX3N1Z2dlc3Rpb25Ecm9wZG93bkJveEhh
bmRsZXIgPSBTdWdnZXN0aW9uQm94SGFuZGxlcjo6Y3JlYXRlKGZvY3VzZWRJbnB1dEVsZW1lbnQp
OworCisgICAgLy8gSWYgdGhlIGZvY3VzZWQgaW5wdXQgZWxlbWVudCBpc24ndCB0aGUgc2FtZSBh
cyB0aGUgb25lIGluc2lkZSB0aGUgaGFuZGxlciwgcmVzZXQgYW5kIGRpc3BsYXkuCisgICAgLy8g
SWYgdGhlIGZvY3VzZWQgZWxlbWVudCBpcyB0aGUgc2FtZSwgZGlzcGxheSB0aGUgc3VnZ2VzdGlv
bnMuCisgICAgaWYgKChtX3N1Z2dlc3Rpb25Ecm9wZG93bkJveEhhbmRsZXItPmZvY3VzZWRFbGVt
ZW50KCkpICYmIG1fc3VnZ2VzdGlvbkRyb3Bkb3duQm94SGFuZGxlci0+Zm9jdXNlZEVsZW1lbnQo
KSAhPSBmb2N1c2VkSW5wdXRFbGVtZW50KQorICAgICAgICBtX3N1Z2dlc3Rpb25Ecm9wZG93bkJv
eEhhbmRsZXItPnNldElucHV0RWxlbWVudEFuZFVwZGF0ZURpc3BsYXkoZm9jdXNlZElucHV0RWxl
bWVudCk7CisgICAgZWxzZQorICAgICAgICBtX3N1Z2dlc3Rpb25Ecm9wZG93bkJveEhhbmRsZXIt
PnNob3dEcm9wZG93bkJveChhbGxvd0VtcHR5UHJlZml4KTsKK30KKwordm9pZCBJbnB1dEhhbmRs
ZXI6OmhpZGVUZXh0SW5wdXRUeXBlU3VnZ2VzdGlvbkJveCgpCit7CisgICAgaWYgKG1fc3VnZ2Vz
dGlvbkRyb3Bkb3duQm94SGFuZGxlcikKKyAgICAgICAgbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hI
YW5kbGVyLT5oaWRlRHJvcGRvd25Cb3goKTsKK30KKwordm9pZCBJbnB1dEhhbmRsZXI6OmVsZW1l
bnRUb3VjaGVkKFdlYkNvcmU6OkVsZW1lbnQqIG5vblNoYWRvd0VsZW1lbnRVbmRlckZhdEZpbmdl
cikKK3sKKyAgICAvLyBBdHRlbXB0IHRvIHNob3cgYWxsIHN1Z2dlc3Rpb25zIHdoZW4gdGhlIGlu
cHV0IGZpZWxkIGlzIGVtcHR5IGFuZCBhIHRhcCBpcyByZWdpc3RlcmVkIHdoZW4gdGhlIGVsZW1l
bnQgaXMgZm9jdXNlZC4KKyAgICBpZiAoaXNBY3RpdmVUZXh0RWRpdCgpICYmIG5vblNoYWRvd0Vs
ZW1lbnRVbmRlckZhdEZpbmdlciA9PSBtX2N1cnJlbnRGb2N1c0VsZW1lbnQpCisgICAgICAgIHNo
b3dUZXh0SW5wdXRUeXBlU3VnZ2VzdGlvbkJveCh0cnVlIC8qIGFsbG93RW1wdHlQcmVmaXggKi8p
OworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9JbnB1dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0lucHV0SGFuZGxlci5oCmluZGV4IDQ2MWQ0ODguLjQ1YmQ1MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5o
CkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgVGV4dENo
ZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFZpc2libGVTZWxl
Y3Rpb247CitjbGFzcyBTdWdnZXN0aW9uQm94SGFuZGxlcjsKIH0KIAogbmFtZXNwYWNlIEJsYWNr
QmVycnkgewpAQCAtMTU4LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbGxSZXF1ZXN0
Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdD4pOwogICAg
IHZvaWQgc2V0U3lzdGVtU3BlbGxDaGVja1N0YXR1cyhib29sIGVuYWJsZWQpIHsgbV9zcGVsbENo
ZWNrU3RhdHVzQ29uZmlybWVkID0gdHJ1ZTsgbV9nbG9iYWxTcGVsbENoZWNrU3RhdHVzID0gZW5h
YmxlZDsgfQogCisgICAgdm9pZCBlbGVtZW50VG91Y2hlZChXZWJDb3JlOjpFbGVtZW50Kik7CiAg
ICAgdm9pZCByZXN0b3JlVmlld1N0YXRlKCk7CiAKIHByaXZhdGU6CkBAIC0yMjMsNiArMjI1LDkg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkTm90aWZ5V2ViVmlldyhjb25zdCBQbGF0Zm9y
bTo6S2V5Ym9hcmRFdmVudCYpOwogCisgICAgdm9pZCBzaG93VGV4dElucHV0VHlwZVN1Z2dlc3Rp
b25Cb3goYm9vbCBhbGxvd0VtcHR5UHJlZml4ID0gZmFsc2UpOworICAgIHZvaWQgaGlkZVRleHRJ
bnB1dFR5cGVTdWdnZXN0aW9uQm94KCk7CisKICAgICBXZWJQYWdlUHJpdmF0ZSogbV93ZWJQYWdl
OwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IG1fY3VycmVudEZvY3VzRWxlbWVudDsK
QEAgLTI1Nyw2ICsyNjIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zcGVsbENoZWNrU3RhdHVz
Q29uZmlybWVkOwogICAgIGJvb2wgbV9nbG9iYWxTcGVsbENoZWNrU3RhdHVzOwogCisgICAgT3du
UHRyPFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyPiBtX3N1Z2dlc3Rpb25Ecm9wZG93bkJv
eEhhbmRsZXI7CisKICAgICBESVNBQkxFX0NPUFkoSW5wdXRIYW5kbGVyKTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1RvdWNoRXZlbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1RvdWNo
RXZlbnRIYW5kbGVyLmNwcAppbmRleCAzNTIyODI5Li40OTJhYTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9Ub3VjaEV2ZW50SGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvVG91Y2hFdmVudEhh
bmRsZXIuY3BwCkBAIC0xMTcsNiArMTE3LDggQEAgdm9pZCBUb3VjaEV2ZW50SGFuZGxlcjo6aGFu
ZGxlVG91Y2hQb2ludChjb25zdCBQbGF0Zm9ybTo6VG91Y2hQb2ludCYgcG9pbnQsIHVuc2kKICAg
ICAgICAgICAgICAgICBtX3Nob3VsZFJlcXVlc3RTcGVsbENoZWNrT3B0aW9ucyA9IG1fd2ViUGFn
ZS0+bV9pbnB1dEhhbmRsZXItPnNob3VsZFJlcXVlc3RTcGVsbENoZWNraW5nT3B0aW9uc0ZvclBv
aW50KG1fbGFzdEZhdEZpbmdlcnNSZXN1bHQuYWRqdXN0ZWRQb3NpdGlvbigpLCBlbGVtZW50VW5k
ZXJGYXRGaW5nZXIsIG1fc3BlbGxDaGVja09wdGlvblJlcXVlc3QpOwogICAgICAgICAgICAgfQog
CisgICAgICAgICAgICBtX3dlYlBhZ2UtPm1faW5wdXRIYW5kbGVyLT5lbGVtZW50VG91Y2hlZChs
YXN0RmF0RmluZ2Vyc1Jlc3VsdCgpLm5vZGVBc0VsZW1lbnRJZkFwcGxpY2FibGUoRmF0RmluZ2Vy
c1Jlc3VsdDo6U2hhZG93Q29udGVudE5vdEFsbG93ZWQpKTsKKwogICAgICAgICAgICAgaGFuZGxl
RmF0RmluZ2VyUHJlc3NlZChzaGlmdEFjdGl2ZSwgYWx0QWN0aXZlLCBjdHJsQWN0aXZlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190272</attachid>
            <date>2013-02-26 06:43:08 -0800</date>
            <delta_ts>2013-02-26 08:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>suggestionbox.diff</filename>
            <type>text/plain</type>
            <size>29340</size>
            <attacher name="Alberto Garcia">berto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNGU1OTc3Li5mOGZiOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTMtMDItMjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3JpZ2luYWwgY29k
ZSBieSBPdHRvIERlcmVrIENoZXVuZyA8b3RjaGV1bmdAcmltLmNvbT4KKworICAgICAgICAqIGNz
cy90aGVtZUJsYWNrQmVycnkuY3NzOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlv
bi1kcm9wZG93bi1ib3gpOgorICAgICAgICAoaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1kcm9w
ZG93bi1ib3gtaXRlbSk6CisgICAgICAgIChpbnB1dDo6LXdlYmtpdC1zdWdnZXN0aW9uLXByZWZp
eC10ZXh0KToKKyAgICAgICAgKGlucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRvd24tYm94
LWl0ZW0tbGFzdCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJs
YWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVCbGFja0JlcnJ5Ojpz
dXBwb3J0c0RhdGFMaXN0VUkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaDoKKyAgICAgICAgKFJlbmRlclRo
ZW1lQmxhY2tCZXJyeSk6CisKIDIwMTMtMDItMjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ0MDQxLCBy
MTQ0MDQ0LCBhbmQgcjE0NDA0OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVt
ZUJsYWNrQmVycnkuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJyeS5jc3MK
aW5kZXggMmZjYWRjMC4uOGNlNjY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Ro
ZW1lQmxhY2tCZXJyeS5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQmxhY2tCZXJy
eS5jc3MKQEAgLTYyLDYgKzYyLDQ5IEBAIHNlbGVjdFtzaXplPSIxIl0gewogICAgIGZvbnQtd2Vp
Z2h0OiBub3JtYWw7CiB9CiAKKworLyogU3VnZ2VzdGlvbiBCb3ggKi8KKworaW5wdXQ6Oi13ZWJr
aXQtc3VnZ2VzdGlvbi1kcm9wZG93bi1ib3ggeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAg
ICB6LWluZGV4OiAyMTQ3NDgzNjQ3OworICAgIG9wYWNpdHk6IDAuOTg7CisgICAgbWF4LWhlaWdo
dDogMjAwcHg7CisgICAgb3ZlcmZsb3cteTogc2Nyb2xsOworICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwOworICAgIGJvcmRlci10b3A6IG5vbmU7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmYzsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6
IDBweCA1cHggNXB4IC0ycHggIzYwNjA2MCBpbnNldDsKKyAgICAtd2Via2l0LWJveC1zaGFkb3c6
IDJweCAwcHggOHB4IC01cHggI0FFQUVBRTsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlv
bi1kcm9wZG93bi1ib3gtaXRlbSB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDEw
MCU7CisgICAgcGFkZGluZzogMTBweCA1cHg7CisgICAgY29sb3I6ICMzNjM2MzY7CisgICAgdGV4
dC1kZWNvcmF0aW9uOiBub25lOworICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4
OworICAgIHRleHQtb3ZlcmZsb3c6IC1ibGFja2JlcnJ5LWZhZGU7CisgICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKK30KKworaW5wdXQ6Oi13ZWJraXQtc3VnZ2VzdGlvbi1wcmVmaXgtdGV4dCB7CisgICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKK2lucHV0Ojotd2Via2l0LXN1Z2dlc3Rpb24tZHJvcGRv
d24tYm94LWl0ZW0tbGFzdCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgd2lkdGg6IDEwMCU7
CisgICAgcGFkZGluZzogMTBweCA1cHg7CisgICAgY29sb3I6ICMzNjM2MzY7CisgICAgdGV4dC1k
ZWNvcmF0aW9uOiBub25lOworICAgIHRleHQtb3ZlcmZsb3c6IC1ibGFja2JlcnJ5LWZhZGU7Cisg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBib3JkZXItYm90dG9tOiBub25lOworfQorCiBpbnB1
dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0
aW1lLWxvY2FsIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7CiAg
ICAgZm9udC1mYW1pbHk6ICJTbGF0ZSBQcm8iOwogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0
dG9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5k
ZXJUaGVtZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuY3BwCmluZGV4IGM3NTI1ZGIuLjIzOWQ2YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFj
a0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRl
clRoZW1lQmxhY2tCZXJyeS5jcHAKQEAgLTEyNjcsNCArMTI2NywxMCBAQCBDb2xvciBSZW5kZXJU
aGVtZUJsYWNrQmVycnk6OnBsYXRmb3JtSW5hY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3Io
KSBjb25zdAogICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8vIFllbGxvdy4KIH0KIAor
Ym9vbCBSZW5kZXJUaGVtZUJsYWNrQmVycnk6OnN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUpIGNvbnN0Cit7CisgICAgLy8gVE9ETzogc3VwcG9ydCBvdGhlciBpbnB1
dCB0eXBlcyBpbiB0aGUgZnV0dXJlLgorICAgIHJldHVybiB0eXBlID09IElucHV0VHlwZU5hbWVz
Ojp0ZXh0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1JlbmRlclRoZW1lQmxhY2tCZXJyeS5o
CmluZGV4IDFlZWI1NWIuLmJkYTYyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUmVuZGVyVGhlbWVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9SZW5kZXJUaGVtZUJsYWNrQmVycnkuaApAQCAtOTYsNiAr
OTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFy
Y2hIaWdobGlnaHRDb2xvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFj
dGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwogcHJpdmF0
ZToKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBkZWZhdWx0R1VJRm9udCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDg2MzNlMDQuLmU1MjNlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDIt
MjUgIEFsYmVydG8gR2FyY2lhICA8YWdhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtCbGFj
a0JlcnJ5XSBVcHN0cmVhbSB0aGUgZGF0YWxpc3Qgc3VwcG9ydCBVSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNzM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT3JpZ2luYWwgY29kZSBieSBPdHRvIERl
cmVrIENoZXVuZyA8b3RjaGV1bmdAcmltLmNvbT4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tC
ZXJyeS5jbWFrZToKKwogMjAxMy0wMi0yNSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFZTMjAxMCBzb2x1dGlvbiBidWlsZCBmaXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCmluZGV4IGFmOGQxNDEuLjExZjlkOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC0xMTgsNiArMTE4LDgg
QEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BhZ2VQb3B1cEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9OYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnRCbGFja0JlcnJ5LmNwcAogICAgIGJsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCisgICAgYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5jcHAKKyAgICBibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hFbGVtZW50LmNwcAogICAgIGJsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvVmlicmF0aW9uQ2xpZW50QmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCmluZGV4IDlmMzgyNzQuLmIzNDJkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTI1ICBBbGJlcnRvIEdhcmNpYSAgPGFnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0gdGhlIGRhdGFsaXN0
IHN1cHBvcnQgVUkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDczNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE9yaWdpbmFsIGNvZGUgYnkgT3R0byBEZXJlayBDaGV1bmcgPG90Y2hldW5nQHJpbS5jb20+
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94
RWxlbWVudDo6U3VnZ2VzdGlvbkJveEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2Vz
dGlvbkJveEVsZW1lbnQ6On5TdWdnZXN0aW9uQm94RWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdWdnZXN0aW9uQm94RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dl
c3Rpb25Cb3hFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoU3VnZ2VzdGlvbkJveEVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpTdWdnZXN0aW9uQm94SGFu
ZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6flN1Z2dlc3Rp
b25Cb3hIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OnNldElucHV0
RWxlbWVudEFuZFVwZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJv
eEhhbmRsZXI6OnNob3dEcm9wZG93bkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTdWdnZXN0aW9u
Qm94SGFuZGxlcjo6aGlkZURyb3Bkb3duQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlN1Z2dlc3Rp
b25Cb3hIYW5kbGVyOjpjaGFuZ2VJbnB1dEVsZW1lbnRJbm5lclRleHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6cGFyc2VTdWdnZXN0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWdnZXN0aW9uQm94SGFuZGxlcjo6aW5zZXJ0U3VnZ2VzdGlvbnNUb0Ry
b3Bkb3duQm94KToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdERyb3Bkb3duQm94UG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmJ1aWxkRHJvcGRvd25C
b3hUcmVlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3VnZ2VzdGlvbkJveEhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI6OmZvY3VzZWRFbGVt
ZW50KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6dXBkYXRlRm9ybVN0
YXRlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnB1dEhhbmRsZXIpOgorICAgICAgICAqIFdlYktpdFN1cHBv
cnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpU
b3VjaEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hQb2ludCk6CisKIDIwMTMtMDItMjUgIFlvbmd4
aW4gRGFpICA8eW9kYWlAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGlzSW5w
dXRNb2RlKCkgbWV0aG9kIHRvIFdlYlBhZ2UgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hFbGVt
ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTNmMjExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1
Z2dlc3Rpb25Cb3hFbGVtZW50LmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3Vn
Z2VzdGlvbkJveEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlN1Z2dlc3Rpb25C
b3hIYW5kbGVyLmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1N1Z2dlc3Rpb25Cb3hFbGVtZW50OjpTdWdnZXN0aW9uQm94RWxlbWVudChTdWdnZXN0
aW9uQm94SGFuZGxlciogZWxlbWVudCwgU3RyaW5nJiB2YWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogSFRNTERpdkVsZW1lbnQobmFtZSwg
ZG9jdW1lbnQpCisgICAgLCBtX3N1Z2dlc3Rpb25Cb3goZWxlbWVudCkKKyAgICAsIG1fdmFsdWUo
dmFsdWUpCit7Cit9CisKK1N1Z2dlc3Rpb25Cb3hFbGVtZW50Ojp+U3VnZ2VzdGlvbkJveEVsZW1l
bnQoKQoreworfQorCitQYXNzUmVmUHRyPFN1Z2dlc3Rpb25Cb3hFbGVtZW50PiBTdWdnZXN0aW9u
Qm94RWxlbWVudDo6Y3JlYXRlKFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKiBlbGVtZW50LCBTdHJpbmcm
IHZhbHVlLCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dWdnZXN0aW9uQm94RWxlbWVudChlbGVtZW50LCB2YWx1ZSwgSFRNTE5hbWVzOjpkaXZUYWcsIGRv
Y3VtZW50KSk7Cit9CisKK3ZvaWQgU3VnZ2VzdGlvbkJveEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsK
KyAgICAgICAgLy8gQ2FwdHVyZSBhIG1vdXNlIGRvd24gZXZlbnQgd2l0aCBsZWZ0IGNsaWNrIGFu
ZCBzZXQgdGhlIHBhcmVudCBpbnB1dCBlbGVtZW50IHRvIHRoZSBub2RlJ3MgdGV4dAorICAgICAg
ICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQgJiYgc3Rh
dGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkgIT0gUmlnaHRCdXR0b24gJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAgICAgICAgICAgbV9zdWdnZXN0aW9uQm94LT5jaGFu
Z2VJbnB1dEVsZW1lbnRJbm5lclRleHRWYWx1ZShtX3ZhbHVlKTsKKyAgICAgICAgICAgIG1fc3Vn
Z2VzdGlvbkJveC0+aGlkZURyb3Bkb3duQm94KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30g
LyogbmFtZXNwYWNlIFdlYkNvcmUgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxlbWVudC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hFbGVtZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlZGYxYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94RWxl
bWVudC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKyNpZm5kZWYgU3VnZ2VzdGlvbkJveEVsZW1lbnRfaAorI2RlZmluZSBTdWdnZXN0aW9u
Qm94RWxlbWVudF9oCisKKyNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOworY2xhc3MgRXZlbnQ7CisK
K2NsYXNzIFN1Z2dlc3Rpb25Cb3hFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdWdnZXN0aW9uQm94RWxlbWVudD4gY3JlYXRl
KFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKiwgU3RyaW5nJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFs
IH5TdWdnZXN0aW9uQm94RWxlbWVudCgpOworCitwcml2YXRlOgorICAgIFN1Z2dlc3Rpb25Cb3hF
bGVtZW50KFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKiwgU3RyaW5nJiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCopOworCisgICAgU3VnZ2VzdGlvbkJveEhhbmRsZXIqIG1fc3VnZ2VzdGlvbkJveDsKKyAg
ICBTdHJpbmcgbV92YWx1ZTsKK307CisKK30gLyogbmFtZXNwYWNlIFdlYkNvcmUgKi8KKyNlbmRp
ZiAvKiBTdWdnZXN0aW9uQm94RWxlbWVudF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dlc3Rpb25Cb3hIYW5kbGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODhmMzAwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1N1Z2dl
c3Rpb25Cb3hIYW5kbGVyLmNwcApAQCAtMCwwICsxLDIzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdWdnZXN0aW9uQm94SGFuZGxlci5oIgorCisjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIK
KyNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRGF0YUxpc3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TERpdkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MU3BhbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSAiU3VnZ2VzdGlvbkJveEVsZW1lbnQuaCIKKyNpbmNsdWRlICJU
ZXh0LmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CisKK1N1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpTdWdnZXN0aW9uQm94SGFuZGxl
cihIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQorICAgIDogbV9pbnB1dEVsZW1lbnQoZWxlbWVu
dCkKK3sKK30KKworU3VnZ2VzdGlvbkJveEhhbmRsZXI6On5TdWdnZXN0aW9uQm94SGFuZGxlcigp
Cit7CisgICAgaGlkZURyb3Bkb3duQm94KCk7Cit9CisKK1Bhc3NPd25QdHI8U3VnZ2VzdGlvbkJv
eEhhbmRsZXI+IFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFN1Z2dlc3Rpb25Cb3hIYW5kbGVy
KGVsZW1lbnQpKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6c2V0SW5wdXRFbGVt
ZW50QW5kVXBkYXRlRGlzcGxheShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29sIGFsbG93
RW1wdHlQcmVmaXgpCit7CisgICAgaGlkZURyb3Bkb3duQm94KCk7CisgICAgbV9pbnB1dEVsZW1l
bnQgPSBlbGVtZW50OworICAgIHNob3dEcm9wZG93bkJveChhbGxvd0VtcHR5UHJlZml4KTsKK30K
Kwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6c2hvd0Ryb3Bkb3duQm94KGJvb2wgYWxsb3dF
bXB0eVByZWZpeCkKK3sKKyAgICAvLyBDbGVhcmluZyBzdWdnZXN0aW9ucyBhbmQgcGFyc2UgYWdh
aW4KKyAgICBtX3N1Z2dlc3Rpb25zLmNsZWFyKCk7CisgICAgcGFyc2VTdWdnZXN0aW9ucyhhbGxv
d0VtcHR5UHJlZml4KTsKKworICAgIC8vIERvbid0IGJvdGhlciBidWlsZGluZyB0aGUgdHJlZSBp
ZiBzdWdnZXN0aW9uIHNpemUgaXMgMC4KKyAgICAvLyBXZSBuZWVkIHRvIGNhbGwgaW5zZXJ0U3Vn
Z2VzdGlvbnMgdG8gY2xlYXIgcHJldmlvdXMgc3VnZ2VzdGlvbnMKKyAgICAvLyBpbiB0aGUgRE9N
IGlmIHN1Z2dlc3Rpb24gc2l6ZSBpcyAwLgorICAgIGlmICghbV9kcm9wZG93bkJveCkgeworICAg
ICAgICBpZiAoIW1fc3VnZ2VzdGlvbnMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBidWlsZERyb3Bkb3duQm94VHJlZSgpOworICAgIH0KKworICAgIGluc2VydFN1Z2dlc3Rp
b25zVG9Ecm9wZG93bkJveCgpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpoaWRl
RHJvcGRvd25Cb3goKQoreworICAgIGlmIChtX2Ryb3Bkb3duQm94KSB7CisgICAgICAgIGlmIChT
aGFkb3dSb290KiBzaGFkb3dSb290ID0gbV9pbnB1dEVsZW1lbnQtPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgIHNoYWRv
d1Jvb3QtPnJlbW92ZUNoaWxkKG1fZHJvcGRvd25Cb3guZ2V0KCksIGVjKTsKKyAgICAgICAgfQor
ICAgICAgICBtX2Ryb3Bkb3duQm94ID0gMDsKKyAgICB9CisgICAgbV9zdWdnZXN0aW9ucy5jbGVh
cigpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjaGFuZ2VJbnB1dEVsZW1lbnRJ
bm5lclRleHRWYWx1ZShTdHJpbmcmIHRleHQpCit7CisgICAgbV9pbnB1dEVsZW1lbnQtPnNldElu
bmVyVGV4dFZhbHVlKHRleHQpOworfQorCit2b2lkIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpwYXJz
ZVN1Z2dlc3Rpb25zKGJvb2wgYWxsb3dFbXB0eVByZWZpeCkKK3sKKyAgICAvLyBSZXR1cm4gaWYg
dGhpcyBoYW5kbGVyIGRvZXNuJ3QgaGF2ZSBhbiBpbnB1dCBlbGVtZW50IHRvIGF0dGFjaCB0bwor
ICAgIGlmICghbV9pbnB1dEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIExpc3Qg
YXR0cmlidXRlIGV4aXN0cywgY2hlY2sgaWYgZGF0YWxpc3QgZXhpc3RzLgorICAgIEhUTUxEYXRh
TGlzdEVsZW1lbnQqIGRMaXN0ID0gbV9pbnB1dEVsZW1lbnQtPmRhdGFMaXN0KCk7CisgICAgaWYg
KCFkTGlzdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBv
cHRpb25zTGlzdCA9IGRMaXN0LT5vcHRpb25zKCk7CisgICAgU3RyaW5nIHByZWZpeCA9IG1faW5w
dXRFbGVtZW50LT5pbm5lclRleHRWYWx1ZSgpOworCisgICAgLy8gRXhpdCBpZjoKKyAgICAvLyAx
KSBJZiBsZW5ndGggb2Ygbm9kZXMgaW4gZGF0YWxpc3QgaXMgZW1wdHksIHJldHVybi4KKyAgICAv
LyAyKSBJZiB3ZSBkbyBub3QgYWxsb3cgZW1wdHkgcHJlZml4ZXMgYW5kIHByZWZpeCBpcyBudWxs
CisgICAgaWYgKCFvcHRpb25zTGlzdC0+bGVuZ3RoKCkgfHwgKCFhbGxvd0VtcHR5UHJlZml4ICYm
IHByZWZpeC5pc0VtcHR5KCkpKSB7CisgICAgICAgIGhpZGVEcm9wZG93bkJveCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gUHJlZml4IG1hdGNoIHRoZSBpbm5lciB0ZXh0IHZh
bHVlIG9mIHRoZSBpbnB1dCBhZ2FpbnN0IHRoZSBjYW5kaWRhdGUgc3VnZ2VzdGlvbnMuCisgICAg
Ly8gTWFrZSBzdXJlIHRoZSBsZW5ndGggb2YgdGhlIHN1Z2dlc3Rpb24gaXMgc21hbGxlciB0aGFu
IG1heCBsZW5ndGgKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3B0aW9uc0xpc3QtPmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIHRhcmdldCA9IHRvSFRN
TE9wdGlvbkVsZW1lbnQoKG9wdGlvbnNMaXN0LT5pdGVtKGkpKSk7CisgICAgICAgIGlmICghbV9p
bnB1dEVsZW1lbnQtPmlzVmFsaWRWYWx1ZSh0YXJnZXQtPnZhbHVlKCkpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIFN0cmluZyBjYW5kaWRhdGVTdHJpbmcgPSBtX2lucHV0RWxlbWVu
dC0+c2FuaXRpemVWYWx1ZSh0YXJnZXQtPnZhbHVlKCkpOworICAgICAgICBpZiAoIWNhbmRpZGF0
ZVN0cmluZy5maW5kSWdub3JpbmdDYXNlKHByZWZpeCkgJiYgY2FuZGlkYXRlU3RyaW5nLmxlbmd0
aCgpIDw9ICh1bnNpZ25lZCkgbV9pbnB1dEVsZW1lbnQtPm1heExlbmd0aCgpKQorICAgICAgICAg
ICAgbV9zdWdnZXN0aW9ucy5hcHBlbmQoY2FuZGlkYXRlU3RyaW5nKTsKKyAgICB9Cit9CisKK3Zv
aWQgU3VnZ2VzdGlvbkJveEhhbmRsZXI6Omluc2VydFN1Z2dlc3Rpb25zVG9Ecm9wZG93bkJveCgp
Cit7CisgICAgLy8gSW4gY2FzZSBzb21lb25lIGlzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRo
b3V0IHN1Y2Nlc3NmdWxseSBidWlsZGluZyB0aGUgZHJvcGRvd25Cb3ggdHJlZQorICAgIEFTU0VS
VChtX2Ryb3Bkb3duQm94KTsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZHJvcGRvd25C
b3gtPmRvY3VtZW50KCk7CisKKyAgICAvLyBDbGVhciB0aGUgZHJvcGRvd24gYm94J3MgcHJldmlv
dXMgdmFsdWVzCisgICAgbV9kcm9wZG93bkJveC0+cmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgIGlu
dCBwcmVmaXhJbmRleCA9IG1faW5wdXRFbGVtZW50LT5pbm5lclRleHRWYWx1ZSgpLmxlbmd0aCgp
OworCisgICAgdW5zaWduZWQgdG90YWwgPSBtX3N1Z2dlc3Rpb25zLnNpemUoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWw7ICsraSkgeworICAgICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IHN1Z2dlc3Rpb25JdGVtID0gU3VnZ2VzdGlvbkJveEVsZW1lbnQ6OmNyZWF0ZSh0aGlz
LCBtX3N1Z2dlc3Rpb25zW2ldLCBkb2N1bWVudCk7CisgICAgICAgIGlmIChpIDwgdG90YWwgLSAx
KQorICAgICAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPnNldFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0
aW9uLWRyb3Bkb3duLWJveC1pdGVtIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN1Z2dl
c3Rpb25JdGVtLT5zZXRQc2V1ZG8oIi13ZWJraXQtc3VnZ2VzdGlvbi1kcm9wZG93bi1ib3gtaXRl
bS1sYXN0Iik7CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSBwYXJ0IHdoZXJlIGl0IHByZWZpeCBt
YXRjaGVkCisgICAgICAgIFJlZlB0cjxIVE1MU3BhbkVsZW1lbnQ+IHByZWZpeEVsZW1lbnQgPSBI
VE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnNwYW5UYWcsIGRvY3VtZW50KTsKKyAg
ICAgICAgcHJlZml4RWxlbWVudC0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBt
X3N1Z2dlc3Rpb25zW2ldLnN1YnN0cmluZygwLCBwcmVmaXhJbmRleCkpKTsKKyAgICAgICAgcHJl
Zml4RWxlbWVudC0+c2V0UHNldWRvKCItd2Via2l0LXN1Z2dlc3Rpb24tcHJlZml4LXRleHQiKTsK
KyAgICAgICAgc3VnZ2VzdGlvbkl0ZW0tPmFwcGVuZENoaWxkKHByZWZpeEVsZW1lbnQucmVsZWFz
ZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgICAgICAvLyBBcHBlbmQgdGhlIHJlc3Qg
b2YgdGhlIHRleHQgaW4gdGhlIHN1Z2dlc3Rpb24gaXRlbQorICAgICAgICBzdWdnZXN0aW9uSXRl
bS0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBtX3N1Z2dlc3Rpb25zW2ldLnN1
YnN0cmluZyhwcmVmaXhJbmRleCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgbV9k
cm9wZG93bkJveC0+YXBwZW5kQ2hpbGQoc3VnZ2VzdGlvbkl0ZW0ucmVsZWFzZSgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFkanVzdERyb3Bkb3duQm94
UG9zaXRpb24oY29uc3QgTGF5b3V0UmVjdCYgaG9zdFJlY3QsIEhUTUxFbGVtZW50KiBkcm9wZG93
bkJveCkKK3sKKyAgICAvLyBGSVhNRTogcmV2ZXJzZSBwb3NpdGlvbmluZyBhbmQgc2Nyb2xsCisg
ICAgQVNTRVJUKGRyb3Bkb3duQm94KTsKKyAgICBpZiAoaG9zdFJlY3QuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgZG91YmxlIGhvc3RYID0gaG9zdFJlY3QueCgpOworICAgIGRvdWJs
ZSBob3N0WSA9IGhvc3RSZWN0LnkoKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGRyb3Bkb3duQm94LT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChSZW5kZXJCb3gqIGNvbnRh
aW5lciA9IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgRmxvYXRQ
b2ludCBjb250YWluZXJMb2NhdGlvbiA9IGNvbnRhaW5lci0+bG9jYWxUb0Fic29sdXRlKCk7Cisg
ICAgICAgICAgICBob3N0WCAtPSBjb250YWluZXJMb2NhdGlvbi54KCkgKyBjb250YWluZXItPmJv
cmRlckxlZnQoKTsKKyAgICAgICAgICAgIGhvc3RZIC09IGNvbnRhaW5lckxvY2F0aW9uLnkoKSAr
IGNvbnRhaW5lci0+Ym9yZGVyVG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkcm9wZG93
bkJveC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgaG9zdFkgKyBob3N0
UmVjdC5oZWlnaHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgLy8gVGhlICds
ZWZ0JyB2YWx1ZSBvZiA6Oi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3cuCisgICAgY29u
c3QgaW50IGJ1YmJsZUFycm93VG9wT2Zmc2V0ID0gMzI7CisgICAgZG91YmxlIGJ1YmJsZVggPSBo
b3N0WDsKKyAgICBpZiAoaG9zdFJlY3Qud2lkdGgoKSAvIDIgPCBidWJibGVBcnJvd1RvcE9mZnNl
dCkKKyAgICAgICAgYnViYmxlWCA9IG1heChob3N0WCArIGhvc3RSZWN0LndpZHRoKCkgLyAyIC0g
YnViYmxlQXJyb3dUb3BPZmZzZXQsIDAuMCk7CisgICAgZHJvcGRvd25Cb3gtPnNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlMZWZ0LCBidWJibGVYLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKK30KKwordm9pZCBTdWdnZXN0aW9uQm94SGFuZGxlcjo6YnVpbGREcm9wZG93bkJv
eFRyZWUoKQoreworICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBtX2lucHV0RWxlbWVudC0+
ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworCisgICAgLy8gUmV0dXJuIGlmIHNoYWRvd1Jv
b3QgaXMgbnVsbAorICAgIGlmICghc2hhZG93Um9vdCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9pbnB1dEVsZW1lbnQtPmRvY3VtZW50KCk7CisgICAgbV9k
cm9wZG93bkJveCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIG1fZHJv
cGRvd25Cb3gtPnNldFBzZXVkbygiLXdlYmtpdC1zdWdnZXN0aW9uLWRyb3Bkb3duLWJveCIpOwor
ICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5kZXJNZW51
TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAorICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0ZSBvciBu
b24tZml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgorICAgIG1fZHJvcGRvd25Cb3gtPnNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7
CisKKyAgICAvLyBNaW51cyAyIHBpeGVscyBiZWNhdXNlIG9mIHRoZSAxcHggYm9yZGVycyBvbiB0
aGUgc3VnZ2VzdGlvbiBib3guCisgICAgbV9kcm9wZG93bkJveC0+c2V0SW5saW5lU3R5bGVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBTdHJpbmc6Om51bWJlcihtX2lucHV0RWxlbWVudC0+Ym91
bmRpbmdCb3goKS53aWR0aCgpLnJhd1ZhbHVlKCkgLSAyKSArICJweCIsIGZhbHNlKTsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChtX2Ryb3Bk
b3duQm94LmdldCgpLCBlYyk7CisgICAgQVNTRVJUKCFlYyk7CisgICAgZG9jdW1lbnQtPnVwZGF0
ZUxheW91dCgpOworICAgIGFkanVzdERyb3Bkb3duQm94UG9zaXRpb24obV9pbnB1dEVsZW1lbnQt
PmJvdW5kaW5nQm94KCksIG1fZHJvcGRvd25Cb3guZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvU3VnZ2VzdGlvbkJveEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9TdWdnZXN0aW9uQm94SGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjQyOWI0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU3VnZ2VzdGlvbkJveEhhbmRsZXIuaApAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdWdnZXN0aW9uQm94SGFuZGxlcl9oCisj
ZGVmaW5lIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MSW5wdXRFbGVtZW50Owor
Y2xhc3MgSFRNTEVsZW1lbnQ7CisKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTdWdnZXN0aW9uQm94SGFuZGxlcik7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8U3VnZ2VzdGlvbkJveEhhbmRsZXI+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CisgICAgflN1Z2dlc3Rpb25Cb3hIYW5kbGVyKCk7CisgICAgdm9pZCBzZXRJbnB1
dEVsZW1lbnRBbmRVcGRhdGVEaXNwbGF5KEhUTUxJbnB1dEVsZW1lbnQqLCBib29sIGFsbG93RW1w
dHlQcmVmaXggPSBmYWxzZSk7CisgICAgdm9pZCBjaGFuZ2VJbnB1dEVsZW1lbnRJbm5lclRleHRW
YWx1ZShTdHJpbmcmIHRleHQpOworICAgIHZvaWQgc2hvd0Ryb3Bkb3duQm94KGJvb2wpOworICAg
IHZvaWQgaGlkZURyb3Bkb3duQm94KCk7CisgICAgSFRNTElucHV0RWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lucHV0RWxlbWVudC5nZXQoKTsgfQorCitwcml2YXRl
OgorICAgIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICB2b2lk
IGluc2VydFN1Z2dlc3Rpb25zVG9Ecm9wZG93bkJveCgpOworICAgIHZvaWQgYnVpbGREcm9wZG93
bkJveFRyZWUoKTsKKyAgICB2b2lkIHBhcnNlU3VnZ2VzdGlvbnMoYm9vbCk7CisKKyAgICBSZWZQ
dHI8SFRNTElucHV0RWxlbWVudD4gbV9pbnB1dEVsZW1lbnQ7CisgICAgUmVmUHRyPEhUTUxFbGVt
ZW50PiBtX2Ryb3Bkb3duQm94OworICAgIFZlY3RvcjxTdHJpbmc+IG1fc3VnZ2VzdGlvbnM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdWdnZXN0aW9uQm94SGFu
ZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9JbnB1dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvSW5wdXRIYW5kbGVyLmNwcAppbmRleCAxOTlmZjFkLi43MDc2MzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5j
cHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVyLmgiCiAjaW5j
bHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3BlbGxpbmdIYW5kbGVyLmgiCisjaW5j
bHVkZSAiU3VnZ2VzdGlvbkJveEhhbmRsZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVu
dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlv
bi5oIgpAQCAtODcxLDYgKzg3Miw5IEBAIHZvaWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50VW5m
b2N1c2VkKGJvb2wgcmVmb2N1c09jY3VyaW5nKQogCiAgICAgICAgIG1fd2ViUGFnZS0+bV9jbGll
bnQtPmlucHV0Rm9jdXNMb3N0KCk7CiAKKyAgICAgICAgLy8gSGlkZSB0aGUgc3VnZ2VzdGlvbiBi
b3ggaWYgaXQgaXMgdmlzaWJsZS4KKyAgICAgICAgaGlkZVRleHRJbnB1dFR5cGVTdWdnZXN0aW9u
Qm94KCk7CisKICAgICAgICAgLy8gUmVwYWludCB0aGUgZWxlbWVudCBhYnNlbnQgb2YgdGhlIGNh
cmV0LgogICAgICAgICBpZiAobV9jdXJyZW50Rm9jdXNFbGVtZW50LT5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CkBA
IC0xMDg4LDYgKzEwOTIsOSBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3VzZWQo
RWxlbWVudCogZWxlbWVudCkKIAogICAgIGhhbmRsZUlucHV0TG9jYWxlQ2hhbmdlZChtX3dlYlBh
Z2UtPm1fd2ViU2V0dGluZ3MtPmlzV3JpdGluZ0RpcmVjdGlvblJUTCgpKTsKIAorICAgIC8vIHVw
ZGF0ZSB0aGUgc3VnZ2VzdGlvbiBib3gKKyAgICBzaG93VGV4dElucHV0VHlwZVN1Z2dlc3Rpb25C
b3goKTsKKwogICAgIGlmICghbV9kZWxheUtleWJvYXJkVmlzaWJpbGl0eUNoYW5nZSkKICAgICAg
ICAgbm90aWZ5Q2xpZW50T2ZLZXlib2FyZFZpc2liaWxpdHlDaGFuZ2UodHJ1ZSwgdHJ1ZSAvKiB0
cmlnZ2VyZWRCeUZvY3VzQ2hhbmdlICovKTsKIApAQCAtMTczMyw2ICsxNzQwLDEwIEBAIGJvb2wg
SW5wdXRIYW5kbGVyOjpoYW5kbGVLZXlib2FyZElucHV0KGNvbnN0IFBsYXRmb3JtOjpLZXlib2Fy
ZEV2ZW50JiBrZXlib2FyZEV2CiAgICAgICAgIGlmICghY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlv
biAmJiB0eXBlID09IFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlVcCkKICAgICAgICAgICAg
IGVuc3VyZUZvY3VzVGV4dEVsZW1lbnRWaXNpYmxlKEVkZ2VJZk5lZWRlZCk7CiAgICAgfQorCisg
ICAgaWYgKG1fY3VycmVudEZvY3VzRWxlbWVudCAmJiBrZXlib2FyZEV2ZW50SGFuZGxlZCkKKyAg
ICAgICAgc2hvd1RleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KCk7CisKICAgICByZXR1cm4ga2V5
Ym9hcmRFdmVudEhhbmRsZWQ7CiB9CiAKQEAgLTI1NDcsNSArMjU1OCwzOCBAQCB2b2lkIElucHV0
SGFuZGxlcjo6cmVzdG9yZVZpZXdTdGF0ZSgpCiAgICAgZm9jdXNlZE5vZGVDaGFuZ2VkKCk7CiB9
CiAKK3ZvaWQgSW5wdXRIYW5kbGVyOjpzaG93VGV4dElucHV0VHlwZVN1Z2dlc3Rpb25Cb3goYm9v
bCBhbGxvd0VtcHR5UHJlZml4KQoreworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGZvY3VzZWRJbnB1
dEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obV9jdXJyZW50Rm9jdXNF
bGVtZW50LT50b0lucHV0RWxlbWVudCgpKTsKKyAgICBpZiAoIWZvY3VzZWRJbnB1dEVsZW1lbnQg
fHwgIWZvY3VzZWRJbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghZm9jdXNlZElucHV0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFtX3N1Z2dlc3Rpb25Ecm9wZG93bkJveEhhbmRsZXIpCisgICAgICAgIG1fc3VnZ2VzdGlv
bkRyb3Bkb3duQm94SGFuZGxlciA9IFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOjpjcmVhdGUoZm9jdXNl
ZElucHV0RWxlbWVudCk7CisKKyAgICAvLyBJZiB0aGUgZm9jdXNlZCBpbnB1dCBlbGVtZW50IGlz
bid0IHRoZSBzYW1lIGFzIHRoZSBvbmUgaW5zaWRlIHRoZSBoYW5kbGVyLCByZXNldCBhbmQgZGlz
cGxheS4KKyAgICAvLyBJZiB0aGUgZm9jdXNlZCBlbGVtZW50IGlzIHRoZSBzYW1lLCBkaXNwbGF5
IHRoZSBzdWdnZXN0aW9ucy4KKyAgICBpZiAoKG1fc3VnZ2VzdGlvbkRyb3Bkb3duQm94SGFuZGxl
ci0+Zm9jdXNlZEVsZW1lbnQoKSkgJiYgbV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyLT5m
b2N1c2VkRWxlbWVudCgpICE9IGZvY3VzZWRJbnB1dEVsZW1lbnQpCisgICAgICAgIG1fc3VnZ2Vz
dGlvbkRyb3Bkb3duQm94SGFuZGxlci0+c2V0SW5wdXRFbGVtZW50QW5kVXBkYXRlRGlzcGxheShm
b2N1c2VkSW5wdXRFbGVtZW50KTsKKyAgICBlbHNlCisgICAgICAgIG1fc3VnZ2VzdGlvbkRyb3Bk
b3duQm94SGFuZGxlci0+c2hvd0Ryb3Bkb3duQm94KGFsbG93RW1wdHlQcmVmaXgpOworfQorCit2
b2lkIElucHV0SGFuZGxlcjo6aGlkZVRleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KCkKK3sKKyAg
ICBpZiAobV9zdWdnZXN0aW9uRHJvcGRvd25Cb3hIYW5kbGVyKQorICAgICAgICBtX3N1Z2dlc3Rp
b25Ecm9wZG93bkJveEhhbmRsZXItPmhpZGVEcm9wZG93bkJveCgpOworfQorCit2b2lkIElucHV0
SGFuZGxlcjo6ZWxlbWVudFRvdWNoZWQoV2ViQ29yZTo6RWxlbWVudCogbm9uU2hhZG93RWxlbWVu
dFVuZGVyRmF0RmluZ2VyKQoreworICAgIC8vIEF0dGVtcHQgdG8gc2hvdyBhbGwgc3VnZ2VzdGlv
bnMgd2hlbiB0aGUgaW5wdXQgZmllbGQgaXMgZW1wdHkgYW5kIGEgdGFwIGlzIHJlZ2lzdGVyZWQg
d2hlbiB0aGUgZWxlbWVudCBpcyBmb2N1c2VkLgorICAgIGlmIChpc0FjdGl2ZVRleHRFZGl0KCkg
JiYgbm9uU2hhZG93RWxlbWVudFVuZGVyRmF0RmluZ2VyID09IG1fY3VycmVudEZvY3VzRWxlbWVu
dCkKKyAgICAgICAgc2hvd1RleHRJbnB1dFR5cGVTdWdnZXN0aW9uQm94KHRydWUgLyogYWxsb3dF
bXB0eVByZWZpeCAqLyk7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmgKaW5kZXggNDYxZDQ4OC4uNDViZDUw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5w
dXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7
CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xh
c3MgVmlzaWJsZVNlbGVjdGlvbjsKK2NsYXNzIFN1Z2dlc3Rpb25Cb3hIYW5kbGVyOwogfQogCiBu
YW1lc3BhY2UgQmxhY2tCZXJyeSB7CkBAIC0xNTgsNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2FsbFJlcXVlc3RDaGVja2luZ0ZvcihQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWxsQ2hlY2tS
ZXF1ZXN0Pik7CiAgICAgdm9pZCBzZXRTeXN0ZW1TcGVsbENoZWNrU3RhdHVzKGJvb2wgZW5hYmxl
ZCkgeyBtX3NwZWxsQ2hlY2tTdGF0dXNDb25maXJtZWQgPSB0cnVlOyBtX2dsb2JhbFNwZWxsQ2hl
Y2tTdGF0dXMgPSBlbmFibGVkOyB9CiAKKyAgICB2b2lkIGVsZW1lbnRUb3VjaGVkKFdlYkNvcmU6
OkVsZW1lbnQqKTsKICAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKTsKIAogcHJpdmF0ZToKQEAg
LTIyMyw2ICsyMjUsOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGROb3RpZnlXZWJWaWV3
KGNvbnN0IFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50Jik7CiAKKyAgICB2b2lkIHNob3dUZXh0SW5w
dXRUeXBlU3VnZ2VzdGlvbkJveChib29sIGFsbG93RW1wdHlQcmVmaXggPSBmYWxzZSk7CisgICAg
dm9pZCBoaWRlVGV4dElucHV0VHlwZVN1Z2dlc3Rpb25Cb3goKTsKKwogICAgIFdlYlBhZ2VQcml2
YXRlKiBtX3dlYlBhZ2U7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9jdXJyZW50
Rm9jdXNFbGVtZW50OwpAQCAtMjU3LDYgKzI2Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nw
ZWxsQ2hlY2tTdGF0dXNDb25maXJtZWQ7CiAgICAgYm9vbCBtX2dsb2JhbFNwZWxsQ2hlY2tTdGF0
dXM7CiAKKyAgICBPd25QdHI8V2ViQ29yZTo6U3VnZ2VzdGlvbkJveEhhbmRsZXI+IG1fc3VnZ2Vz
dGlvbkRyb3Bkb3duQm94SGFuZGxlcjsKKwogICAgIERJU0FCTEVfQ09QWShJbnB1dEhhbmRsZXIp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvVG91Y2hFdmVudEhhbmRsZXIuY3BwCmluZGV4IDM1MjI4MjkuLjQ5MmFhODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1RvdWNoRXZl
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9Ub3VjaEV2ZW50SGFuZGxlci5jcHAKQEAgLTExNyw2ICsxMTcsOCBAQCB2b2lkIFRvdWNoRXZl
bnRIYW5kbGVyOjpoYW5kbGVUb3VjaFBvaW50KGNvbnN0IFBsYXRmb3JtOjpUb3VjaFBvaW50JiBw
b2ludCwgdW5zaQogICAgICAgICAgICAgICAgIG1fc2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tPcHRp
b25zID0gbV93ZWJQYWdlLT5tX2lucHV0SGFuZGxlci0+c2hvdWxkUmVxdWVzdFNwZWxsQ2hlY2tp
bmdPcHRpb25zRm9yUG9pbnQobV9sYXN0RmF0RmluZ2Vyc1Jlc3VsdC5hZGp1c3RlZFBvc2l0aW9u
KCksIGVsZW1lbnRVbmRlckZhdEZpbmdlciwgbV9zcGVsbENoZWNrT3B0aW9uUmVxdWVzdCk7CiAg
ICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIG1fd2ViUGFnZS0+bV9pbnB1dEhhbmRsZXItPmVs
ZW1lbnRUb3VjaGVkKGxhc3RGYXRGaW5nZXJzUmVzdWx0KCkubm9kZUFzRWxlbWVudElmQXBwbGlj
YWJsZShGYXRGaW5nZXJzUmVzdWx0OjpTaGFkb3dDb250ZW50Tm90QWxsb3dlZCkpOworCiAgICAg
ICAgICAgICBoYW5kbGVGYXRGaW5nZXJQcmVzc2VkKHNoaWZ0QWN0aXZlLCBhbHRBY3RpdmUsIGN0
cmxBY3RpdmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>