<?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>47066</bug_id>
          
          <creation_ts>2010-10-03 15:31:57 -0700</creation_ts>
          <short_desc>Add ability to set the CacheModel in Webkit2</short_desc>
          <delta_ts>2010-10-04 10:18:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288795</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-03 15:31:57 -0700</bug_when>
    <thetext>Add ability to set the CacheModel in Webkit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288796</commentid>
    <comment_count>1</comment_count>
      <attachid>69596</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-03 15:37:10 -0700</bug_when>
    <thetext>Created attachment 69596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288797</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-03 15:40:02 -0700</bug_when>
    <thetext>Attachment 69596 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/win/WebProcessWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/qt/WebProcessQt.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/WebProcess.cpp:228:  WebProcess::pages_begin is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/WebProcess/WebProcess.cpp:233:  WebProcess::pages_end is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/Shared/WebPreferencesStore.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/WebProcess/WebProcess.h:54:  pages_const_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/WebProcess/WebProcess.h:68:  pages_begin is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit2/WebProcess/WebProcess.h:69:  pages_end is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 8 in 24 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>288799</commentid>
    <comment_count>3</comment_count>
      <attachid>69596</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-03 15:44:33 -0700</bug_when>
    <thetext>Comment on attachment 69596
Patch

I am going to go in another direction with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288800</commentid>
    <comment_count>4</comment_count>
      <attachid>69597</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-03 16:24:33 -0700</bug_when>
    <thetext>Created attachment 69597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288801</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-03 16:26:57 -0700</bug_when>
    <thetext>Attachment 69597 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/win/WebProcessWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/qt/WebProcessQt.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 18 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>288991</commentid>
    <comment_count>6</comment_count>
      <attachid>69597</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-10-04 10:11:47 -0700</bug_when>
    <thetext>Comment on attachment 69597
Patch

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

I don&apos;t see you adding WebProcessQt to the relevant build system, please do that too.

&gt; WebKit2/WebProcess/mac/WebProcessMac.mm:233
&gt; +    printf(&quot;Page Cache: %d\n&quot;, pageCache()-&gt;capacity());

Please don&apos;t check this in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288994</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-04 10:18:45 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/69020.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69596</attachid>
            <date>2010-10-03 15:37:10 -0700</date>
            <delta_ts>2010-10-03 16:24:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>cacheModel.diff</filename>
            <type>text/plain</type>
            <size>48323</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODk4OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTAtMTAtMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJp
bGl0eSB0byBzZXQgdGhlIENhY2hlTW9kZWwgaW4gV2Via2l0MgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNjYKKworICAgICAgICAtIEFsc28gY2hh
bmdlcyB0byBzZW5kaW5nIHByZWZlcmVuY2VzIGNoYW5nZXMgc3RyYWlnaHQgZnJvbSB0aGUKKyAg
ICAgICAgICBjb250ZXh0IHRvIHRoZSBXZWJQcm9jZXNzIG9iamVjdCAoYXMgb3Bwb3NlZCB0byB0
aGUgaW5kaXZpZHVhbAorICAgICAgICAgIFdlYlBhZ2Ugb2JqZWN0cykgdG8gYWxsIGZvciBwcm9j
ZXNzIHdpZGUgc2V0dGluZ3MgbGlrZSB0aGUgQ2FjaGVNb2RlbC4KKworICAgICAgICAqIFNoYXJl
ZC9DYWNoZU1vZGVsLmg6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9X
ZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6V2ViUHJlZmVyZW5jZXNT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQ2FjaGVNb2RlbCk6CisgICAgICAgIChX
ZWJLaXQ6OnRvUmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXS1By
ZWZlcmVuY2VzR2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpzZXRQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
eHQ6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZU5h
bWVzcGFjZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6c2V0
Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpjYWNoZU1vZGVs
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJL
aXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cHJlZmVyZW5j
ZXNEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnByZWZlcmVuY2Vz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGFnZXNfYmVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwYWdlc19lbmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbTog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1lbW9yeVNpemUpOgorICAgICAgICAoV2ViS2l0Ojp2
b2x1bWVGcmVlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0
Q2FjaGVNb2RlbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6CisgICAg
ICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTEwLTAzICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
LnBybwkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0NvcmVJUENT
dXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBcCiAgICAgU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L1dlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oIFwKICAgICBTaGFyZWQvQ29yZUlQ
Q1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIFwKKyAgICBTaGFyZWQvQ2FjaGVNb2Rl
bC5oIFwKICAgICBTaGFyZWQvRHJhd2luZ0FyZWFCYXNlLmggXAogICAgIFNoYXJlZC9JbW11dGFi
bGVBcnJheS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oIFwKQEAgLTQxNyw0
ICs0MTgsNSBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0UXQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3BwIFwKKyAgICBXZWJQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAgXAogICAgICQkV0VCS0lUMl9HRU5FUkFURURfU09VUkNF
UwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvU2hhcmVkL0NhY2hlTW9kZWwuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL0Nh
Y2hlTW9kZWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ2FjaGVNb2RlbF9oCisjZGVmaW5lIENhY2hlTW9kZWxfaAorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSBDYWNoZU1vZGVsIHsKKyAgICBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIs
CisgICAgQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciwKKyAgICBDYWNoZU1vZGVsUHJpbWFyeVdl
YkJyb3dzZXIKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ2FjaGVN
b2RlbF9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rl
ci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHJldmlz
aW9uIDY4OTg3KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDExIEBACiAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1
bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiRm9udFNt
b290aGluZ0xldmVsLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00MCw2ICs0NCw3IEBAIFdlYlByZWZlcmVuY2VzU3RvcmU6
OldlYlByZWZlcmVuY2VzU3RvcmUKICAgICAsIGxvY2FsU3RvcmFnZUVuYWJsZWQodHJ1ZSkKICAg
ICAsIHhzc0F1ZGl0b3JFbmFibGVkKHRydWUpCiAgICAgLCBmcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KGZhbHNlKQorICAgICwgY2FjaGVNb2RlbChDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpCiAgICAg
LCBmb250U21vb3RoaW5nTGV2ZWwoRm9udFNtb290aGluZ0xldmVsTWVkaXVtKQogICAgICwgbWlu
aW11bUZvbnRTaXplKDEpCiAgICAgLCBtaW5pbXVtTG9naWNhbEZvbnRTaXplKDkpCkBAIC03Miw2
ICs3Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXNTdG9yZTo6ZW5jb2RlKENvcmVJUEMKICAgICBl
bmNvZGVyLT5lbmNvZGUobG9jYWxTdG9yYWdlRW5hYmxlZCk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHhzc0F1ZGl0b3JFbmFibGVkKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZnJhbWVGbGF0dGVuaW5n
RW5hYmxlZCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGNhY2hlTW9kZWwpOwogICAgIGVuY29kZXIt
PmVuY29kZShmb250U21vb3RoaW5nTGV2ZWwpOwogICAgIGVuY29kZXItPmVuY29kZShtaW5pbXVt
Rm9udFNpemUpOwogICAgIGVuY29kZXItPmVuY29kZShtaW5pbXVtTG9naWNhbEZvbnRTaXplKTsK
QEAgLTEwMSw2ICsxMDcsOCBAQCBib29sIFdlYlByZWZlcmVuY2VzU3RvcmU6OmRlY29kZShDb3Jl
SVBDCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzLmZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocy5jYWNoZU1vZGVsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHMuZm9udFNtb290aGluZ0xldmVsKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHMubWluaW11bUZvbnRTaXplKSkK
SW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9uIDY4OTg3KQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiwxMSArMjYsMTMgQEAKICNpZm5kZWYgV2ViUHJlZmVyZW5jZXNTdG9yZV9oCiAjZGVmaW5l
IFdlYlByZWZlcmVuY2VzU3RvcmVfaAogCi0jaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCi0j
aW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBDb3Jl
SVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNv
ZGVyOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUgewpAQCAtNTAsNyArNTIsOCBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZSB7CiAgICAg
Ym9vbCB4c3NBdWRpdG9yRW5hYmxlZDsKICAgICBib29sIGZyYW1lRmxhdHRlbmluZ0VuYWJsZWQ7
CiAKLSAgICB1aW50MzJfdCBmb250U21vb3RoaW5nTGV2ZWw7CisgICAgdWludDMyX3QgY2FjaGVN
b2RlbDsgLy8gQ2FjaGVNb2RlbAorICAgIHVpbnQzMl90IGZvbnRTbW9vdGhpbmdMZXZlbDsgLy8g
Rm9udFNtb290aGluZ0xldmVsCiAKICAgICB1aW50MzJfdCBtaW5pbXVtRm9udFNpemU7CiAgICAg
dWludDMyX3QgbWluaW11bUxvZ2ljYWxGb250U2l6ZTsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0Nv
cmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgJKHJldmlz
aW9uIDY4OTg3KQorKysgV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01l
c3NhZ2VLaW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gS2luZCB7
CiAgICAgTG9hZEluamVjdGVkQnVuZGxlLAogICAgIFNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnksCiAgICAgU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MsCisgICAgUHJlZmVyZW5jZXNEaWRD
aGFuZ2UsCiAgICAgQ3JlYXRlLAogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50
LAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZp
c2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9j
ZXNzKCkKICAgICBtX3Byb2Nlc3MgPSBXZWJQcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0V2Vi
UHJvY2Vzcyh0aGlzKTsKIAogICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6
U2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MsIDAsIENvcmVJUEM6OkluKG1faGlzdG9yeUNsaWVu
dC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKFdlYlBy
b2Nlc3NNZXNzYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZSwgMCwgQ29yZUlQQzo6SW4obV9wcmVm
ZXJlbmNlcy0+c3RvcmUoKSkpOwogCiAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9y
IGl0ID0gbV9zY2hlbWVzVG9SZWdpc3RlckFzRW1wdHlEb2N1bWVudC5iZWdpbigpLCBlbmQgPSBt
X3NjaGVtZXNUb1JlZ2lzdGVyQXNFbXB0eURvY3VtZW50LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6UmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQsIDAsIENvcmVJUEM6OkluKCppdCkpOwpAQCAtMTgyLDcgKzE4
Myw3IEBAIHZvaWQgV2ViQ29udGV4dDo6c2V0UHJlZmVyZW5jZXMoV2ViUHJlZmUKICAgICBtX3By
ZWZlcmVuY2VzID0gcHJlZmVyZW5jZXM7CiAgICAgbV9wcmVmZXJlbmNlcy0+YWRkQ29udGV4dCh0
aGlzKTsKIAotICAgIC8vIEZJWE1FOiBVcGRhdGUgYWxsIFBhZ2VzL1BhZ2VOYW1lc3BhY2Ugd2l0
aCB0aGUgbmV3IFdlYlByZWZlcmVuY2VzLgorICAgIHByZWZlcmVuY2VzRGlkQ2hhbmdlKCk7CiB9
CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJDb250ZXh0OjpwcmVmZXJlbmNlcygpIGNvbnN0CkBAIC0x
OTIsMTMgKzE5MywxMyBAQCBXZWJQcmVmZXJlbmNlcyogV2ViQ29udGV4dDo6cHJlZmVyZW5jZXMo
CiAKIHZvaWQgV2ViQ29udGV4dDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewotICAgIGlmICgh
bV9wcm9jZXNzKQorICAgIGlmICghaGFzVmFsaWRQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGZvciAoSGFzaFNldDxXZWJQYWdlTmFtZXNwYWNlKj46Oml0ZXJhdG9yIGl0ID0gbV9w
YWdlTmFtZXNwYWNlcy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VOYW1lc3BhY2VzLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSA9
ICppdDsKLSAgICAgICAgcGFnZU5hbWVzcGFjZS0+cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKTsKLSAg
ICB9CisgICAgLy8gRklYTUU6IEl0IHByb2JhYmx5IG1ha2VzIG1vcmUgc2Vuc2UgdG8gc2VuZCBp
bmRpdmlkdWFsIHByZWZlcmVuY2UgY2hhbmdlcy4KKyAgICAvLyBIb3dldmVyLCBXZWJLaXRUZXN0
UnVubmVyIGRlcGVuZHMgb24gZ2V0dGluZyBhIHByZWZlcmVuY2UgY2hhbmdlIG5vdGlmaWNhdGlv
bgorICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQg
b3ZlcnJpZGVzIGdldCByZW1vdmVkLgorICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVz
c2FnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UsIDAsIENvcmVJUEM6OkluKG1fcHJlZmVyZW5jZXMt
PnN0b3JlKCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwCShyZXZpc2lvbiA2ODk4
NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MywxMiArNjMsNiBAQCBXZWJQYWdlUHJveHkqIFdlYlBhZ2VOYW1lc3BhY2U6OmNy
ZWF0ZVdlCiAgICAgcmV0dXJuIG1fY29udGV4dC0+Y3JlYXRlV2ViUGFnZSh0aGlzKTsKIH0KIAot
dm9pZCBXZWJQYWdlTmFtZXNwYWNlOjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCi17Ci0gICAgZm9y
IChXZWJQcm9jZXNzUHJveHk6OnBhZ2VzX2NvbnN0X2l0ZXJhdG9yIGl0ID0gcHJvY2VzcygpLT5w
YWdlc19iZWdpbigpLCBlbmQgPSBwcm9jZXNzKCktPnBhZ2VzX2VuZCgpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgICgqaXQpLT5wcmVmZXJlbmNlc0RpZENoYW5nZSgpOwotfQotCiB2b2lkIFdl
YlBhZ2VOYW1lc3BhY2U6OmdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlz
dGljcykKIHsKICAgICBpZiAoIXByb2Nlc3MoKSkKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VOYW1lc3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
TmFtZXNwYWNlLmgJKHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw2IEBAIHB1YmxpYzoKICAg
ICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQtPnBy
b2Nlc3MoKTsgfQogICAgIHZvaWQgcmV2aXZlSWZOZWNlc3NhcnkoKSB7IG1fY29udGV4dC0+cmV2
aXZlSWZOZWNlc3NhcnkoKTsgfQogCi0gICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpOwot
CiAgICAgdm9pZCBnZXRTdGF0aXN0aWNzKFdLQ29udGV4dFN0YXRpc3RpY3MqKTsKIAogcHJpdmF0
ZToKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNjg5ODcpCisr
KyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjAsMTYgKzUyMCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWIK
ICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1l
KGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCi17Ci0gICAgaWYgKCFpc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBJdCBwcm9iYWJseSBtYWtlcyBtb3Jl
IHNlbnNlIHRvIHNlbmQgaW5kaXZpZHVhbCBwcmVmZXJlbmNlIGNoYW5nZXMuCi0gICAgLy8gSG93
ZXZlciwgV2ViS2l0VGVzdFJ1bm5lciBkZXBlbmRzIG9uIGdldHRpbmcgYSBwcmVmZXJlbmNlIGNo
YW5nZSBub3RpZmljYXRpb24gZXZlbiBpZiBub3RoaW5nIGNoYW5nZWQgaW4gVUkgcHJvY2Vzcywg
c28gdGhhdCBvdmVycmlkZXMgZ2V0IHJlbW92ZWQuCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZShwYWdlTmFtZXNwYWNlKCktPmNvbnRl
eHQoKS0+cHJlZmVyZW5jZXMoKS0+c3RvcmUoKSksIG1fcGFnZUlEKTsKLX0KLQogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFN0YXRpc3RpY3MoV0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGljcykK
IHsKICAgICBzdGF0aXN0aWNzLT5udW1iZXJPZldLRnJhbWVzICs9IHByb2Nlc3MoKS0+ZnJhbWVD
b3VudEluUGFnZSh0aGlzKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAJ
KHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsNSArMjE4LDE2IEBAIGNvbnN0IFN0cmluZyYgV2ViUHJl
ZmVyZW5jZXM6OmZhbnRhc3lGb24KICAgICByZXR1cm4gbV9zdG9yZS5mYW50YXN5Rm9udEZhbWls
eTsKIH0KIAordm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwpCit7CisgICAgbV9zdG9yZS5jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKKyAgICB1
cGRhdGUoKTsKK30KKworQ2FjaGVNb2RlbCBXZWJQcmVmZXJlbmNlczo6Y2FjaGVNb2RlbCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KG1fc3RvcmUuY2FjaGVN
b2RlbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBX
ZWJQcmVmZXJlbmNlc19oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDYWNo
ZU1vZGVsLmgiCiAjaW5jbHVkZSAiRm9udFNtb290aGluZ0xldmVsLmgiCiAjaW5jbHVkZSAiV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMDAsNiAr
MTAxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHkoY29uc3QgU3Ry
aW5nJik7CiAgICAgY29uc3QgU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseSgpIGNvbnN0OwogCisg
ICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwpOworICAgIENhY2hlTW9kZWwgY2FjaGVN
b2RlbCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYlByZWZlcmVuY2VzKCk7CiAgICAgV2Vi
UHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXMqKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
QVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBXS0FQ
SUNhc3RfaAogI2RlZmluZSBXS0FQSUNhc3RfaAogCi0jaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCisjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1
ZGUgIldLUHJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04NCw2ICs4NiwzNSBAQCBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvUmVmKFdlYkNv
CiAgICAgcmV0dXJuIHdrVHlwZTsKIH0KIAoraW5saW5lIENhY2hlTW9kZWwgdG9DYWNoZU1vZGVs
KGtXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbCB3a0NhY2hlTW9kZWwpCit7CisgICAgc3dpdGNoICh3
a0NhY2hlTW9kZWwpIHsKKyAgICBjYXNlIGtXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbERvY3VtZW50
Vmlld2VyOgorICAgICAgICByZXR1cm4gQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOworICAgIGNh
c2Uga1dLUHJlZmVyZW5jZXNDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOgorICAgICAgICByZXR1
cm4gQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcjsKKyAgICBjYXNlIGtXS1ByZWZlcmVuY2VzQ2Fj
aGVNb2RlbFByaW1hcnlXZWJCcm93c2VyOgorICAgICAgICByZXR1cm4gQ2FjaGVNb2RlbFByaW1h
cnlXZWJCcm93c2VyOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7Cit9CisKK2lubGluZSBrV0tQcmVmZXJlbmNl
c0NhY2hlTW9kZWwgdG9SZWYoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQoreworICAgIHN3aXRjaCAo
Y2FjaGVNb2RlbCkgeworICAgIGNhc2UgQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOgorICAgICAg
ICByZXR1cm4ga1dLUHJlZmVyZW5jZXNDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CisgICAgY2Fz
ZSBDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOgorICAgICAgICByZXR1cm4ga1dLUHJlZmVyZW5j
ZXNDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOworICAgIGNhc2UgQ2FjaGVNb2RlbFByaW1hcnlX
ZWJCcm93c2VyOgorICAgICAgICByZXR1cm4ga1dLUHJlZmVyZW5jZXNDYWNoZU1vZGVsUHJpbWFy
eVdlYkJyb3dzZXI7CisgICAgfQorICAgIAorICAgIHJldHVybiBrV0tQcmVmZXJlbmNlc0NhY2hl
TW9kZWxEb2N1bWVudFZpZXdlcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNpZiBk
ZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMyAr
MTc4LDE0IEBAIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5RmFudGFzeUZvbnQKIHsKICAg
ICByZXR1cm4gdG9Db3BpZWRSZWYodG9XSyhwcmVmZXJlbmNlc1JlZiktPmZhbnRhc3lGb250RmFt
aWx5KCkpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRDYWNoZU1vZGVsKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGtXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbCBjYWNoZU1vZGVs
KQoreworICAgIHRvV0socHJlZmVyZW5jZXNSZWYpLT5zZXRDYWNoZU1vZGVsKHRvQ2FjaGVNb2Rl
bChjYWNoZU1vZGVsKSk7Cit9CisKK2tXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbCBXS1ByZWZlcmVu
Y2VzR2V0Q2FjaGVNb2RlbChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAg
IHJldHVybiB0b1JlZih0b1dLKHByZWZlcmVuY2VzUmVmKS0+Y2FjaGVNb2RlbCgpKTsKK30KKwpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gNjg5
ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDYgKzM2LDEzIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitlbnVtIHsK
KyAgICBrV0tQcmVmZXJlbmNlc0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlciA9IDAsCisgICAga1dL
UHJlZmVyZW5jZXNDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyID0gMSwKKyAgICBrV0tQcmVmZXJl
bmNlc0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlciA9IDIKK307Cit0eXBlZGVmIHVpbnQzMl90
IGtXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbDsKKwogV0tfRVhQT1JUIFdLVHlwZUlEIFdLUHJlZmVy
ZW5jZXNHZXRUeXBlSUQoKTsKIAogV0tfRVhQT1JUIFdLUHJlZmVyZW5jZXNSZWYgV0tQcmVmZXJl
bmNlc0NyZWF0ZSgpOwpAQCAtODcsNiArOTQsMTAgQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
UHJlZmVyZW5jZXNDb3B5QwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEZhbnRhc3lG
b250RmFtaWx5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIGZh
bWlseSk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9u
dEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMg
dG8ga1dLUHJlZmVyZW5jZXNDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIKK1dLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRDYWNoZU1vZGVsKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGtXS1ByZWZlcmVuY2VzQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKTsKK1dLX0VYUE9SVCBrV0tQ
cmVmZXJlbmNlc0NhY2hlTW9kZWwgV0tQcmVmZXJlbmNlc0dldENhY2hlTW9kZWwoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNjg5ODcpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw4IEBACiAJCUJDMkU2RThDMTE0MTk3MTUwMEE2
M0IxRSAvKiBXb3JrSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyRTZFN0MxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtJdGVtLmggKi87IH07CiAJ
CUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFN0QxMTQxOTcwQzAwQTYzQjFF
IC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07CiAJCUJDMkU2RThFMTE0MTk3MTUwMEE2M0IxRSAvKiBX
b3JrUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuaCAqLzsgfTsKKwkJQkMzMDY1
QzQxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNjVDMzEyNTkyRjg5MDBFNzEyNzggLyog
V2ViUHJvY2Vzc01hYy5tbSAqLzsgfTsKKwkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENh
Y2hlTW9kZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi87IH07CiAJCUJDMzNE
RDY4MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJOdW1iZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzNERDY3MTIzODQ2NDYwMDM2MEYzRiAvKiBXZWJO
dW1iZXIuaCAqLzsgfTsKIAkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzNFMENGMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmggKi87IH07CiAJCUJDMzNFMEQyMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzNFMEQwMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcCAqLzsgfTsKQEAgLTY3MCw2ICs2NzIsOCBAQAogCQlCQzJFNkU3QzExNDE5NzBDMDBB
NjNCMUUgLyogV29ya0l0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29y
a0l0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTZFN0QxMTQxOTcwQzAw
QTYzQjFFIC8qIFdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFNkU3
RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdvcmtRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzMw
NjVDMzEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlTW9kZWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0RENjcxMjM4NDY0NjAwMzYwRjNGIC8qIFdlYk51bWJl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOdW1iZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzM0UwQ0YxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMzRTBEMDEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTksNiArMTAy
Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNkZBMDFE
MTFFMTUyNjMwMERCMTM3MSAvKiBXZWJQcm9jZXNzTWFpbk1hYy5tbSAqLywKKwkJCQlCQzMwNjVD
MzEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTExMDIsNiArMTEwNyw3IEBA
CiAJCQkJMUE2RjlGOEUxMUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJ
MEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhQmFzZS5oICovLAogCQkJCTc2
MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5nTGV2ZWwuaCAqLywKKwkJCQlC
QzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovLAogCQkJCUJDNjQ2OTZE
MTFEQkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgKi8sCiAJCQkJQkM2NDY5NkUx
MURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJsZUFycmF5LmggKi8sCiAJCQkJQkNCQ0IwQ0MxMjE1
RTMzQTAwREU1OUNBIC8qIEltbXV0YWJsZURpY3Rpb25hcnkuY3BwICovLApAQCAtMTkxOCw2ICsx
OTI0LDcgQEAKIAkJCQkxQThFRkE3MTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RUZERkExMjUzQ0FBMjAwRjcwNjdGIC8qIERh
dGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTA5OTgwMTI1NkE5ODIwMDA4Mzc1
NiAvKiBXS1N0cmluZ1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMzA2NUZBMTI1OTM0
NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyMTIsNiArMjIx
OSw3IEBACiAJCQkJMUE4RUY5NkUxMjUyQUY2QjAwRjcwNjdGIC8qIFBsdWdpbkNvbnRyb2xsZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFRkE3MDEyNTJC
ODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUE4RUZERkUxMjUzQ0I2RTAwRjcwNjdGIC8qIERhdGFSZWZlcmVuY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkMzMDY1QzQxMjU5MkY4OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBAIFdlYlByb2Nlc3MmIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpCiAKIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgIDogbV9pbkRpZENsb3NlKGZhbHNl
KQorICAgICwgbV9oYXNTZXRDYWNoZU1vZGVsKGZhbHNlKQorICAgICwgbV9jYWNoZU1vZGVsKENh
Y2hlTW9kZWxEb2N1bWVudFZpZXdlcikKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
ICYmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1B
Q0hfUE9SVF9OVUxMKQogI2VuZGlmCkBAIC0xODEsNiArMTgzLDIwIEBAIHZvaWQgV2ViUHJvY2Vz
czo6YWRkVmlzaXRlZExpbmsoV2ViQ29yZToKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZTo6QWRkVmlzaXRlZExpbmssIDAsIENvcmVJUEM6OkluKGxpbmtIYXNo
KSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit7CisgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6cmVt
b3ZlVGVzdFJ1bm5lck92ZXJyaWRlcygpOworCisgICAgaWYgKCFtX2hhc1NldENhY2hlTW9kZWwg
fHwgc3RhdGljX2Nhc3Q8Q2FjaGVNb2RlbD4oc3RvcmUuY2FjaGVNb2RlbCkgIT0gbV9jYWNoZU1v
ZGVsKSB7CisgICAgICAgIG1faGFzU2V0Q2FjaGVNb2RlbCA9IHRydWU7CisgICAgICAgIG1fY2Fj
aGVNb2RlbCA9IHN0YXRpY19jYXN0PENhY2hlTW9kZWw+KHN0b3JlLmNhY2hlTW9kZWwpOworICAg
ICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwobV9jYWNoZU1vZGVsKTsKKyAgICB9CisKKyAgICBm
b3IgKFdlYlByb2Nlc3M6OnBhZ2VzX2NvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXNfYmVnaW4oKSwg
ZW5kID0gcGFnZXNfZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgKCppdCktPnByZWZl
cmVuY2VzRGlkQ2hhbmdlKHN0b3JlKTsgCit9CisKIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBh
Z2UodWludDY0X3QgcGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VNYXAuZ2V0KHBh
Z2VJRCkuZ2V0KCk7CkBAIC0yMDksNiArMjI1LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVtb3Zl
V2ViUGFnZSh1aW50NjRfdCAKICAgICAgICAgc2h1dGRvd24oKTsKIH0KIAorV2ViUHJvY2Vzczo6
cGFnZXNfY29uc3RfaXRlcmF0b3IgV2ViUHJvY2Vzczo6cGFnZXNfYmVnaW4oKQoreworICAgIHJl
dHVybiBtX3BhZ2VNYXAuYmVnaW4oKS52YWx1ZXMoKTsKK30KKworV2ViUHJvY2Vzczo6cGFnZXNf
Y29uc3RfaXRlcmF0b3IgV2ViUHJvY2Vzczo6cGFnZXNfZW5kKCkKK3sKKyAgICByZXR1cm4gbV9w
YWdlTWFwLmVuZCgpLnZhbHVlcygpOworfQorCiBib29sIFdlYlByb2Nlc3M6OmlzU2VwYXJhdGVQ
cm9jZXNzKCkgY29uc3QKIHsKICAgICAvLyBJZiB3ZSdyZSBydW5uaW5nIG9uIHRoZSBtYWluIHJ1
biBsb29wLCB3ZSBhc3N1bWUgdGhhdCB3ZSdyZSBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuCkBAIC0y
NTAsMTEgKzI3NiwxOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
CiAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQobGlu
a0hhc2hlcykpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
dmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQobGlua0hhc2hlcyk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6
QWxsVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQ6CiAgICAgICAgICAgICAgICAgYWxsVmlzaXRlZExp
bmtTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAK
KworICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6UHJlZmVyZW5jZXNEaWRDaGFu
Z2U6IHsKKyAgICAgICAgICAgICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlOworICAgICAg
ICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHN0b3JlKSkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBwcmVmZXJlbmNlc0Rp
ZENoYW5nZShzdG9yZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6TG9hZEluamVjdGVkQnVuZGxlOiB7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdGg7CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFdlYlByb2Nlc3NfaAog
I2RlZmluZSBXZWJQcm9jZXNzX2gKIAorI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKQEAgLTQ5LDYgKzUwLDEwIEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
OwogCiBjbGFzcyBXZWJQcm9jZXNzIDogQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1
YmxpYzoKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+IFdl
YlBhZ2VNYXA7CisgICAgdHlwZWRlZiBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvcjo6VmFsdWVz
IHBhZ2VzX2NvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2Vi
RnJhbWUqPiBXZWJGcmFtZU1hcDsKKwogICAgIHN0YXRpYyBXZWJQcm9jZXNzJiBzaGFyZWQoKTsK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBS
dW5Mb29wKiBydW5Mb29wKTsKQEAgLTYwLDYgKzY1LDkgQEAgcHVibGljOgogICAgIFdlYlBhZ2Uq
IGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKKyAg
ICBwYWdlc19jb25zdF9pdGVyYXRvciBwYWdlc19iZWdpbigpOworICAgIHBhZ2VzX2NvbnN0X2l0
ZXJhdG9yIHBhZ2VzX2VuZCgpOworCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQogCiAgICAgYm9vbCBp
c1NlcGFyYXRlUHJvY2VzcygpIGNvbnN0OwpAQCAtOTIsMTQgKzEwMCwyMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYp
OwogICAgIHZvaWQgdmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkxpbmtIYXNoPiYgbGlua0hhc2hlcyk7CiAgICAgdm9pZCBhbGxWaXNpdGVkTGlua1N0YXRlQ2hh
bmdlZCgpOwotICAgIAorCisgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCB1cGRhdGVTZXR0aW5nc0Zyb21QcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2b2lkIHBsYXRmb3JtVXBk
YXRlU2V0dGluZ3NGcm9tUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CisgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CisKICAgICAv
LyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQpOwogCiAgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4gPiBtX3Bh
Z2VNYXA7CisgICAgV2ViUGFnZU1hcCBtX3BhZ2VNYXA7CisgICAgV2ViRnJhbWVNYXAgbV9mcmFt
ZU1hcDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKICAg
ICBib29sIG1faW5EaWRDbG9zZTsKQEAgLTEwOSwxMSArMTIzLDEzIEBAIHByaXZhdGU6CiAgICAg
Ly8gRklYTUU6IFRoZSB2aXNpdGVkIGxpbmsgdGFibGUgc2hvdWxkIG5vdCBiZSBwZXIgcHJvY2Vz
cy4KICAgICBWaXNpdGVkTGlua1RhYmxlIG1fdmlzaXRlZExpbmtUYWJsZTsKIAorICAgIGJvb2wg
bV9oYXNTZXRDYWNoZU1vZGVsOworICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOworCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShNQUMpCiAgICAgbWFjaF9w
b3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CiAjZW5kaWYKIAotICAgIEhhc2hN
YXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDY4OTg3KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0V2ZW50SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CkBA
IC02NywxMSArNjYsNiBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1ZhbHVlLmg+CiAKLSNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0vLyBGSVhN
RTogVGhpcyBpcyBjdXJyZW50bHkgbWFjIHNwZWNpZmljIQotI2luY2x1ZGUgIk1hY2hQb3J0Lmgi
Ci0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmg+CiAjZW5kaWYKQEAgLTExNywyMyArMTExLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ29udHJv
bGxlckNsaWVudCA9IG5ldyBXZWJCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQodGhpcyk7CiAg
ICAgbV9wYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKIAotICAgIG1fcGFn
ZS0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQocGFyYW1ldGVycy5zdG9yZS5qYXZh
U2NyaXB0RW5hYmxlZCk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRMb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkocGFyYW1ldGVycy5zdG9yZS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwot
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0UGx1Z2luc0VuYWJsZWQocGFyYW1ldGVycy5zdG9y
ZS5wbHVnaW5zRW5hYmxlZCk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQocGFyYW1ldGVycy5zdG9yZS5vZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQpOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0TG9jYWxTdG9y
YWdlRW5hYmxlZChwYXJhbWV0ZXJzLnN0b3JlLmxvY2FsU3RvcmFnZUVuYWJsZWQpOwotICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0WFNTQXVkaXRvckVuYWJsZWQocGFyYW1ldGVycy5zdG9yZS54
c3NBdWRpdG9yRW5hYmxlZCk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHBhcmFtZXRlcnMuc3RvcmUuZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCk7Ci0g
ICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5pbXVtRm9udFNpemUocGFyYW1ldGVycy5zdG9y
ZS5taW5pbXVtRm9udFNpemUpOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0TWluaW11bUxv
Z2ljYWxGb250U2l6ZShwYXJhbWV0ZXJzLnN0b3JlLm1pbmltdW1Mb2dpY2FsRm9udFNpemUpOwot
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0RGVmYXVsdEZvbnRTaXplKHBhcmFtZXRlcnMuc3Rv
cmUuZGVmYXVsdEZvbnRTaXplKTsKLSAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldERlZmF1bHRG
aXhlZEZvbnRTaXplKHBhcmFtZXRlcnMuc3RvcmUuZGVmYXVsdEZpeGVkRm9udFNpemUpOwotICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U3RhbmRhcmRGb250RmFtaWx5KHBhcmFtZXRlcnMuc3Rv
cmUuc3RhbmRhcmRGb250RmFtaWx5KTsKLSAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEN1cnNp
dmVGb250RmFtaWx5KHBhcmFtZXRlcnMuc3RvcmUuY3Vyc2l2ZUZvbnRGYW1pbHkpOwotICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0RmFudGFzeUZvbnRGYW1pbHkocGFyYW1ldGVycy5zdG9yZS5m
YW50YXN5Rm9udEZhbWlseSk7Ci0gICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRGaXhlZEZvbnRG
YW1pbHkocGFyYW1ldGVycy5zdG9yZS5maXhlZEZvbnRGYW1pbHkpOwotICAgIG1fcGFnZS0+c2V0
dGluZ3MoKS0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShwYXJhbWV0ZXJzLnN0b3JlLnNhbnNTZXJp
ZkZvbnRGYW1pbHkpOwotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0U2VyaWZGb250RmFtaWx5
KHBhcmFtZXRlcnMuc3RvcmUuc2VyaWZGb250RmFtaWx5KTsKKyAgICBwcmVmZXJlbmNlc0RpZENo
YW5nZShwYXJhbWV0ZXJzLnN0b3JlKTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAKICAgICBtX3BhZ2UtPnNl
dEdyb3VwTmFtZSgiV2ViS2l0Mkdyb3VwIik7CkBAIC02NzIsOCArNjUwLDYgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdAogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewotICAgIFdl
YlByZWZlcmVuY2VzU3RvcmU6OnJlbW92ZVRlc3RSdW5uZXJPdmVycmlkZXMoKTsKLQogICAgIG1f
cGFnZS0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoc3RvcmUuamF2YVNjcmlwdEVu
YWJsZWQpOwogICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KHN0b3JlLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7CiAgICAgbV9wYWdlLT5zZXR0aW5n
cygpLT5zZXRQbHVnaW5zRW5hYmxlZChzdG9yZS5wbHVnaW5zRW5hYmxlZCk7CkBAIC02ODEsNiAr
NjU3LDEwIEBAIHZvaWQgV2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QKICAgICBt
X3BhZ2UtPnNldHRpbmdzKCktPnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUubG9jYWxTdG9y
YWdlRW5hYmxlZCk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRYU1NBdWRpdG9yRW5hYmxl
ZChzdG9yZS54c3NBdWRpdG9yRW5hYmxlZCk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmZyYW1lRmxhdHRlbmluZ0VuYWJsZWQpOworICAg
IG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0TWluaW11bUZvbnRTaXplKHN0b3JlLm1pbmltdW1Gb250
U2l6ZSk7CisgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXpl
KHN0b3JlLm1pbmltdW1Mb2dpY2FsRm9udFNpemUpOworICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+
c2V0RGVmYXVsdEZvbnRTaXplKHN0b3JlLmRlZmF1bHRGb250U2l6ZSk7CisgICAgbV9wYWdlLT5z
ZXR0aW5ncygpLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShzdG9yZS5kZWZhdWx0Rml4ZWRGb250
U2l6ZSk7CiAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoc3Rv
cmUuc3RhbmRhcmRGb250RmFtaWx5KTsKICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEN1cnNp
dmVGb250RmFtaWx5KHN0b3JlLmN1cnNpdmVGb250RmFtaWx5KTsKICAgICBtX3BhZ2UtPnNldHRp
bmdzKCktPnNldEZhbnRhc3lGb250RmFtaWx5KHN0b3JlLmZhbnRhc3lGb250RmFtaWx5KTsKSW5k
ZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDY4OTg3KQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Miw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIERyYXdpbmdBcmVhKiBkcmF3aW5nQXJlYSgpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhd2luZ0FyZWEuZ2V0KCk7IH0KIAorICAgIHZvaWQgcHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworCiAgICAgLy8gLS0gQ2Fs
bGVkIGJ5IHRoZSBEcmF3aW5nQXJlYS4KICAgICAvLyBGSVhNRTogV2UgY291bGQgZ2VuZXJpY2l6
ZSB0aGVzZSBpbnRvIGEgRHJhd2luZ0FyZWEgY2xpZW50IGludGVyZmFjZS4gV291bGQgdGhhdCBi
ZSBiZW5lZmljaWFsPwogICAgIHZvaWQgZHJhd1JlY3QoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpAQCAtMTY3LDYgKzE2OSw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAorICAg
IHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQoY29uc3Qg
V2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOwogICAgIGJvb2wgcGVyZm9ybURlZmF1bHRCZWhhdmlv
ckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIApAQCAtMTk5LDggKzIwMyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJj
ZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwotICAg
IHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uKTsKICAgICB2b2lk
IHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiA2ODk4NykK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDggKzQ4LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAKICAgICBH
ZXRTb3VyY2VGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQog
Ci0gICAgUHJlZmVyZW5jZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlKQotCiAgICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdURjo6U3RyaW5nIHNjcmlwdCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIAogICAgIFNldEN1c3RvbVVzZXJBZ2VudChXVEY6OlN0cmlu
ZyBjdXN0b21Vc2VyQWdlbnQpCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNz
TWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKyNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uu
aD4KKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyB1aW50NjRf
dCBtZW1vcnlTaXplKCkKK3sKKyAgICBzdGF0aWMgaG9zdF9iYXNpY19pbmZvX2RhdGFfdCBob3N0
SW5mbzsKKworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsKKyAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlLCBeKCkgeworICAgICAgICBtYWNoX3BvcnRfdCBob3N0ID0gbWFjaF9ob3N0X3Nl
bGYoKTsKKyAgICAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IEhPU1RfQkFTSUNf
SU5GT19DT1VOVDsKKyAgICAgICAga2Vybl9yZXR1cm5fdCByID0gaG9zdF9pbmZvKGhvc3QsIEhP
U1RfQkFTSUNfSU5GTywgKGhvc3RfaW5mb190KSZob3N0SW5mbywgJmNvdW50KTsKKyAgICAgICAg
bWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwgaG9zdCk7CisKKyAgICAgICAg
aWYgKHIgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICAgICAgTE9HX0VSUk9SKCIlcyA6IGhvc3Rf
aW5mbyglZCkgOiAlcy5cbiIsIF9fRlVOQ1RJT05fXywgciwgbWFjaF9lcnJvcl9zdHJpbmcocikp
OworICAgIH0pOworCisgICAgcmV0dXJuIGhvc3RJbmZvLm1heF9tZW07Cit9CisKK3N0YXRpYyB1
bnNpZ25lZCBsb25nIGxvbmcgdm9sdW1lRnJlZVNpemUoTlNTdHJpbmcgKnBhdGgpCit7CisgICAg
TlNEaWN0aW9uYXJ5ICpmaWxlU3lzdGVtQXR0cmlidXRlc0RpY3Rpb25hcnkgPSBbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGF0dHJpYnV0ZXNPZkZpbGVTeXN0ZW1Gb3JQYXRoOnBhdGgg
ZXJyb3I6TlVMTF07CisgICAgcmV0dXJuIFtbZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpOU0ZpbGVTeXN0ZW1GcmVlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1ZhbHVl
XTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2Rl
bCBjYWNoZU1vZGVsKQoreworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbnN1cmxDYWNoZURpcmVj
dG9yeShBZG9wdE5TLCAoTlNTdHJpbmcgKilXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rvcnko
KSk7CisgICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQorICAgICAgICBuc3VybENhY2hlRGly
ZWN0b3J5LmFkb3B0TlMoTlNIb21lRGlyZWN0b3J5KCkpOworCisgICAgLy8gQXMgYSBmdWRnZSBm
YWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQgYnl0
ZSAKKyAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkgdG8gYSBtZWdhYnl0ZSBib3Vu
ZGFyeS4KKyAgICB1aW50NjRfdCBtZW1TaXplID0gbWVtb3J5U2l6ZSgpIC8gMTAyNCAvIDEwMDA7
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpc2tGcmVlU2l6ZSA9IHZvbHVtZUZyZWVTaXplKG5z
dXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpIC8gMTAyNCAvIDEwMDA7CisgICAgTlNVUkxDYWNoZSAq
bnN1cmxDYWNoZSA9IFtOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXTsKKworICAgIHVuc2lnbmVk
IGNhY2hlVG90YWxDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNaW5EZWFkQ2FwYWNp
dHkgPSAwOworICAgIHVuc2lnbmVkIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gMDsKKyAgICBkb3Vi
bGUgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDA7CisKKyAgICB1bnNpZ25lZCBw
YWdlQ2FjaGVDYXBhY2l0eSA9IDA7CisKKyAgICBOU1VJbnRlZ2VyIG5zdXJsQ2FjaGVNZW1vcnlD
YXBhY2l0eSA9IDA7CisgICAgTlNVSW50ZWdlciBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gMDsK
KworICAgIHN3aXRjaCAoY2FjaGVNb2RlbCkgeworICAgIGNhc2UgQ2FjaGVNb2RlbERvY3VtZW50
Vmlld2VyOiB7CisgICAgICAgIC8vIFBhZ2UgY2FjaGUgY2FwYWNpdHkgKGluIHBhZ2VzKQorICAg
ICAgICBwYWdlQ2FjaGVDYXBhY2l0eSA9IDA7CisKKyAgICAgICAgLy8gT2JqZWN0IGNhY2hlIGNh
cGFjaXRpZXMgKGluIGJ5dGVzKQorICAgICAgICBpZiAobWVtU2l6ZSA+PSAyMDQ4KQorICAgICAg
ICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gOTYgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxz
ZSBpZiAobWVtU2l6ZSA+PSAxNTM2KQorICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0g
NjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSAxMDI0KQorICAg
ICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gMzIgKiAxMDI0ICogMTAyNDsKKyAgICAgICAg
ZWxzZSBpZiAobWVtU2l6ZSA+PSA1MTIpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkg
PSAxNiAqIDEwMjQgKiAxMDI0OworCisgICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gMDsK
KyAgICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSAwOworCisgICAgICAgIC8vIEZvdW5kYXRp
b24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAgICAgbnN1cmxDYWNoZU1l
bW9yeUNhcGFjaXR5ID0gMDsKKworICAgICAgICAvLyBGb3VuZGF0aW9uIGRpc2sgY2FjaGUgY2Fw
YWNpdHkgKGluIGJ5dGVzKQorICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gW25zdXJs
Q2FjaGUgZGlza0NhcGFjaXR5XTsKKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
YWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyOiB7CisgICAgICAgIC8vIFBhZ2UgY2FjaGUgY2FwYWNp
dHkgKGluIHBhZ2VzKQorICAgICAgICBpZiAobWVtU2l6ZSA+PSAxMDI0KQorICAgICAgICAgICAg
cGFnZUNhY2hlQ2FwYWNpdHkgPSAzOworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikK
KyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMjsKKyAgICAgICAgZWxzZSBpZiAobWVt
U2l6ZSA+PSAyNTYpCisgICAgICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSA9IDE7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKKworICAgICAgICAvLyBP
YmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCisgICAgICAgIGlmIChtZW1TaXplID49
IDIwNDgpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIDEwMjQgKiAxMDI0
OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDE1MzYpCisgICAgICAgICAgICBjYWNoZVRv
dGFsQ2FwYWNpdHkgPSA2NCAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXpl
ID49IDEwMjQpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAx
MDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikKKyAgICAgICAgICAgIGNhY2hl
VG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisKKyAgICAgICAgY2FjaGVNaW5EZWFk
Q2FwYWNpdHkgPSBjYWNoZVRvdGFsQ2FwYWNpdHkgLyA4OworICAgICAgICBjYWNoZU1heERlYWRD
YXBhY2l0eSA9IGNhY2hlVG90YWxDYXBhY2l0eSAvIDQ7CisKKyAgICAgICAgLy8gRm91bmRhdGlv
biBtZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQorICAgICAgICBpZiAobWVtU2l6ZSA+
PSAyMDQ4KQorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gNCAqIDEwMjQg
KiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDEwMjQpCisgICAgICAgICAgICBu
c3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAyICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2Ug
aWYgKG1lbVNpemUgPj0gNTEyKQorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5
ID0gMSAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBuc3VybENhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAgICAgIDUxMiAqIDEwMjQ7IAorCisgICAgICAgIC8vIEZvdW5kYXRp
b24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAgIGlmIChkaXNrRnJlZVNp
emUgPj0gMTYzODQpCisgICAgICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gNTAgKiAx
MDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXplID49IDgxOTIpCisgICAg
ICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gNDAgKiAxMDI0ICogMTAyNDsKKyAgICAg
ICAgZWxzZSBpZiAoZGlza0ZyZWVTaXplID49IDQwOTYpCisgICAgICAgICAgICBuc3VybENhY2hl
RGlza0NhcGFjaXR5ID0gMzAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDIwICogMTAyNCAqIDEwMjQ7CisKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyOiB7Cisg
ICAgICAgIC8vIFBhZ2UgY2FjaGUgY2FwYWNpdHkgKGluIHBhZ2VzKQorICAgICAgICAvLyAoUmVz
ZWFyY2ggaW5kaWNhdGVzIHRoYXQgdmFsdWUgLyBwYWdlIGRyb3BzIHN1YnN0YW50aWFsbHkgYWZ0
ZXIgMyBwYWdlcy4pCisgICAgICAgIGlmIChtZW1TaXplID49IDIwNDgpCisgICAgICAgICAgICBw
YWdlQ2FjaGVDYXBhY2l0eSA9IDU7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gMTAyNCkK
KyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5ID0gNDsKKyAgICAgICAgZWxzZSBpZiAobWVt
U2l6ZSA+PSA1MTIpCisgICAgICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSA9IDM7CisgICAgICAg
IGVsc2UgaWYgKG1lbVNpemUgPj0gMjU2KQorICAgICAgICAgICAgcGFnZUNhY2hlQ2FwYWNpdHkg
PSAyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSA9IDE7CisK
KyAgICAgICAgLy8gT2JqZWN0IGNhY2hlIGNhcGFjaXRpZXMgKGluIGJ5dGVzKQorICAgICAgICAv
LyAoVGVzdGluZyBpbmRpY2F0ZXMgdGhhdCB2YWx1ZSAvIE1CIGRlcGVuZHMgaGVhdmlseSBvbiBj
b250ZW50IGFuZAorICAgICAgICAvLyBicm93c2luZyBwYXR0ZXJuLiBFdmVuIGdyb3d0aCBhYm92
ZSAxMjhNQiBjYW4gaGF2ZSBzdWJzdGFudGlhbCAKKyAgICAgICAgLy8gdmFsdWUgLyBNQiBmb3Ig
c29tZSBjb250ZW50IC8gYnJvd3NpbmcgcGF0dGVybnMuKQorICAgICAgICBpZiAobWVtU2l6ZSA+
PSAyMDQ4KQorICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gMTI4ICogMTAyNCAqIDEw
MjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gMTUzNikKKyAgICAgICAgICAgIGNhY2hl
VG90YWxDYXBhY2l0eSA9IDk2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNp
emUgPj0gMTAyNCkKKyAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDY0ICogMTAyNCAq
IDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gNTEyKQorICAgICAgICAgICAgY2Fj
aGVUb3RhbENhcGFjaXR5ID0gMzIgKiAxMDI0ICogMTAyNDsKKworICAgICAgICBjYWNoZU1pbkRl
YWRDYXBhY2l0eSA9IGNhY2hlVG90YWxDYXBhY2l0eSAvIDQ7CisgICAgICAgIGNhY2hlTWF4RGVh
ZENhcGFjaXR5ID0gY2FjaGVUb3RhbENhcGFjaXR5IC8gMjsKKworICAgICAgICAvLyBUaGlzIGNv
ZGUgaXMgaGVyZSB0byBhdm9pZCBhIFBMVCByZWdyZXNzaW9uLiBXZSBjYW4gcmVtb3ZlIGl0IGlm
IHdlCisgICAgICAgIC8vIGNhbiBwcm92ZSB0aGF0IHRoZSBvdmVyYWxsIHN5c3RlbSBnYWluIHdv
dWxkIGp1c3RpZnkgdGhlIHJlZ3Jlc3Npb24uCisgICAgICAgIGNhY2hlTWF4RGVhZENhcGFjaXR5
ID0gbWF4KDI0dSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHkpOworCisgICAgICAgIGRlYWREZWNvZGVk
RGF0YURlbGV0aW9uSW50ZXJ2YWwgPSA2MDsKKworICAgICAgICAvLyBGb3VuZGF0aW9uIG1lbW9y
eSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAgIC8vIChUaGVzZSB2YWx1ZXMgYXJl
IHNtYWxsIGJlY2F1c2UgV2ViQ29yZSBkb2VzIG1vc3QgY2FjaGluZyBpdHNlbGYuKQorICAgICAg
ICBpZiAobWVtU2l6ZSA+PSAxMDI0KQorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFj
aXR5ID0gNCAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikK
KyAgICAgICAgICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDIgKiAxMDI0ICogMTAyNDsK
KyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSAyNTYpCisgICAgICAgICAgICBuc3VybENhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAxICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAgNTEyICogMTAyNDsgCisKKyAgICAg
ICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAgICAg
aWYgKGRpc2tGcmVlU2l6ZSA+PSAxNjM4NCkKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSAxNzUgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXpl
ID49IDgxOTIpCisgICAgICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gMTUwICogMTAy
NCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSA0MDk2KQorICAgICAg
ICAgICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDEyNSAqIDEwMjQgKiAxMDI0OworICAgICAg
ICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0gMjA0OCkKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVE
aXNrQ2FwYWNpdHkgPSAxMDAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoZGlza0Zy
ZWVTaXplID49IDEwMjQpCisgICAgICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gNzUg
KiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbnN1cmxDYWNoZURpc2tD
YXBhY2l0eSA9IDUwICogMTAyNCAqIDEwMjQ7CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH07CisKKyAgICAv
LyBEb24ndCBzaHJpbmsgYSBiaWcgZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBj
aHVybi4KKyAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gbWF4KG5zdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHksIFtuc3VybENhY2hlIGRpc2tDYXBhY2l0eV0pOworCisgICAgY2FjaGUoKS0+c2V0Q2Fw
YWNpdGllcyhjYWNoZU1pbkRlYWRDYXBhY2l0eSwgY2FjaGVNYXhEZWFkQ2FwYWNpdHksIGNhY2hl
VG90YWxDYXBhY2l0eSk7CisgICAgY2FjaGUoKS0+c2V0RGVhZERlY29kZWREYXRhRGVsZXRpb25J
bnRlcnZhbChkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsKTsKKyAgICBwYWdlQ2FjaGUo
KS0+c2V0Q2FwYWNpdHkocGFnZUNhY2hlQ2FwYWNpdHkpOworICAgIFtuc3VybENhY2hlIHNldE1l
bW9yeUNhcGFjaXR5Om5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eV07CisgICAgW25zdXJsQ2FjaGUg
c2V0RGlza0NhcGFjaXR5Om5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHldOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQoreworICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbChDYWNoZU1vZGVs
IGNhY2hlTW9kZWwpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJL
aXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk3LDYgKzM5NywxMCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxT
aGFyZWRcQ2FjaGVNb2RlbC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXERyYXdpbmdBcmVhQmFzZS5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTEwMzksNiArMTA0MywxMCBAQAogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdl
YlByb2Nlc3Ncd2luXFdlYlByb2Nlc3NNYWluV2luLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXHdpblxXZWJQ
cm9jZXNzV2luLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KIAkJ
CTxGaWx0ZXINCiAJCQkJTmFtZT0iSW5qZWN0ZWRCdW5kbGUiDQpJbmRleDogV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
Njg5ODkpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMC0xMC0wMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRv
IHNldCB0aGUgQ2FjaGVNb2RlbCBpbiBXZWJraXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA2NgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFj
L0FwcERlbGVnYXRlLm06CisgICAgICAgICgtW0Jyb3dzZXJBcHBEZWxlZ2F0ZSBpbml0XSk6IE9w
dCBtaW5pYnJvd3NlciBpbnRvCisgICAgICAgIGEgUHJpbWFyeVdlYkJyb3dzZXIgY2FjaGUgbW9k
ZWwuCisKIDIwMTAtMTAtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHRoZSBhYmlsaXR5IHRvIGp1bXAgdG8gYSBzcGVjaWZpYyB0ZXN0LgpJ
bmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHJldmlzaW9u
IDY4OTg3KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHdv
cmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNiBAQCAtIChpZClpbml0CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzczsKIAotICAgICAgICBXS0NvbnRleHRSZWYgdGhyZWFkQ29udGV4dCA9IFdL
Q29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQoKTsKICAgICAgICAgV0tDb250ZXh0SGlzdG9y
eUNsaWVudCBoaXN0b3J5Q2xpZW50ID0gewogICAgICAgICAgICAgMCwKICAgICAgICAgICAgIHNl
bGYsCkBAIC0xMjgsOCArMTI3LDEzIEBAIC0gKGlkKWluaXQKICAgICAgICAgICAgIGRpZFVwZGF0
ZUhpc3RvcnlUaXRsZSwKICAgICAgICAgICAgIHBvcHVsYXRlVmlzaXRlZExpbmtzCiAgICAgICAg
IH07CisKKyAgICAgICAgV0tDb250ZXh0UmVmIHRocmVhZENvbnRleHQgPSBXS0NvbnRleHRHZXRT
aGFyZWRUaHJlYWRDb250ZXh0KCk7CiAgICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQo
dGhyZWFkQ29udGV4dCwgJmhpc3RvcnlDbGllbnQpOwogICAgIAorICAgICAgICBXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzID0gV0tDb250ZXh0R2V0UHJlZmVyZW5jZXModGhyZWFkQ29udGV4
dCk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRDYWNoZU1vZGVsKHByZWZlcmVuY2VzLCBrV0tQ
cmVmZXJlbmNlc0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nlcik7CisKICAgICAgICAgdGhyZWFk
UGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZSh0aHJlYWRDb250ZXh0KTsKICAg
ICAgICAgV0tSZWxlYXNlKHRocmVhZENvbnRleHQpOwogCkBAIC0xNDYsNyArMTUwLDEwIEBAIC0g
KGlkKWluaXQKICAgICAgICAgfTsKICAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQocHJvY2Vzc0NvbnRleHQsICZidW5kbGVDbGllbnQpOwogICAgICAgICBXS0NvbnRleHRT
ZXRIaXN0b3J5Q2xpZW50KHByb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNsaWVudCk7Ci0gICAgICAg
IAorCisgICAgICAgIHByZWZlcmVuY2VzID0gV0tDb250ZXh0R2V0UHJlZmVyZW5jZXMocHJvY2Vz
c0NvbnRleHQpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Q2FjaGVNb2RlbChwcmVmZXJlbmNl
cywga1dLUHJlZmVyZW5jZXNDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOworCiAgICAgICAg
IHByb2Nlc3NQYWdlTmFtZXNwYWNlID0gV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKHByb2Nlc3NDb250
ZXh0KTsKICAgICAgICAgV0tSZWxlYXNlKHByb2Nlc3NDb250ZXh0KTsKIAo=
</data>
<flag name="review"
          id="59303"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69597</attachid>
            <date>2010-10-03 16:24:33 -0700</date>
            <delta_ts>2010-10-04 10:11:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>take2.diff</filename>
            <type>text/plain</type>
            <size>34094</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODk4OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMTAtMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJp
bGl0eSB0byBzZXQgdGhlIENhY2hlTW9kZWwgaW4gV2Via2l0MgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNjYKKworICAgICAgICBBZGQgV0tDb250
ZXh0IGZ1bmN0aW9uIHRvIHNldCB0aGUgY2FjaGUgbW9kZWwgZm9yIHRoZSBjb250ZXh0LgorCisg
ICAgICAgICogU2hhcmVkL0NhY2hlTW9kZWwuaDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0Nv
cmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQ2FjaGVNb2RlbCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvUmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldENhY2hlTW9kZWwpOgorICAgICAgICAoV0tD
b250ZXh0R2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OmVuc3VyZVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZXRDYWNo
ZU1vZGVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0OjpjYWNoZU1vZGVsKToKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldENhY2hlTW9kZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc01hYy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Om1lbW9yeVNpemUpOgorICAg
ICAgICAoV2ViS2l0Ojp2b2x1bWVGcmVlU2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnBsYXRmb3JtU2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9XZWJQ
cm9jZXNzUXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZv
cm1TZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2lu
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2Fj
aGVNb2RlbCk6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDEwLTEwLTAzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1dlYktpdDIu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgSEVBREVSUyArPSBcCiAgICAg
U2hhcmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBcCiAg
ICAgU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oIFwKICAg
ICBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIFwKKyAgICBT
aGFyZWQvQ2FjaGVNb2RlbC5oIFwKICAgICBTaGFyZWQvRHJhd2luZ0FyZWFCYXNlLmggXAogICAg
IFNoYXJlZC9JbW11dGFibGVBcnJheS5oIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFy
eS5oIFwKQEAgLTQxNyw0ICs0MTgsNSBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9X
ZWJDb250ZXh0UXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NNYWluUXQuY3Bw
IFwKKyAgICBXZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAgXAogICAgICQkV0VCS0lUMl9H
RU5FUkFURURfU09VUkNFUwpJbmRleDogV2ViS2l0Mi9TaGFyZWQvQ2FjaGVNb2RlbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuaAkocmV2aXNpb24gMCkKKysrIFdl
YktpdDIvU2hhcmVkL0NhY2hlTW9kZWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQ2FjaGVNb2RlbF9oCisjZGVmaW5lIENhY2hlTW9kZWxfaAor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBDYWNoZU1vZGVsIHsKKyAgICBDYWNoZU1vZGVs
RG9jdW1lbnRWaWV3ZXIsCisgICAgQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciwKKyAgICBDYWNo
ZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gQ2FjaGVNb2RlbF9oCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9y
dC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
Q29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oCShyZXZpc2lvbiA2ODk4NykK
KysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBlbnVtIEtpbmQgewogICAgIExvYWRJ
bmplY3RlZEJ1bmRsZSwKICAgICBTZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LAogICAgIFNl
dFNob3VsZFRyYWNrVmlzaXRlZExpbmtzLAorICAgIFNldENhY2hlTW9kZWwsCiAgICAgQ3JlYXRl
LAogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50LAogI2lmIFBMQVRGT1JNKE1B
QykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA2ODk4NykKKysrIFdl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSw3IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2MKICAgICA6IG1f
cHJvY2Vzc01vZGVsKHByb2Nlc3NNb2RlbCkKICAgICAsIG1faW5qZWN0ZWRCdW5kbGVQYXRoKGlu
amVjdGVkQnVuZGxlUGF0aCkKICAgICAsIG1fdmlzaXRlZExpbmtQcm92aWRlcih0aGlzKQorICAg
ICwgbV9jYWNoZU1vZGVsKENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcikKICNpZiBQTEFURk9STShX
SU4pCiAgICAgLCBtX3Nob3VsZFBhaW50TmF0aXZlQ29udHJvbHModHJ1ZSkKICNlbmRpZgpAQCAt
MTI2LDYgKzEyNyw3IEBAIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlV2ViUHJvY2VzcygpCiAgICAg
bV9wcm9jZXNzID0gV2ViUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCgpLmdldFdlYlByb2Nlc3ModGhp
cyk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlNldFNob3VsZFRy
YWNrVmlzaXRlZExpbmtzLCAwLCBDb3JlSVBDOjpJbihtX2hpc3RvcnlDbGllbnQuc2hvdWxkVHJh
Y2tWaXNpdGVkTGlua3MoKSkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2Fn
ZTo6U2V0Q2FjaGVNb2RlbCwgMCwgQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
Y2FjaGVNb2RlbCkpKTsKIAogICAgIGZvciAoSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBpdCA9
IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0VtcHR5RG9jdW1lbnQuYmVnaW4oKSwgZW5kID0gbV9zY2hl
bWVzVG9SZWdpc3RlckFzRW1wdHlEb2N1bWVudC5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoV2ViUHJvY2Vzc01lc3NhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1l
QXNFbXB0eURvY3VtZW50LCAwLCBDb3JlSVBDOjpJbigqaXQpKTsKQEAgLTI5Nyw3ICsyOTksMTYg
QEAgdm9pZCBXZWJDb250ZXh0OjphZGRWaXNpdGVkTGluayhMaW5rSGFzaAogewogICAgIG1fdmlz
aXRlZExpbmtQcm92aWRlci5hZGRWaXNpdGVkTGluayhsaW5rSGFzaCk7CiB9Ci0gICAgICAgIAor
Cit2b2lkIFdlYkNvbnRleHQ6OnNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQor
eworICAgIG1fY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7CisKKyAgICBpZiAoIWhhc1ZhbGlkUHJv
Y2VzcygpKQorICAgICAgICByZXR1cm47CisgICAgbV9wcm9jZXNzLT5zZW5kKFdlYlByb2Nlc3NN
ZXNzYWdlOjpTZXRDYWNoZU1vZGVsLCAwLCBDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9jYWNoZU1vZGVsKSkpOworfQorCiB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKIHsKICAgICBzd2l0Y2ggKG1lc3Nh
Z2VJRC5nZXQ8V2ViQ29udGV4dE1lc3NhZ2U6OktpbmQ+KCkpIHsKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgJKHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDkgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKik7CiAKKyAgICB2b2lk
IHNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCk7CisgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZU1vZGVsOyB9CisKICNpZiBQTEFURk9STShXSU4pCiAgICAg
dm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOwogI2VuZGlmCkBAIC0xNDAs
NiArMTQzLDggQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdp
c3RlckFzRW1wdHlEb2N1bWVudDsKICAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFJlZlB0cjxBUElP
YmplY3Q+ID4gPiBtX3BlbmRpbmdNZXNzYWdlc1RvUG9zdFRvSW5qZWN0ZWRCdW5kbGU7CiAKKyAg
ICBDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbDsKKwogI2lmIFBMQVRGT1JNKFdJTikKICAgICBib29s
IG1fc2hvdWxkUGFpbnROYXRpdmVDb250cm9sczsKICNlbmRpZgpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZu
ZGVmIFdLQVBJQ2FzdF9oCiAjZGVmaW5lIFdLQVBJQ2FzdF9oCiAKLSNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKKyNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0
LmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtODQsNiArODYsMzUgQEAgaW5saW5lIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSB0b1JlZihX
ZWJDbwogICAgIHJldHVybiB3a1R5cGU7CiB9CiAKK2lubGluZSBDYWNoZU1vZGVsIHRvQ2FjaGVN
b2RlbChXS0NhY2hlTW9kZWwgd2tDYWNoZU1vZGVsKQoreworICAgIHN3aXRjaCAod2tDYWNoZU1v
ZGVsKSB7CisgICAgY2FzZSBrV0tDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI6CisgICAgICAgIHJl
dHVybiBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CisgICAgY2FzZSBrV0tDYWNoZU1vZGVsRG9j
dW1lbnRCcm93c2VyOgorICAgICAgICByZXR1cm4gQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcjsK
KyAgICBjYXNlIGtXS0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjoKKyAgICAgICAgcmV0dXJu
IENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOworfQorCitpbmxp
bmUgV0tDYWNoZU1vZGVsIHRvUmVmKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKK3sKKyAgICBzd2l0
Y2ggKGNhY2hlTW9kZWwpIHsKKyAgICBjYXNlIENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjoKKyAg
ICAgICAgcmV0dXJuIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKKyAgICBjYXNlIENhY2hl
TW9kZWxEb2N1bWVudEJyb3dzZXI6CisgICAgICAgIHJldHVybiBrV0tDYWNoZU1vZGVsRG9jdW1l
bnRCcm93c2VyOworICAgIGNhc2UgQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyOgorICAgICAg
ICByZXR1cm4ga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyOworICAgIH0KKyAgICAKKyAg
ICByZXR1cm4ga1dLQ2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKQpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiA2ODk4NykKKysrIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw2ICsxMDEsMTYgQEAgdm9pZCBXS0NvbnRleHRBZGRWaXNpdGVkTGluayhXS0NvbnRleHRSZQog
ICAgIHRvV0soY29udGV4dFJlZiktPmFkZFZpc2l0ZWRMaW5rKHRvV0sodmlzaXRlZFVSTCktPnN0
cmluZygpKTsKIH0KIAordm9pZCBXS0NvbnRleHRTZXRDYWNoZU1vZGVsKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS0NhY2hlTW9kZWwgY2FjaGVNb2RlbCkKK3sKKyAgICB0b1dLKGNvbnRleHRS
ZWYpLT5zZXRDYWNoZU1vZGVsKHRvQ2FjaGVNb2RlbChjYWNoZU1vZGVsKSk7Cit9CisKK1dLQ2Fj
aGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQor
eworICAgIHJldHVybiB0b1JlZih0b1dLKGNvbnRleHRSZWYpLT5jYWNoZU1vZGVsKCkpOworfQor
CiB2b2lkIF9XS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgcGx1Z2luc0RpcmVjdG9yeSkKIHsKICAgICB0b1dL
KGNvbnRleHRSZWYpLT5zZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeSh0b1dLKHBsdWdpbnNE
aXJlY3RvcnkpLT5zdHJpbmcoKSk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsMTMgQEAKIGV4dGVybiAiQyIgewogI2VuZGlm
CiAKK2VudW0geworICAgIGtXS0NhY2hlTW9kZWxEb2N1bWVudFZpZXdlciA9IDAsCisgICAga1dL
Q2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciA9IDEsCisgICAga1dLQ2FjaGVNb2RlbFByaW1hcnlX
ZWJCcm93c2VyID0gMgorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tDYWNoZU1vZGVsOworCiAvLyBJ
bmplY3RlZCBCdW5kbGUgQ2xpZW50CiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBXS1R5cGVSZWYq
IHJldHVybkRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzgsNiArODUsOSBAQCBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qCiAKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dEFkZFZpc2l0ZWRMaW5rKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1Jl
ZiB2aXNpdGVkVVJMKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tDYWNoZU1vZGVsIGNhY2hlTW9kZWwpOworV0tfRVhQT1JU
IFdLQ2FjaGVNb2RlbCBXS0NvbnRleHRHZXRDYWNoZU1vZGVsKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMs
NiArMjIzLDggQEAKIAkJQkMyRTZFOEMxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtJdGVtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3QzExNDE5
NzBDMDBBNjNCMUUgLyogV29ya0l0ZW0uaCAqLzsgfTsKIAkJQkMyRTZFOEQxMTQxOTcxNTAwQTYz
QjFFIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCAqLzsg
fTsKIAkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdvcmtRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyRTZFN0UxMTQxOTcwQzAwQTYz
QjFFIC8qIFdvcmtRdWV1ZS5oICovOyB9OworCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyog
V2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWFjLm1tICovOyB9
OworCQlCQzMwNjVGQTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDY1RjkxMjU5MzQ0RTAwRTcx
Mjc4IC8qIENhY2hlTW9kZWwuaCAqLzsgfTsKIAkJQkMzM0RENjgxMjM4NDY0NjAwMzYwRjNGIC8q
IFdlYk51bWJlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzM0RENjcxMjM4NDY0NjAwMzYwRjNGIC8qIFdlYk51bWJlci5oICovOyB9OwogCQlCQzMz
RTBEMTEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzM0UwQ0YxMjQwOEU4
NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCAqLzsgfTsKIAkJQkMzM0Uw
RDIxMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzM0UwRDAxMjQwOEU4
NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwICovOyB9OwpAQCAtNjcw
LDYgKzY3Miw4IEBACiAJCUJDMkU2RTdDMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrSXRlbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrSXRlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzJFNkU3RDExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkU2RTdFMTE0MTk3MEMwMEE2M0IxRSAvKiBX
b3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya1F1ZXVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAv
KiBXZWJQcm9jZXNzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUHJvY2Vzc01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzMDY1
RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzMzREQ2NzEyMzg0NjQ2MDAzNjBGM0YgLyogV2ViTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYk51bWJlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMzRTBDRjEyNDA4RTg2MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzNFMEQwMTI0MDhFODYwMDM2
MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxOSw2ICsxMDIzLDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMUE2RkEwMUQxMUUxNTI2MzAwREIxMzcxIC8qIFdl
YlByb2Nlc3NNYWluTWFjLm1tICovLAorCQkJCUJDMzA2NUMzMTI1OTJGODkwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzTWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTEwMiw2ICsxMTA3LDcgQEAKIAkJCQkxQTZGOUY4RTExRTEzRUZD
MDBEQjEzNzEgLyogQ29tbWFuZExpbmUuaCAqLywKIAkJCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgx
NkMgLyogRHJhd2luZ0FyZWFCYXNlLmggKi8sCiAJCQkJNzYyQjc0ODExMjBCQkEwMTAwODE5MzM5
IC8qIEZvbnRTbW9vdGhpbmdMZXZlbC5oICovLAorCQkJCUJDMzA2NUY5MTI1OTM0NEUwMEU3MTI3
OCAvKiBDYWNoZU1vZGVsLmggKi8sCiAJCQkJQkM2NDY5NkQxMURCRTYwMzAwNjQ1NUIwIC8qIElt
bXV0YWJsZUFycmF5LmNwcCAqLywKIAkJCQlCQzY0Njk2RTExREJFNjAzMDA2NDU1QjAgLyogSW1t
dXRhYmxlQXJyYXkuaCAqLywKIAkJCQlCQ0JDQjBDQzEyMTVFMzNBMDBERTU5Q0EgLyogSW1tdXRh
YmxlRGljdGlvbmFyeS5jcHAgKi8sCkBAIC0xOTE4LDYgKzE5MjQsNyBAQAogCQkJCTFBOEVGQTcx
MTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQThFRkRGQTEyNTNDQUEyMDBGNzA2N0YgLyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM5MDk5ODAxMjU2QTk4MjAwMDgzNzU2IC8qIFdLU3RyaW5nUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkMzMDY1RkExMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9k
ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIxMiw2ICsyMjE5LDcgQEAKIAkJCQkxQThFRjk2RTEy
NTJBRjZCMDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBOEVGQTcwMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Q
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQThFRkRGRTEyNTND
QjZFMDBGNzA2N0YgLyogRGF0YVJlZmVyZW5jZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzMw
NjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gNjg5ODcpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkx
LDggQEAgV2ViUHJvY2VzcyYgV2ViUHJvY2Vzczo6c2hhcmVkKCkKIAogV2ViUHJvY2Vzczo6V2Vi
UHJvY2VzcygpCiAgICAgOiBtX2luRGlkQ2xvc2UoZmFsc2UpCisgICAgLCBtX2hhc1NldENhY2hl
TW9kZWwoZmFsc2UpCisgICAgLCBtX2NhY2hlTW9kZWwoQ2FjaGVNb2RlbERvY3VtZW50Vmlld2Vy
KQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQogICAg
ICwgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoTUFDSF9QT1JUX05VTEwpCiAjZW5kaWYK
QEAgLTE4MSw2ICsxODMsMTUgQEAgdm9pZCBXZWJQcm9jZXNzOjphZGRWaXNpdGVkTGluayhXZWJD
b3JlOgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpBZGRW
aXNpdGVkTGluaywgMCwgQ29yZUlQQzo6SW4obGlua0hhc2gpKTsKIH0KIAordm9pZCBXZWJQcm9j
ZXNzOjpzZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2RlbCkKK3sKKyAgICBpZiAoIW1f
aGFzU2V0Q2FjaGVNb2RlbCB8fCBjYWNoZU1vZGVsICE9IG1fY2FjaGVNb2RlbCkgeworICAgICAg
ICBtX2hhc1NldENhY2hlTW9kZWwgPSB0cnVlOworICAgICAgICBtX2NhY2hlTW9kZWwgPSBjYWNo
ZU1vZGVsOworICAgICAgICBwbGF0Zm9ybVNldENhY2hlTW9kZWwoY2FjaGVNb2RlbCk7CisgICAg
fQorfQorCiBXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpLmdldCgpOwpAQCAtMjUwLDYg
KzI2MSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUkKICAgICAg
ICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChsaW5rSGFzaGVz
KSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB2aXNpdGVk
TGlua1N0YXRlQ2hhbmdlZChsaW5rSGFzaGVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpBbGxWaXNp
dGVkTGlua1N0YXRlQ2hhbmdlZDoKICAgICAgICAgICAgICAgICBhbGxWaXNpdGVkTGlua1N0YXRl
Q2hhbmdlZCgpOwpAQCAtMjg5LDcgKzMwMSwxNCBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJCiAgICAgICAgICAgICAgICAgUGFnZUdyb3VwOjpzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFdl
YlByb2Nlc3NNZXNzYWdlOjpTZXRDYWNoZU1vZGVsOiB7CisgICAgICAgICAgICAgICAgdWludDMy
X3QgY2FjaGVNb2RlbDsKKyAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENv
cmVJUEM6Ok91dChjYWNoZU1vZGVsKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0
PENhY2hlTW9kZWw+KGNhY2hlTW9kZWwpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NNZXNzYWdlOjpDcmVhdGU6IHsK
ICAgICAgICAgICAgICAgICB1aW50NjRfdCBwYWdlSUQgPSBhcmd1bWVudHMtPmRlc3RpbmF0aW9u
SUQoKTsKICAgICAgICAgICAgICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDY4OTg3KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBXZWJQcm9jZXNzX2gKICNkZWZpbmUgV2ViUHJvY2Vzc19oCiAKKyNpbmNs
dWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCkBAIC05Miw3ICs5MywxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYpOwogICAgIHZvaWQgdmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYgbGlua0hhc2hlcyk7CiAgICAgdm9pZCBhbGxWaXNpdGVk
TGlua1N0YXRlQ2hhbmdlZCgpOwotICAgIAorCisgICAgdm9pZCBzZXRDYWNoZU1vZGVsKENhY2hl
TW9kZWwgY2FjaGVNb2RlbCk7CisgICAgdm9pZCBwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCk7CisKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiopOwpAQCAtMTA5LDYgKzExMyw5IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6
IFRoZSB2aXNpdGVkIGxpbmsgdGFibGUgc2hvdWxkIG5vdCBiZSBwZXIgcHJvY2Vzcy4KICAgICBW
aXNpdGVkTGlua1RhYmxlIG1fdmlzaXRlZExpbmtUYWJsZTsKIAorICAgIGJvb2wgbV9oYXNTZXRD
YWNoZU1vZGVsOworICAgIENhY2hlTW9kZWwgbV9jYWNoZU1vZGVsOworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShNQUMpCiAgICAgbWFjaF9wb3J0X3QgbV9j
b21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CiAjZW5kaWYKSW5kZXg6IFdlYktpdDIvV2ViUHJv
Y2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUv
Q2FjaGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgorI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIHVpbnQ2NF90IG1lbW9yeVNpemUoKQoreworICAgIHN0YXRpYyBob3N0X2Jhc2lj
X2luZm9fZGF0YV90IGhvc3RJbmZvOworCisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
OworICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF4oKSB7CisgICAgICAgIG1hY2hfcG9ydF90IGhv
c3QgPSBtYWNoX2hvc3Rfc2VsZigpOworICAgICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNv
dW50ID0gSE9TVF9CQVNJQ19JTkZPX0NPVU5UOworICAgICAgICBrZXJuX3JldHVybl90IHIgPSBo
b3N0X2luZm8oaG9zdCwgSE9TVF9CQVNJQ19JTkZPLCAoaG9zdF9pbmZvX3QpJmhvc3RJbmZvLCAm
Y291bnQpOworICAgICAgICBtYWNoX3BvcnRfZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBo
b3N0KTsKKworICAgICAgICBpZiAociAhPSBLRVJOX1NVQ0NFU1MpCisgICAgICAgICAgICBMT0df
RVJST1IoIiVzIDogaG9zdF9pbmZvKCVkKSA6ICVzLlxuIiwgX19GVU5DVElPTl9fLCByLCBtYWNo
X2Vycm9yX3N0cmluZyhyKSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gaG9zdEluZm8ubWF4X21l
bTsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZyB2b2x1bWVGcmVlU2l6ZShOU1N0cmlu
ZyAqcGF0aCkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKmZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlv
bmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gYXR0cmlidXRlc09mRmlsZVN5
c3RlbUZvclBhdGg6cGF0aCBlcnJvcjpOVUxMXTsKKyAgICByZXR1cm4gW1tmaWxlU3lzdGVtQXR0
cmlidXRlc0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Ok5TRmlsZVN5c3RlbUZyZWVTaXplXSB1bnNp
Z25lZExvbmdMb25nVmFsdWVdOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtU2V0Q2Fj
aGVNb2RlbChDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCit7CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBuc3VybENhY2hlRGlyZWN0b3J5KEFkb3B0TlMsIChOU1N0cmluZyAqKVdLQ29weUZvdW5kYXRp
b25DYWNoZURpcmVjdG9yeSgpKTsKKyAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCisgICAg
ICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkuYWRvcHROUyhOU0hvbWVEaXJlY3RvcnkoKSk7CisKKyAg
ICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNl
IHRoZSByZXBvcnRlZCBieXRlIAorICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0
byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgorICAgIHVpbnQ2NF90IG1lbVNpemUgPSBtZW1vcnlTaXpl
KCkgLyAxMDI0IC8gMTAwMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza0ZyZWVTaXplID0g
dm9sdW1lRnJlZVNpemUobnN1cmxDYWNoZURpcmVjdG9yeS5nZXQoKSkgLyAxMDI0IC8gMTAwMDsK
KyAgICBOU1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVd
OworCisgICAgdW5zaWduZWQgY2FjaGVUb3RhbENhcGFjaXR5ID0gMDsKKyAgICB1bnNpZ25lZCBj
YWNoZU1pbkRlYWRDYXBhY2l0eSA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVNYXhEZWFkQ2FwYWNp
dHkgPSAwOworICAgIGRvdWJsZSBkZWFkRGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gMDsK
KworICAgIHVuc2lnbmVkIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKKworICAgIE5TVUludGVnZXIg
bnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKKyAgICBOU1VJbnRlZ2VyIG5zdXJsQ2FjaGVE
aXNrQ2FwYWNpdHkgPSAwOworCisgICAgc3dpdGNoIChjYWNoZU1vZGVsKSB7CisgICAgY2FzZSBD
YWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI6IHsKKyAgICAgICAgLy8gUGFnZSBjYWNoZSBjYXBhY2l0
eSAoaW4gcGFnZXMpCisgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5ID0gMDsKKworICAgICAgICAv
LyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4gYnl0ZXMpCisgICAgICAgIGlmIChtZW1TaXpl
ID49IDIwNDgpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSA5NiAqIDEwMjQgKiAx
MDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDE1MzYpCisgICAgICAgICAgICBjYWNo
ZVRvdGFsQ2FwYWNpdHkgPSA2NCAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1T
aXplID49IDEwMjQpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQg
KiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikKKyAgICAgICAgICAgIGNh
Y2hlVG90YWxDYXBhY2l0eSA9IDE2ICogMTAyNCAqIDEwMjQ7CisKKyAgICAgICAgY2FjaGVNaW5E
ZWFkQ2FwYWNpdHkgPSAwOworICAgICAgICBjYWNoZU1heERlYWRDYXBhY2l0eSA9IDA7CisKKyAg
ICAgICAgLy8gRm91bmRhdGlvbiBtZW1vcnkgY2FjaGUgY2FwYWNpdHkgKGluIGJ5dGVzKQorICAg
ICAgICBuc3VybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOworCisgICAgICAgIC8vIEZvdW5kYXRp
b24gZGlzayBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAgICAgIG5zdXJsQ2FjaGVEaXNr
Q2FwYWNpdHkgPSBbbnN1cmxDYWNoZSBkaXNrQ2FwYWNpdHldOworCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXI6IHsKKyAgICAgICAgLy8g
UGFnZSBjYWNoZSBjYXBhY2l0eSAoaW4gcGFnZXMpCisgICAgICAgIGlmIChtZW1TaXplID49IDEw
MjQpCisgICAgICAgICAgICBwYWdlQ2FjaGVDYXBhY2l0eSA9IDM7CisgICAgICAgIGVsc2UgaWYg
KG1lbVNpemUgPj0gNTEyKQorICAgICAgICAgICAgcGFnZUNhY2hlQ2FwYWNpdHkgPSAyOworICAg
ICAgICBlbHNlIGlmIChtZW1TaXplID49IDI1NikKKyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFj
aXR5ID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFnZUNhY2hlQ2FwYWNpdHkgPSAw
OworCisgICAgICAgIC8vIE9iamVjdCBjYWNoZSBjYXBhY2l0aWVzIChpbiBieXRlcykKKyAgICAg
ICAgaWYgKG1lbVNpemUgPj0gMjA0OCkKKyAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9
IDk2ICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gMTUzNikKKyAg
ICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0eSA9IDY0ICogMTAyNCAqIDEwMjQ7CisgICAgICAg
IGVsc2UgaWYgKG1lbVNpemUgPj0gMTAyNCkKKyAgICAgICAgICAgIGNhY2hlVG90YWxDYXBhY2l0
eSA9IDMyICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gNTEyKQor
ICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gMTYgKiAxMDI0ICogMTAyNDsKKworICAg
ICAgICBjYWNoZU1pbkRlYWRDYXBhY2l0eSA9IGNhY2hlVG90YWxDYXBhY2l0eSAvIDg7CisgICAg
ICAgIGNhY2hlTWF4RGVhZENhcGFjaXR5ID0gY2FjaGVUb3RhbENhcGFjaXR5IC8gNDsKKworICAg
ICAgICAvLyBGb3VuZGF0aW9uIG1lbW9yeSBjYWNoZSBjYXBhY2l0eSAoaW4gYnl0ZXMpCisgICAg
ICAgIGlmIChtZW1TaXplID49IDIwNDgpCisgICAgICAgICAgICBuc3VybENhY2hlTWVtb3J5Q2Fw
YWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKG1lbVNpemUgPj0gMTAy
NCkKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDIgKiAxMDI0ICogMTAy
NDsKKyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSA1MTIpCisgICAgICAgICAgICBuc3VybENh
Y2hlTWVtb3J5Q2FwYWNpdHkgPSAxICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9ICAgICAgNTEyICogMTAyNDsgCisKKyAg
ICAgICAgLy8gRm91bmRhdGlvbiBkaXNrIGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAg
ICAgaWYgKGRpc2tGcmVlU2l6ZSA+PSAxNjM4NCkKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVEaXNr
Q2FwYWNpdHkgPSA1MCAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNp
emUgPj0gODE5MikKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSA0MCAqIDEw
MjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0gNDA5NikKKyAgICAg
ICAgICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAzMCAqIDEwMjQgKiAxMDI0OworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gMjAgKiAxMDI0ICog
MTAyNDsKKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDYWNoZU1vZGVsUHJpbWFy
eVdlYkJyb3dzZXI6IHsKKyAgICAgICAgLy8gUGFnZSBjYWNoZSBjYXBhY2l0eSAoaW4gcGFnZXMp
CisgICAgICAgIC8vIChSZXNlYXJjaCBpbmRpY2F0ZXMgdGhhdCB2YWx1ZSAvIHBhZ2UgZHJvcHMg
c3Vic3RhbnRpYWxseSBhZnRlciAzIHBhZ2VzLikKKyAgICAgICAgaWYgKG1lbVNpemUgPj0gMjA0
OCkKKyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFjaXR5ID0gNTsKKyAgICAgICAgZWxzZSBpZiAo
bWVtU2l6ZSA+PSAxMDI0KQorICAgICAgICAgICAgcGFnZUNhY2hlQ2FwYWNpdHkgPSA0OworICAg
ICAgICBlbHNlIGlmIChtZW1TaXplID49IDUxMikKKyAgICAgICAgICAgIHBhZ2VDYWNoZUNhcGFj
aXR5ID0gMzsKKyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSAyNTYpCisgICAgICAgICAgICBw
YWdlQ2FjaGVDYXBhY2l0eSA9IDI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhZ2VDYWNo
ZUNhcGFjaXR5ID0gMTsKKworICAgICAgICAvLyBPYmplY3QgY2FjaGUgY2FwYWNpdGllcyAoaW4g
Ynl0ZXMpCisgICAgICAgIC8vIChUZXN0aW5nIGluZGljYXRlcyB0aGF0IHZhbHVlIC8gTUIgZGVw
ZW5kcyBoZWF2aWx5IG9uIGNvbnRlbnQgYW5kCisgICAgICAgIC8vIGJyb3dzaW5nIHBhdHRlcm4u
IEV2ZW4gZ3Jvd3RoIGFib3ZlIDEyOE1CIGNhbiBoYXZlIHN1YnN0YW50aWFsIAorICAgICAgICAv
LyB2YWx1ZSAvIE1CIGZvciBzb21lIGNvbnRlbnQgLyBicm93c2luZyBwYXR0ZXJucy4pCisgICAg
ICAgIGlmIChtZW1TaXplID49IDIwNDgpCisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkg
PSAxMjggKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSAxNTM2KQor
ICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFjaXR5ID0gOTYgKiAxMDI0ICogMTAyNDsKKyAgICAg
ICAgZWxzZSBpZiAobWVtU2l6ZSA+PSAxMDI0KQorICAgICAgICAgICAgY2FjaGVUb3RhbENhcGFj
aXR5ID0gNjQgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAobWVtU2l6ZSA+PSA1MTIp
CisgICAgICAgICAgICBjYWNoZVRvdGFsQ2FwYWNpdHkgPSAzMiAqIDEwMjQgKiAxMDI0OworCisg
ICAgICAgIGNhY2hlTWluRGVhZENhcGFjaXR5ID0gY2FjaGVUb3RhbENhcGFjaXR5IC8gNDsKKyAg
ICAgICAgY2FjaGVNYXhEZWFkQ2FwYWNpdHkgPSBjYWNoZVRvdGFsQ2FwYWNpdHkgLyAyOworCisg
ICAgICAgIC8vIFRoaXMgY29kZSBpcyBoZXJlIHRvIGF2b2lkIGEgUExUIHJlZ3Jlc3Npb24uIFdl
IGNhbiByZW1vdmUgaXQgaWYgd2UKKyAgICAgICAgLy8gY2FuIHByb3ZlIHRoYXQgdGhlIG92ZXJh
bGwgc3lzdGVtIGdhaW4gd291bGQganVzdGlmeSB0aGUgcmVncmVzc2lvbi4KKyAgICAgICAgY2Fj
aGVNYXhEZWFkQ2FwYWNpdHkgPSBtYXgoMjR1LCBjYWNoZU1heERlYWRDYXBhY2l0eSk7CisKKyAg
ICAgICAgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDYwOworCisgICAgICAgIC8v
IEZvdW5kYXRpb24gbWVtb3J5IGNhY2hlIGNhcGFjaXR5IChpbiBieXRlcykKKyAgICAgICAgLy8g
KFRoZXNlIHZhbHVlcyBhcmUgc21hbGwgYmVjYXVzZSBXZWJDb3JlIGRvZXMgbW9zdCBjYWNoaW5n
IGl0c2VsZi4pCisgICAgICAgIGlmIChtZW1TaXplID49IDEwMjQpCisgICAgICAgICAgICBuc3Vy
bENhY2hlTWVtb3J5Q2FwYWNpdHkgPSA0ICogMTAyNCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYg
KG1lbVNpemUgPj0gNTEyKQorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0g
MiAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlIGlmIChtZW1TaXplID49IDI1NikKKyAgICAg
ICAgICAgIG5zdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDEgKiAxMDI0ICogMTAyNDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gICAgICA1MTIg
KiAxMDI0OyAKKworICAgICAgICAvLyBGb3VuZGF0aW9uIGRpc2sgY2FjaGUgY2FwYWNpdHkgKGlu
IGJ5dGVzKQorICAgICAgICBpZiAoZGlza0ZyZWVTaXplID49IDE2Mzg0KQorICAgICAgICAgICAg
bnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDE3NSAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNl
IGlmIChkaXNrRnJlZVNpemUgPj0gODE5MikKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVEaXNrQ2Fw
YWNpdHkgPSAxNTAgKiAxMDI0ICogMTAyNDsKKyAgICAgICAgZWxzZSBpZiAoZGlza0ZyZWVTaXpl
ID49IDQwOTYpCisgICAgICAgICAgICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gMTI1ICogMTAy
NCAqIDEwMjQ7CisgICAgICAgIGVsc2UgaWYgKGRpc2tGcmVlU2l6ZSA+PSAyMDQ4KQorICAgICAg
ICAgICAgbnN1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDEwMCAqIDEwMjQgKiAxMDI0OworICAgICAg
ICBlbHNlIGlmIChkaXNrRnJlZVNpemUgPj0gMTAyNCkKKyAgICAgICAgICAgIG5zdXJsQ2FjaGVE
aXNrQ2FwYWNpdHkgPSA3NSAqIDEwMjQgKiAxMDI0OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuc3VybENhY2hlRGlza0NhcGFjaXR5ID0gNTAgKiAxMDI0ICogMTAyNDsKKworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfTsKKworICAgIC8vIERvbid0IHNocmluayBhIGJpZyBkaXNrIGNhY2hlLCBzaW5jZSB0
aGF0IHdvdWxkIGNhdXNlIGNodXJuLgorICAgIG5zdXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSBtYXgo
bnN1cmxDYWNoZURpc2tDYXBhY2l0eSwgW25zdXJsQ2FjaGUgZGlza0NhcGFjaXR5XSk7CisKKyAg
ICBjYWNoZSgpLT5zZXRDYXBhY2l0aWVzKGNhY2hlTWluRGVhZENhcGFjaXR5LCBjYWNoZU1heERl
YWRDYXBhY2l0eSwgY2FjaGVUb3RhbENhcGFjaXR5KTsKKyAgICBjYWNoZSgpLT5zZXREZWFkRGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsKGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwp
OworICAgIHBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShwYWdlQ2FjaGVDYXBhY2l0eSk7CisgICAg
W25zdXJsQ2FjaGUgc2V0TWVtb3J5Q2FwYWNpdHk6bnN1cmxDYWNoZU1lbW9yeUNhcGFjaXR5XTsK
KyAgICBbbnN1cmxDYWNoZSBzZXREaXNrQ2FwYWNpdHk6bnN1cmxDYWNoZURpc2tDYXBhY2l0eV07
CisKKworICAgIHByaW50ZigiUGFnZSBDYWNoZTogJWRcbiIsIHBhZ2VDYWNoZSgpLT5jYXBhY2l0
eSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
cXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzUXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwgY2FjaGVNb2Rl
bCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi93aW4vV2Vi
S2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJl
dmlzaW9uIDY4OTg3KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTM5Nyw2ICszOTcsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENhY2hlTW9kZWwuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxEcmF3aW5nQXJl
YUJhc2UuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMDM5LDYgKzEwNDMsMTAgQEAKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXHdpblxXZWJQcm9jZXNzTWFpbldpbi5jcHAi
DQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1x3aW5cV2ViUHJvY2Vzc1dpbi5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCiAJCQk8L0ZpbHRlcj4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IkluamVjdGVkQnVuZGxl
Ig0KSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4OTg5KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMTAtMDMgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYWJpbGl0eSB0byBzZXQgdGhlIENhY2hlTW9kZWwgaW4gV2Via2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNjYKKworICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtCcm93c2Vy
QXBwRGVsZWdhdGUgaW5pdF0pOiBPcHQgbWluaWJyb3dzZXIgaW50bworICAgICAgICBhIFByaW1h
cnlXZWJCcm93c2VyIGNhY2hlIG1vZGVsLgorCiAyMDEwLTEwLTAyICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0aGUgYWJpbGl0eSB0byBqdW1w
IHRvIGEgc3BlY2lmaWMgdGVzdC4KSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9B
cHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9B
cHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiA2ODk4NykKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2Vy
L21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDYgQEAgLSAo
aWQpaW5pdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0g
a1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CiAKLSAgICAgICAgV0tDb250ZXh0
UmVmIHRocmVhZENvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFyZWRUaHJlYWRDb250ZXh0KCk7CiAg
ICAgICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnQgaGlzdG9yeUNsaWVudCA9IHsKICAgICAgICAg
ICAgIDAsCiAgICAgICAgICAgICBzZWxmLApAQCAtMTI4LDggKzEyNywxMSBAQCAtIChpZClpbml0
CiAgICAgICAgICAgICBkaWRVcGRhdGVIaXN0b3J5VGl0bGUsCiAgICAgICAgICAgICBwb3B1bGF0
ZVZpc2l0ZWRMaW5rcwogICAgICAgICB9OworCisgICAgICAgIFdLQ29udGV4dFJlZiB0aHJlYWRD
b250ZXh0ID0gV0tDb250ZXh0R2V0U2hhcmVkVGhyZWFkQ29udGV4dCgpOwogICAgICAgICBXS0Nv
bnRleHRTZXRIaXN0b3J5Q2xpZW50KHRocmVhZENvbnRleHQsICZoaXN0b3J5Q2xpZW50KTsKLSAg
ICAKKyAgICAgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbCh0aHJlYWRDb250ZXh0LCBrV0tDYWNo
ZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOworCiAgICAgICAgIHRocmVhZFBhZ2VOYW1lc3BhY2Ug
PSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUodGhyZWFkQ29udGV4dCk7CiAgICAgICAgIFdLUmVsZWFz
ZSh0aHJlYWRDb250ZXh0KTsKIApAQCAtMTQ2LDcgKzE0OCw4IEBAIC0gKGlkKWluaXQKICAgICAg
ICAgfTsKICAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQocHJvY2Vzc0Nv
bnRleHQsICZidW5kbGVDbGllbnQpOwogICAgICAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KHByb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNsaWVudCk7Ci0gICAgICAgIAorICAgICAgICBXS0Nv
bnRleHRTZXRDYWNoZU1vZGVsKHByb2Nlc3NDb250ZXh0LCBrV0tDYWNoZU1vZGVsUHJpbWFyeVdl
YkJyb3dzZXIpOworCiAgICAgICAgIHByb2Nlc3NQYWdlTmFtZXNwYWNlID0gV0tQYWdlTmFtZXNw
YWNlQ3JlYXRlKHByb2Nlc3NDb250ZXh0KTsKICAgICAgICAgV0tSZWxlYXNlKHByb2Nlc3NDb250
ZXh0KTsKIAo=
</data>
<flag name="review"
          id="59304"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>