<?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>12232</bug_id>
          
          <creation_ts>2007-01-12 13:30:36 -0800</creation_ts>
          <short_desc>[S60] WAP CSS specific character format causing phone keypad input error</short_desc>
          <delta_ts>2007-03-04 17:05:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>420+</version>
          <rep_platform>S60 Emulator</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</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="Shyam Sareen">shyam.sareen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bradley.morrison</cc>
    
    <cc>shyam.sareen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35398</commentid>
    <comment_count>0</comment_count>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-12 13:30:36 -0800</bug_when>
    <thetext>TSW ID: TMCN-6S5MSE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35338</commentid>
    <comment_count>1</comment_count>
      <attachid>12402</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-12 13:45:23 -0800</bug_when>
    <thetext>Created attachment 12402
Patch-1: Fix for the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35317</commentid>
    <comment_count>2</comment_count>
      <attachid>12402</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-12 14:20:34 -0800</bug_when>
    <thetext>Comment on attachment 12402
Patch-1: Fix for the problem

input modes are already initialised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34795</commentid>
    <comment_count>3</comment_count>
      <attachid>12465</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-15 12:11:25 -0800</bug_when>
    <thetext>Created attachment 12465
Patch-2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32990</commentid>
    <comment_count>4</comment_count>
      <attachid>12465</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-23 12:52:38 -0800</bug_when>
    <thetext>Comment on attachment 12465
Patch-2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32991</commentid>
    <comment_count>5</comment_count>
      <attachid>12465</attachid>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-23 12:52:45 -0800</bug_when>
    <thetext>Comment on attachment 12465
Patch-2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32979</commentid>
    <comment_count>6</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-23 13:14:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 12465 [edit])
&gt; r=me
&gt; 

Landed - r19054. setting to fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31046</commentid>
    <comment_count>7</comment_count>
      <attachid>12743</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-29 08:41:12 -0800</bug_when>
    <thetext>Created attachment 12743
Patch for 3.1m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30934</commentid>
    <comment_count>8</comment_count>
      <attachid>12743</attachid>
    <who name="Yongjun Zhang">yongjun.zhang</who>
    <bug_when>2007-01-29 13:45:33 -0800</bug_when>
    <thetext>Comment on attachment 12743
Patch for 3.1m

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30153</commentid>
    <comment_count>9</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-30 09:00:35 -0800</bug_when>
    <thetext>^^^^^ 
out of date, please recreate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30154</commentid>
    <comment_count>10</comment_count>
      <attachid>12795</attachid>
    <who name="Shyam Sareen">shyam.sareen</who>
    <bug_when>2007-01-30 09:11:13 -0800</bug_when>
    <thetext>Created attachment 12795
Last patch was obsolete. Submitting again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30156</commentid>
    <comment_count>11</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-30 09:18:45 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=12795) [edit]
&gt; Last patch was obsolete. Submitting again.
&gt; 

Landed r19262, setting to resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30093</commentid>
    <comment_count>12</comment_count>
      <attachid>12795</attachid>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-30 11:14:03 -0800</bug_when>
    <thetext>Comment on attachment 12795
Last patch was obsolete. Submitting again.

Looks fine, thanks for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20534</commentid>
    <comment_count>13</comment_count>
    <who name="Krishna">krishnamurty.podipireddy</who>
    <bug_when>2007-03-04 17:05:47 -0800</bug_when>
    <thetext>
Closed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12402</attachid>
            <date>2007-01-12 13:45:23 -0800</date>
            <delta_ts>2007-01-12 14:20:34 -0800</delta_ts>
            <desc>Patch-1: Fix for the problem</desc>
            <filename>wcssFormat.patch</filename>
            <type>text/plain</type>
            <size>2459</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODgxMikNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDEyIEBADQorMjAwNy0wMS0xMiAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbiBQYWRtYS4NCisgICAgICAgIERF
U0M6IFdBUCBDU1Mgc3BlY2lmaWMgY2hhcmFjdGVyIGZvcm1hdCBjYXVzaW5nIHBob25lIGtleXBh
ZCBpbnB1dCBlcnJvciAoIFRTVyBJRDogVE1DTi02UzVLODcpDQorICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMg0KKw0KKyAgICAgICAgKiBCcm93c2Vy
Q29yZS9Gb3JtY29udHJvbHMvc3JjL0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwOg0KKyAgICAg
ICAgKENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGluZ1BhcmFtZXRlcnMpOg0KKw0K
IDIwMDctMDEtMTIgIHNwYWRtYSAgPFNhY2hpbi5QYWRtYUBub2tpYS5jb20+DQogDQogICAgICAg
ICBSZXZpZXdlZCBieSBZb25nanVuLg0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29u
dHJvbHMvc3JjL0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVkaXRvci5j
cHAJKHJldmlzaW9uIDE4ODEwKQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMv
c3JjL0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMTExNSw5
ICsxMTE1LDEzIEBAIFRCb29sIENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGkNCiAN
CiAgICAgaWYgKCBpSGFuZGxlciApDQogICAgICAgICB7DQotICAgICAgICAvL1RoaXMgY2FzZSBv
Y2N1cnMgd2hlbiB0aGVyZSBpcyBXQVAgQ1NTIHByZXNlbnQuICAgICAgICAgDQorICAgICAgICAv
L1RoaXMgY2FzZSBvY2N1cnMgd2hlbiB0aGVyZSBpcyBXQVAgQ1NTIHByZXNlbnQuIFNldCB0aGUg
DQorICAgICAgICAvL2RlZmF1bHQgdmFsdWUgZm9yIHRoZSBpbnB1dCBtb2RlIGFuZCBpbnB1dCBj
YXNlLiBUaGUgZGVmYXVsdCANCisgICAgICAgIC8vdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBpbnZh
bGlkIGlucHV0IG1hc2sgb2YgV0FQIENTUyBpcyBwcmVzZW50Lg0KKyAgICAgICAgLy9UaGUgZGVm
YWx0IHZhbHVlIG9mIFdBUCBDU1MgaW5wdXQgbWFzayBpcyAiKk0iLiBBbHNvLCBiZSBjYXJlZnVs
DQorICAgICAgICAvL29mIGNoYW5naW5nIHRoZSAiYWxsb3dlZElucHV0TW9kZXMiIGZyb20gRUFr
bkVkaXRvckFsbElucHV0TW9kZXMuICAgICAgIA0KICAgICAgICAgYWxsb3dlZElucHV0TW9kZXMg
PSBFQWtuRWRpdG9yQWxsSW5wdXRNb2RlczsgDQotICAgICAgICBpbnB1dE1vZGUgPSBFQWtuRWRp
dG9yTnVtZXJpY0lucHV0TW9kZSA7DQorICAgICAgICBpbnB1dE1vZGUgPSAoIEVBa25FZGl0b3JB
bGxJbnB1dE1vZGVzIHwgRUFrbkVkaXRvck51bWVyaWNJbnB1dE1vZGUgKTsNCiAgICAgICAgIHBl
cm1pdHRlZENhc2UgPSBFQWtuRWRpdG9yQWxsQ2FzZU1vZGVzOw0KICAgICAgICAgZmVwQ2FzZSA9
IGN1cnJlbnRDYXNlID0gRUFrbkVkaXRvclVwcGVyQ2FzZTsNCiAgICAgICAgIA0KQEAgLTExMzIs
MTIgKzExMzYsMTIgQEAgVEJvb2wgQ0lucHV0Rm9ybWF0dGVkRWRpdG9yOjpVcGRhdGVFZGl0aQ0K
IA0KICAgICAgICAgICAgIGlmICggZm9ybWF0LlN1Z2dlc3RlZENhc2UoKSA9PSBUSW5wdXRGb3Jt
YXRDaGFyOjpFSW5wdXRVcHBlckNhc2UgKQ0KICAgICAgICAgICAgICAgICB7DQotICAgICAgICAg
ICAgICAgIGZlcENhc2UgPSBjdXJyZW50Q2FzZSA9IHBlcm1pdHRlZENhc2UgPSBFQWtuRWRpdG9y
VXBwZXJDYXNlOw0KKyAgICAgICAgICAgICAgICBmZXBDYXNlID0gY3VycmVudENhc2UgPSBFQWtu
RWRpdG9yVXBwZXJDYXNlOw0KICAgICAgICAgICAgICAgICB9DQogDQogICAgICAgICAgICAgaWYg
KCBmb3JtYXQuU3VnZ2VzdGVkQ2FzZSgpID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2Vy
Q2FzZSApDQogICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgZmVwQ2FzZSA9IGN1
cnJlbnRDYXNlID0gcGVybWl0dGVkQ2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQorICAgICAg
ICAgICAgICAgIGZlcENhc2UgPSBjdXJyZW50Q2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQog
ICAgICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICBpZiAoZm9ybWF0LlNwZWNpYWxBbGxv
d2VkKCkpDQo=
</data>
<flag name="review"
          id="4662"
          type_id="1"
          status="-"
          setter="Sachin.Padma"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12465</attachid>
            <date>2007-01-15 12:11:25 -0800</date>
            <delta_ts>2007-01-23 12:52:38 -0800</delta_ts>
            <desc>Patch-2</desc>
            <filename>wapcss_32.patch</filename>
            <type>text/plain</type>
            <size>38466</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxODg2NikNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDQ5IEBADQorMjAwNy0wMS0xNSAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IFNhY2hpbiBQYWRtYS4NCisgICAgICAgIERF
U0M6IFdBUCBDU1Mgc3BlY2lmaWMgY2hhcmFjdGVyIGZvcm1hdCBjYXVzaW5nIHBob25lIGtleXBh
ZCBpbnB1dCBlcnJvciAoIFRTVyBJRDogVE1DTi02UzVNU0UpDQorICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMg0KKw0KKyAgICAgICAgKiBCcm93c2Vy
Q29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHA6DQorICAgICAg
ICAoVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Rm9ybWF0Q2hhcik6DQorICAgICAgICAoVElucHV0
Rm9ybWF0Q2hhcjo6Rm9yY2VkQ2FzZSk6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6U3Vn
Z2VzdGVkQ2FzZSk6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6QWxwaGFBbGxvd2VkKToN
CisgICAgICAgIChUSW5wdXRGb3JtYXRDaGFyOjpOdW1lcmljQWxsb3dlZCk6DQorICAgICAgICAo
VElucHV0Rm9ybWF0Q2hhcjo6U3BlY2lhbEFsbG93ZWQpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1h
dENoYXI6OkNoYXIpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OlN0YXRpYyk6DQorICAg
ICAgICAoVFN0YXRpY0NoYXI6OlRTdGF0aWNDaGFyKToNCisgICAgICAgIChUU3RhdGljQ2hhcjo6
Q2hhcik6DQorICAgICAgICAoVFN0YXRpY0NoYXI6OlBvcyk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6Q0lucHV0Rm9ybWF0SGFuZGxlcik6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6Q29uc3RydWN0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TmV3
TEMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0wpOg0KKyAgICAgICAgKENJ
bnB1dEZvcm1hdEhhbmRsZXI6On5DSW5wdXRGb3JtYXRIYW5kbGVyKToNCisgICAgICAgIChDSW5w
dXRGb3JtYXRIYW5kbGVyOjpTZXRUZXh0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6VGV4dExDKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKToNCisg
ICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpEZWxldGUpOg0KKyAgICAgICAgKENJbnB1dEZv
cm1hdEhhbmRsZXI6OlN0YXRpY1RleHRMQyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6TnVtYmVyT2ZTdGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkdldEZv
cm1hdCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCk6DQorICAgICAg
ICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TWluTGVuZ3RoKToNCisgICAgICAgIChDSW5wdXRGb3Jt
YXRIYW5kbGVyOjpNYXhMZW5ndGgpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlZh
bGlkYXRlQ2hhcik6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0
TEMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4dEwpOg0KKyAg
ICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0luY2x1ZGluZ1N0YXRpYyk6DQorICAgICAg
ICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zRXhsdWRpbmdTdGF0aWMpOg0KKyAgICAgICAgKENJ
bnB1dEZvcm1hdEhhbmRsZXI6OlByZXZpb3VzTm9uU3RhdGljKToNCisgICAgICAgIChDSW5wdXRG
b3JtYXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5k
bGVyOjpGaXJzdEVtcHR5KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQcmV2aW91
c1N0YXRpYyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SXNQb3NTdGF0aWMpOg0K
KyAgICAgICAgKiBCcm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZJbnB1dGxGb3JtYXR0ZWRF
ZGl0b3IuY3BwOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGlu
Z1BhcmFtZXRlcnMpOg0KKw0KIDIwMDctMDEtMTQgIGJybW9ycmlzICA8YnJhZGxleS5tb3JyaXNv
bkBub2tpYS5jb20+DQogICAgICAgICANCiAgICAgICAgIERFU0M6IFJldmVydGVkIHJldmlzaW9u
IDE4ODA5DQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRy
b2xmb3JtYXRoYW5kbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29yZS9G
b3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHAJKHJldmlzaW9uIDE4ODU4
KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0
aGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC05LDkgKzksOSBAQA0KICogICAgQ29weXJp
Z2h0IChjKSAyMDA2LCBOb2tpYSBDb3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4NCiAqICANCi0qICAJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotKiAgCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KLSogIAlhcmUgbWV0Og0K
KyogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dA0KKyogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKyogIGFyZSBtZXQ6DQogKiAgDQogKiAgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQNCiAqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQpAQCAtMjMsMjAgKzIzLDIwIEBADQogKiAgICAgICAg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkDQogKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICogIA0KLSogIAlUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQotKiAgCSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UDQotKiAgCUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUg0KLSogIAlBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KLSogIAlPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwNCi0qICAJU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVA0KLSogIAlMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCi0qICAJREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQot
KiAgCVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQNCi0qICAJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCi0qICAJVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KLSogIAlEQU1BR0Uu
DQorKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUw0KKyogICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorKiAgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQNCisqICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCisqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
DQorKiAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZDQorKiAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFDQorKiAgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSA0KKyogIERBTUFHRS4NCiAqICANCi0qICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNl
bnNlLnR4dCBmb3IgZnVydGhlciBncmFudHMuDQorKiAgUGxlYXNlIHNlZSBmaWxlIHBhdGVudGxp
Y2Vuc2UudHh0IGZvciBmdXJ0aGVyIGdyYW50cy4NCiAqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
ICovDQogLy8gSU5DTFVERSBGSUxFUw0KQEAgLTY0LDE3MSArNjQsMTcxIEBAIHN0YXRpYyBjb25z
dCBUVWludCBLSW5wdXRGb3JtYXRNdWx0aXBsaWUNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0KIFRJ
bnB1dEZvcm1hdENoYXI6OlRJbnB1dEZvcm1hdENoYXIoIFRVaW50IGFDaGFyLCBUVWludCBhU3Rh
dGljICkNCi0JOiBpQ2hhciggYUNoYXIgKQ0KLQl7DQotCWlTdGF0aWMgPSAoIGFDaGFyID09IEtJ
bnB1dEZvcm1hdFN0YXRpYyApID8gYVN0YXRpYyA6IDA7DQotCX0NCisgIDogaUNoYXIoIGFDaGFy
ICkNCisgIHsNCisgIGlTdGF0aWMgPSAoIGFDaGFyID09IEtJbnB1dEZvcm1hdFN0YXRpYyApID8g
YVN0YXRpYyA6IDA7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6Rm9yY2Vk
Q2FzZQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vDQogVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBUSW5wdXRGb3Jt
YXRDaGFyOjpGb3JjZWRDYXNlKCkgY29uc3QNCi0Jew0KLQlUSW5wdXRDYXNlIHJlc3VsdDsNCi0J
c3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRYIDoNCi0JCQlyZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQotCQkJYnJlYWs7
DQotDQotCQljYXNlIEtJbnB1dEZvcm1hdGEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXR4IDoNCi0J
CQlyZXN1bHQgPSBFSW5wdXRMb3dlckNhc2U7DQotCQkJYnJlYWs7DQotDQotCQljYXNlIEtJbnB1
dEZvcm1hdG4gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXROIDoNCi0JCQlyZXN1bHQgPSBFSW5wdXRO
dW1lcmljQ2FzZTsNCi0JCQlicmVhazsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJcmVzdWx0ID0gRUlu
cHV0Tm9uZTsNCi0JCQlicmVhazsNCi0JCX0NCi0JcmV0dXJuIHJlc3VsdDsNCi0JfQ0KKyAgew0K
KyAgVElucHV0Q2FzZSByZXN1bHQ7DQorICBzd2l0Y2goIGlDaGFyICkNCisgICAgew0KKyAgICBj
YXNlIEtJbnB1dEZvcm1hdEEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdFggOg0KKyAgICAgIHJl
c3VsdCA9IEVJbnB1dFVwcGVyQ2FzZTsNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBLSW5w
dXRGb3JtYXRhIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXR4IDoNCisgICAgICByZXN1bHQgPSBF
SW5wdXRMb3dlckNhc2U7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgS0lucHV0Rm9ybWF0
biA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TiA6DQorICAgICAgcmVzdWx0ID0gRUlucHV0TnVt
ZXJpY0Nhc2U7DQorICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgcmVzdWx0
ID0gRUlucHV0Tm9uZTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgcmV0dXJuIHJlc3VsdDsN
CisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0NCiAvLyBUSW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8NCiBUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRDYXNlIFRJbnB1dEZvcm1hdENoYXI6OlN1
Z2dlc3RlZENhc2UoKSBjb25zdA0KLQl7DQotCVRJbnB1dENhc2UgcmVzdWx0Ow0KLQlzd2l0Y2go
IGlDaGFyICkNCi0JCXsNCi0JCWNhc2UgS0lucHV0Rm9ybWF0QSA6DQotCQljYXNlIEtJbnB1dEZv
cm1hdFggOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRNIDoNCi0JCQlyZXN1bHQgPSBFSW5wdXRVcHBl
ckNhc2U7DQotCQkJYnJlYWs7DQotDQotCQljYXNlIEtJbnB1dEZvcm1hdGEgOg0KLQkJY2FzZSBL
SW5wdXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQkJcmVzdWx0ID0gRUlu
cHV0TG93ZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0TiA6DQotCQkJcmVzdWx0ID0gRUlucHV0TnVtZXJpY0Nhc2U7DQot
CQkJYnJlYWs7DQotDQotCQlkZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVJbnB1dE5vbmU7DQotCQkJ
YnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRJbnB1dENhc2Ug
cmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hhciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3Jt
YXRBIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRYIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXRV
cHBlckNhc2U7DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQor
ICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQorICAg
ICAgcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNl
IEtJbnB1dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE4gOg0KKyAgICAgIHJlc3Vs
dCA9IEVJbnB1dE51bWVyaWNDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0Og0K
KyAgICAgIC8vQWxzbywgdXNlZCBmb3IgS0lucHV0Rm9ybWF0TS4gRGVmYXVsdCBjYXNlLg0KKyAg
ICAgIHJlc3VsdCA9IEVJbnB1dE5vbmU7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIHJldHVy
biByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6QWxwaGFBbGxv
d2VkDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8NCiBUQm9vbCBUSW5wdXRGb3JtYXRDaGFyOjpBbHBoYUFsbG93ZWQoKSBj
b25zdA0KLQl7DQotCVRCb29sIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQlj
YXNlIEtJbnB1dEZvcm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0JCWNhc2UgS0lu
cHV0Rm9ybWF0WCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdHggOg0KLQkJY2FzZSBLSW5wdXRGb3Jt
YXRNIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFN0YXRp
YyA6DQotCQkJcmVzdWx0ID0gRVRydWU7DQotCQkJYnJlYWs7DQotDQotCQlkZWZhdWx0Og0KLQkJ
CXJlc3VsdCA9IEVGYWxzZTsNCi0JCQlicmVhazsNCi0JCX0NCi0JcmV0dXJuIHJlc3VsdDsNCi0J
fQ0KKyAgew0KKyAgVEJvb2wgcmVzdWx0Ow0KKyAgc3dpdGNoKCBpQ2hhciApDQorICAgIHsNCisg
ICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRhIDoNCisgICAg
Y2FzZSBLSW5wdXRGb3JtYXRYIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXR4IDoNCisgICAgY2Fz
ZSBLSW5wdXRGb3JtYXRNIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRtIDoNCisgICAgY2FzZSBL
SW5wdXRGb3JtYXRTdGF0aWMgOg0KKyAgICAgIHJlc3VsdCA9IEVUcnVlOw0KKyAgICAgIGJyZWFr
Ow0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAgIHJlc3VsdCA9IEVGYWxzZTsNCisgICAgICBicmVh
azsNCisgICAgfQ0KKyAgcmV0dXJuIHJlc3VsdDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBUSW5wdXRG
b3JtYXRDaGFyOjpOdW1lcmljQWxsb3dlZA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgVElucHV0Rm9ybWF0
Q2hhcjo6TnVtZXJpY0FsbG93ZWQoKSBjb25zdA0KLQl7DQotCVRCb29sIHJlc3VsdDsNCi0Jc3dp
dGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2FzZSBLSW5w
dXRGb3JtYXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1dEZvcm1h
dG0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TiA6DQot
CQljYXNlIEtJbnB1dEZvcm1hdFN0YXRpYyA6DQotCQkJcmVzdWx0ID0gRVRydWU7DQotCQkJYnJl
YWs7DQotDQotCQlkZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVGYWxzZTsNCi0JCQlicmVhazsNCi0J
CX0NCi0JcmV0dXJuIHJlc3VsdDsNCi0JfQ0KKyAgew0KKyAgVEJvb2wgcmVzdWx0Ow0KKyAgc3dp
dGNoKCBpQ2hhciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRYIDoNCisgICAgY2Fz
ZSBLSW5wdXRGb3JtYXR4IDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRNIDoNCisgICAgY2FzZSBL
SW5wdXRGb3JtYXRtIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRuIDoNCisgICAgY2FzZSBLSW5w
dXRGb3JtYXROIDoNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KKyAgICAgIHJlc3Vs
dCA9IEVUcnVlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAgIHJlc3Vs
dCA9IEVGYWxzZTsNCisgICAgICBicmVhazsNCisgICAgfQ0KKyAgcmV0dXJuIHJlc3VsdDsNCisg
IH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLyBUSW5wdXRGb3JtYXRDaGFyOjpTcGVjaWFsQWxsb3dlZA0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vDQogVEJvb2wgVElucHV0Rm9ybWF0Q2hhcjo6U3BlY2lhbEFsbG93ZWQoKSBjb25zdA0KLQl7
DQotCVRCb29sIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1
dEZvcm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0
WCA6DQotCQljYXNlIEtJbnB1dEZvcm1hdHggOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRNIDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0bSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG4gOg0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVUcnVlOw0KLQkJCWJyZWFrOw0KLQ0K
LQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7DQotCQkJYnJlYWs7DQotCQl9DQotCXJl
dHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRCb29sIHJlc3VsdDsNCisgIHN3aXRjaCggaUNo
YXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0QSA6DQorICAgIGNhc2UgS0lucHV0
Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2UgS0lucHV0Rm9y
bWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0
bSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0biA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0U3Rh
dGljIDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBicmVhazsNCisNCisgICAgZGVm
YXVsdDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisg
IHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6Q2hh
cg0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vDQogVFVpbnQgVElucHV0Rm9ybWF0Q2hhcjo6Q2hhcigpIGNvbnN0DQotCXsN
Ci0JcmV0dXJuIGlDaGFyOw0KLQl9DQorICB7DQorICByZXR1cm4gaUNoYXI7DQorICB9DQogDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6U3RhdGljKCkNCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRVaW50IFRJ
bnB1dEZvcm1hdENoYXI6OlN0YXRpYygpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlTdGF0aWM7DQot
CX0NCisgIHsNCisgIHJldHVybiBpU3RhdGljOw0KKyAgfQ0KIA0KIC8vID09PT09PT09PT09PT09
PT09IE1FTUJFUiBGVU5DVElPTlMgPT09PT09PT09PT09PT09PT09PT09PT0NCiANCkBAIC0yMzYs
MjggKzIzNiwyOCBAQCBUVWludCBUSW5wdXRGb3JtYXRDaGFyOjpTdGF0aWMoKSBjb25zdA0KIC8v
IG1pZ2h0IGxlYXZlLg0KIC8vDQogVFN0YXRpY0NoYXI6OlRTdGF0aWNDaGFyKCBUVWludCBhQ2hh
ciwgVEludCBhUG9zICkNCi0JOiBpQ2hhciggYUNoYXIgKQ0KLQksIGlQb3MoIGFQb3MgKQ0KLQl7
DQotCX0NCisgIDogaUNoYXIoIGFDaGFyICkNCisgICwgaVBvcyggYVBvcyApDQorICB7DQorICB9
DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8gVFN0YXRpY0NoYXI6OkNoYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRVaW50IFRTdGF0
aWNDaGFyOjpDaGFyKCkgY29uc3QNCi0Jew0KLQlyZXR1cm4gaUNoYXI7CQ0KLQl9DQorICB7DQor
ICByZXR1cm4gaUNoYXI7IA0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRTdGF0aWNDaGFyOjpQb3MNCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiAvLw0KIFRJbnQgVFN0YXRpY0NoYXI6OlBvcygpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlQ
b3M7CQ0KLQl9DQorICB7DQorICByZXR1cm4gaVBvczsgIA0KKyAgfQ0KIA0KIC8vID09PT09PT09
PT09PT09PT09IE1FTUJFUiBGVU5DVElPTlMgPT09PT09PT09PT09PT09PT09PT09PT0NCiANCkBA
IC0yNjUsOTkgKzI2NSw5OSBAQCBUSW50IFRTdGF0aWNDaGFyOjpQb3MoKSBjb25zdA0KIC8vIG1p
Z2h0IGxlYXZlLg0KIC8vDQogQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Q0lucHV0Rm9ybWF0SGFuZGxl
cigpDQotCTogaVBvc3RGaXgoIEtJbnB1dEZvcm1hdE5vbmUgKQ0KLSAgICB7DQotCX0NCisgIDog
aVBvc3RGaXgoIEtJbnB1dEZvcm1hdE5vbmUgKQ0KKyAgew0KKyAgfQ0KIA0KIC8vIEVQT0MgZGVm
YXVsdCBjb25zdHJ1Y3RvciBjYW4gbGVhdmUuDQogdm9pZCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpD
b25zdHJ1Y3RMDQotCSggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJpbmcpDQorICAoIGNvbnN0IFRE
ZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAgew0KKw0KKyAgQ0FycmF5Rml4RmxhdDxUSW50Piogc3Rh
dGljcyA9IG5ldyggRUxlYXZlIClDQXJyYXlGaXhGbGF0PFRJbnQ+KCAzICk7DQorICBDbGVhbnVw
U3RhY2s6OlB1c2hMKCBzdGF0aWNzICk7DQorICANCisgIC8vIGNvbGxlY3QgdGhlIGluZGV4ZXMg
b2Ygc3RhdGljIGNoYXJhY3RlcnMNCisgIFRCb29sIG1hcmsgPSBFRmFsc2U7DQorICBUSW50IGxl
bmd0aCA9IGFGb3JtYXRTdHJpbmcuTGVuZ3RoKCk7DQorICBmb3IgKCBUSW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKysgKQ0KICAgICB7DQorICAgIGlmICggbWFyayApIC8vIHdhcyB0aGUgcHJldmlv
dXMgY2hhcmFjdGVyIHByZWZpeD8NCisgICAgICB7DQorICAgICAgbWFyayA9IEVGYWxzZTsNCisg
ICAgICBzdGF0aWNzLT5BcHBlbmRMKCBpICk7DQorICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAg
eyAgIC8vIGlzIGl0IHByZWZpeD8NCisgICAgICBtYXJrID0gKCBhRm9ybWF0U3RyaW5nWyBpIF0g
PT0gS0lucHV0Rm9ybWF0U3RhdGljICk7DQorICAgICAgfQ0KKyAgICB9DQogDQotCUNBcnJheUZp
eEZsYXQ8VEludD4qIHN0YXRpY3MgPSBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50Pigg
MyApOw0KLQlDbGVhbnVwU3RhY2s6OlB1c2hMKCBzdGF0aWNzICk7DQotCQ0KLQkvLyBjb2xsZWN0
IHRoZSBpbmRleGVzIG9mIHN0YXRpYyBjaGFyYWN0ZXJzDQotCVRCb29sIG1hcmsgPSBFRmFsc2U7
DQotCVRJbnQgbGVuZ3RoID0gYUZvcm1hdFN0cmluZy5MZW5ndGgoKTsNCi0JZm9yICggVEludCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrICkNCi0JCXsNCi0JCWlmICggbWFyayApCS8vIHdhcyB0aGUg
cHJldmlvdXMgY2hhcmFjdGVyIHByZWZpeD8NCi0JCQl7DQotCQkJbWFyayA9IEVGYWxzZTsNCi0J
CQlzdGF0aWNzLT5BcHBlbmRMKCBpICk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsJCS8vIGlzIGl0
IHByZWZpeD8NCi0JCQltYXJrID0gKCBhRm9ybWF0U3RyaW5nWyBpIF0gPT0gS0lucHV0Rm9ybWF0
U3RhdGljICk7DQotCQkJfQ0KLQkJfQ0KLQ0KLQlUSW50IG51bWJlck9mU3RhdGljcyA9IHN0YXRp
Y3MtPkNvdW50KCk7DQotCWlNaW5MZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7DQot
CWlNYXhMZW5ndGggPSBpTWluTGVuZ3RoOw0KLQ0KLQkvLyAqZiBhbmQgbmYgaGFuZGxpbmcJDQot
CWlmICggbGVuZ3RoID4gMSAmJgkJCQkvLyBsb25nZXIgdGhhbiBvbmUgY2hhcmFjdGVyDQotCQkg
KCAhbnVtYmVyT2ZTdGF0aWNzIHx8CQkvLyB0aGVyZSBhcmUgbm8gc3RhdGljcywgb3IgaXQgaXNu
J3Qgc3RhdGljDQotCQkgICBzdGF0aWNzLT5BdCggbnVtYmVyT2ZTdGF0aWNzIC0gMSApICE9IGxl
bmd0aCAtIDIgKSApDQotCQl7DQotCQlpZiAoIGFGb3JtYXRTdHJpbmdbIGxlbmd0aCAtIDIgXSA9
PSBLSW5wdXRGb3JtYXRNdWx0aXBsaWVyICkJLy8gKmY/DQotCQkJew0KLQkJCWlQb3N0Rml4ID0g
YUZvcm1hdFN0cmluZ1sgKCAtLWxlbmd0aCApLS0gXTsNCi0JCQlpTWluTGVuZ3RoID0gbGVuZ3Ro
IC0gbnVtYmVyT2ZTdGF0aWNzOw0KLQkJCWlNYXhMZW5ndGggPSBLSW5maW5pdGVMZW5ndGg7DQot
CQkJfQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlUQ2hhciBuKCBhRm9ybWF0U3RyaW5nWyBsZW5ndGgg
LSAyIF0gKTsNCi0JCQlpZiAoIG4uSXNEaWdpdCgpICYmIG4gIT0gJzAnICkJLy8gbmY/DQotCQkJ
CXsNCi0JCQkJaVBvc3RGaXggPSBhRm9ybWF0U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBdOw0KLQkJ
CQlpTWF4TGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICsgbi5HZXROdW1lcmljVmFs
dWUoKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCX0NCi0NCi0JLy8gYWxsb2NhdGUgbWVtb3J5IGZvciBt
ZW1iZXJzDQotCWlNYXNrID0gSEJ1ZkM6Ok5ld0woIGxlbmd0aCAtIG51bWJlck9mU3RhdGljcyAp
OwkvLyBleGNlcHQgc3RhdGljIHRleHQNCi0JaVN0YXRpYyA9IG5ldyggRUxlYXZlIClDQXJyYXlG
aXhGbGF0PFRTdGF0aWNDaGFyPiggMyApOw0KLQ0KLQkvLyBjb3B5IGFGb3JtYXRTdHJpbmcgdG8g
aU1hc2sgZXhjZXB0IHN0YXRpYyB0ZXh0DQotCVRJbnQgbmV4dFN0YXRpYyA9IDA7DQotCWZvciAo
IFRJbnQgaiA9IDA7IGogPCBsZW5ndGg7IGorKyApDQotCQl7DQotCQlpZiAoIG5leHRTdGF0aWMg
PCBudW1iZXJPZlN0YXRpY3MgJiYNCi0JCQkgaiA9PSBzdGF0aWNzLT5BdCggbmV4dFN0YXRpYyAp
ICkJLy8gaXMgaXQgc3RhdGljPw0KLQkJCXsNCi0JCQkJbmV4dFN0YXRpYysrOw0KLQkJCQlpU3Rh
dGljLT5BcHBlbmRMDQotCQkJCQkoIFRTdGF0aWNDaGFyKCBhRm9ybWF0U3RyaW5nWyBqIF0sIGog
LSBuZXh0U3RhdGljICkgKTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlNYXNrLT5EZXMo
KS5BcHBlbmQoIGFGb3JtYXRTdHJpbmdbIGogXSApOw0KLQkJCX0NCi0JCX0NCisgIFRJbnQgbnVt
YmVyT2ZTdGF0aWNzID0gc3RhdGljcy0+Q291bnQoKTsNCisgIGlNaW5MZW5ndGggPSBsZW5ndGgg
LSBudW1iZXJPZlN0YXRpY3M7DQorICBpTWF4TGVuZ3RoID0gaU1pbkxlbmd0aDsNCisNCisgIC8v
ICpmIGFuZCBuZiBoYW5kbGluZyANCisgIGlmICggbGVuZ3RoID4gMSAmJiAgICAgICAgLy8gbG9u
Z2VyIHRoYW4gb25lIGNoYXJhY3Rlcg0KKyAgICAgKCAhbnVtYmVyT2ZTdGF0aWNzIHx8ICAgIC8v
IHRoZXJlIGFyZSBubyBzdGF0aWNzLCBvciBpdCBpc24ndCBzdGF0aWMNCisgICAgICAgc3RhdGlj
cy0+QXQoIG51bWJlck9mU3RhdGljcyAtIDEgKSAhPSBsZW5ndGggLSAyICkgKQ0KKyAgICB7DQor
ICAgIGlmICggYUZvcm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdID09IEtJbnB1dEZvcm1hdE11bHRp
cGxpZXIgKSAgLy8gKmY/DQorICAgICAgew0KKyAgICAgIGlQb3N0Rml4ID0gYUZvcm1hdFN0cmlu
Z1sgKCAtLWxlbmd0aCApLS0gXTsNCisgICAgICBpTWluTGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVy
T2ZTdGF0aWNzOw0KKyAgICAgIGlNYXhMZW5ndGggPSBLSW5maW5pdGVMZW5ndGg7DQorICAgICAg
fQ0KKyAgICBlbHNlDQorICAgICAgew0KKyAgICAgIFRDaGFyIG4oIGFGb3JtYXRTdHJpbmdbIGxl
bmd0aCAtIDIgXSApOw0KKyAgICAgIGlmICggbi5Jc0RpZ2l0KCkgJiYgbiAhPSAnMCcgKSAgLy8g
bmY/DQorICAgICAgICB7DQorICAgICAgICBpUG9zdEZpeCA9IGFGb3JtYXRTdHJpbmdbICggLS1s
ZW5ndGggKS0tIF07DQorICAgICAgICBpTWF4TGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0
aWNzICsgbi5HZXROdW1lcmljVmFsdWUoKTsNCisgICAgICAgIH0NCisgICAgfSANCisgIH0NCisN
CisgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgbWVtYmVycw0KKyAgaU1hc2sgPSBIQnVmQzo6TmV3
TCggbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNzICk7ICAvLyBleGNlcHQgc3RhdGljIHRleHQNCisg
IGlTdGF0aWMgPSBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUU3RhdGljQ2hhcj4oIDMgKTsN
CisNCisgIC8vIGNvcHkgYUZvcm1hdFN0cmluZyB0byBpTWFzayBleGNlcHQgc3RhdGljIHRleHQN
CisgIFRJbnQgbmV4dFN0YXRpYyA9IDA7DQorICBmb3IgKCBUSW50IGogPSAwOyBqIDwgbGVuZ3Ro
OyBqKysgKQ0KKyAgICB7DQorICAgIGlmICggbmV4dFN0YXRpYyA8IG51bWJlck9mU3RhdGljcyAm
Jg0KKyAgICAgICBqID09IHN0YXRpY3MtPkF0KCBuZXh0U3RhdGljICkgKSAvLyBpcyBpdCBzdGF0
aWM/DQorICAgICAgew0KKyAgICAgICAgbmV4dFN0YXRpYysrOw0KKyAgICAgICAgaVN0YXRpYy0+
QXBwZW5kTA0KKyAgICAgICAgICAoIFRTdGF0aWNDaGFyKCBhRm9ybWF0U3RyaW5nWyBqIF0sIGog
LSBuZXh0U3RhdGljICkgKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAg
aU1hc2stPkRlcygpLkFwcGVuZCggYUZvcm1hdFN0cmluZ1sgaiBdICk7DQorICAgICAgfQ0KKyAg
ICB9DQogDQotCWlEeW5hbWljID0gSEJ1ZkM6Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJPZlN0
YXRpY3MgKTsNCisgIGlEeW5hbWljID0gSEJ1ZkM6Ok5ld0woIGlNaW5MZW5ndGggLSBudW1iZXJP
ZlN0YXRpY3MgKTsNCiANCi0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8vIHN0YXRp
Y3MNCisgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAgLy8gc3RhdGljcw0KICAgICB9
DQogDQogLy8gVHdvLXBoYXNlZCBjb25zdHJ1Y3Rvci4NCiBDSW5wdXRGb3JtYXRIYW5kbGVyKiBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpOZXdMQw0KLQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3RyaW5n
KQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCiAgICAgew0KLQlDSW5wdXRGb3Jt
YXRIYW5kbGVyKiBzZWxmID0gbmV3KCBFTGVhdmUgKUNJbnB1dEZvcm1hdEhhbmRsZXI7DQotCUNs
ZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisgIENJbnB1dEZvcm1hdEhhbmRsZXIqIHNlbGYg
PSBuZXcoIEVMZWF2ZSApQ0lucHV0Rm9ybWF0SGFuZGxlcjsNCisgIENsZWFudXBTdGFjazo6UHVz
aEwoIHNlbGYgKTsNCiAgICAgc2VsZi0+Q29uc3RydWN0TCggYUZvcm1hdFN0cmluZyk7DQotCXJl
dHVybiBzZWxmOw0KKyAgcmV0dXJuIHNlbGY7DQogICAgIH0NCiANCiAvLyBUd28tcGhhc2VkIGNv
bnN0cnVjdG9yLg0KIENJbnB1dEZvcm1hdEhhbmRsZXIqIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5l
d0wNCi0JKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCisgICggY29uc3QgVERlc0MmIGFG
b3JtYXRTdHJpbmcpDQogICAgIHsNCiAgICAgQ0lucHV0Rm9ybWF0SGFuZGxlciogc2VsZiA9IE5l
d0xDKCBhRm9ybWF0U3RyaW5nKTsNCiAgICAgQ2xlYW51cFN0YWNrOjpQb3AoKTsNCkBAIC0zNjcs
OSArMzY3LDkgQEAgQ0lucHV0Rm9ybWF0SGFuZGxlciogQ0lucHV0Rm9ybWF0SGFuZGxlcg0KIC8v
IERlc3RydWN0b3INCiBDSW5wdXRGb3JtYXRIYW5kbGVyOjp+Q0lucHV0Rm9ybWF0SGFuZGxlcigp
DQogICAgIHsNCi0JZGVsZXRlIGlNYXNrOw0KLQlkZWxldGUgaVN0YXRpYzsNCi0JZGVsZXRlIGlE
eW5hbWljOw0KKyAgZGVsZXRlIGlNYXNrOw0KKyAgZGVsZXRlIGlTdGF0aWM7DQorICBkZWxldGUg
aUR5bmFtaWM7DQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0zOTAsMjY2ICszOTAsMjY2IEBAIEhCdWZD
KiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRUZXh0T25seUwNCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJ
bnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRMKCBjb25zdCBURGVzQyYgYVRleHQsIFRCb29sIGFO
b1ZhbGlkYXRpb24gKQ0KLQl7DQotCWlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsJLy8g
aWdub3JlIHByZXZpb3VzIHRleHQNCisgIHsNCisgIGlEeW5hbWljLT5EZXMoKS5TZXRMZW5ndGgo
IDAgKTsgLy8gaWdub3JlIHByZXZpb3VzIHRleHQNCiANCi0JLy8gaW5zZXJ0IGNoYXJzIHdoaWxl
IHRoZXkgYXJlIHZhbGlkDQotCVRJbnQgaiggMCApOw0KLQlUSW50IHRleHRMZW5ndGgoIGFUZXh0
Lkxlbmd0aCgpICk7DQotCWZvciAoIDsNCi0JCSAgaiA8IHRleHRMZW5ndGggJiYNCi0JCSAgKCBh
Tm9WYWxpZGF0aW9uIHx8IFZhbGlkYXRlQ2hhciggYVRleHRbIGogXSwgR2V0Rm9ybWF0KCBqICkg
KSApOw0KLQkJICBqKysgKQ0KLQkJew0KLQ0KLQkJaWYgKCAhR2V0Rm9ybWF0KCBqICkuU3RhdGlj
KCkgKQ0KLQkJCXsNCi0JCSAgICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7CS8vIGluc2VydCBu
b24tc3RhdGljIGNoYXJzDQotCQkJfQ0KLQkJfQ0KKyAgLy8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRo
ZXkgYXJlIHZhbGlkDQorICBUSW50IGooIDAgKTsNCisgIFRJbnQgdGV4dExlbmd0aCggYVRleHQu
TGVuZ3RoKCkgKTsNCisgIGZvciAoIDsNCisgICAgICBqIDwgdGV4dExlbmd0aCAmJg0KKyAgICAg
ICggYU5vVmFsaWRhdGlvbiB8fCBWYWxpZGF0ZUNoYXIoIGFUZXh0WyBqIF0sIEdldEZvcm1hdCgg
aiApICkgKTsNCisgICAgICBqKysgKQ0KKyAgICB7DQogDQotCXJldHVybiBqID09IHRleHRMZW5n
dGg7DQotCX0NCisgICAgaWYgKCAhR2V0Rm9ybWF0KCBqICkuU3RhdGljKCkgKQ0KKyAgICAgIHsN
CisgICAgICAgIEluc2VydEwoIGosIGFUZXh0WyBqIF0gKTsgLy8gaW5zZXJ0IG5vbi1zdGF0aWMg
Y2hhcnMNCisgICAgICB9DQorICAgIH0NCisNCisgIHJldHVybiBqID09IHRleHRMZW5ndGg7DQor
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8N
CiBIQnVmQyogQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDKCBUQm9vbCBhUmVhZGFibGUgKSBj
b25zdA0KLQl7DQotCUhCdWZDKiB0ZXh0ID0gU3RhdGljVGV4dExDKCk7CS8vIGdldCBzdGF0aWMg
dGV4dA0KLQlUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQtPkxlbmd0aCgpOw0KLQlUSW50IGR5bmFt
aWNMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCk7DQotCVRJbnQgZHluYW1pY1B0ciggMCApOw0K
LQlUSW50IHN0YXRpY1B0ciggMCApOw0KLQlUSW50IHN0YXRpY0NvdW50ZXIoIDAgKTsNCi0JVElu
dCBudW1iZXJPZlN0YXRpY3MoIGlTdGF0aWMtPkNvdW50KCkgKTsNCi0JLy8gaW5zZXJ0IGR5bmFt
aWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQotCWZvciAo
IDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7ICsrZHluYW1pY1B0ciwgKytzdGF0aWNQdHIg
KQ0KLQkJew0KLQkJLy8gZmluZCB0aGUgbmV4dCBub24tc3RhdGljIHBvc2l0aW9uDQotCQl3aGls
ZSAoIHN0YXRpY0NvdW50ZXIgPCBudW1iZXJPZlN0YXRpY3MgJiYNCi0JCQkJaVN0YXRpYy0+QXQo
IHN0YXRpY0NvdW50ZXIgKS5Qb3MoKSA9PSBzdGF0aWNQdHIgKQ0KLQkJCXsNCi0JCQkrK3N0YXRp
Y0NvdW50ZXI7DQotCQkJKytzdGF0aWNQdHI7DQotCQkJfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQg
PSBTdGF0aWNUZXh0TEMoKTsgLy8gZ2V0IHN0YXRpYyB0ZXh0DQorICBUSW50IHN0YXRpY0xlbmd0
aCA9IHRleHQtPkxlbmd0aCgpOw0KKyAgVEludCBkeW5hbWljTGVuZ3RoID0gaUR5bmFtaWMtPkxl
bmd0aCgpOw0KKyAgVEludCBkeW5hbWljUHRyKCAwICk7DQorICBUSW50IHN0YXRpY1B0ciggMCAp
Ow0KKyAgVEludCBzdGF0aWNDb3VudGVyKCAwICk7DQorICBUSW50IG51bWJlck9mU3RhdGljcygg
aVN0YXRpYy0+Q291bnQoKSApOw0KKyAgLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBz
dGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQorICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBk
eW5hbWljTGVuZ3RoOyArK2R5bmFtaWNQdHIsICsrc3RhdGljUHRyICkNCisgICAgew0KKyAgICAv
LyBmaW5kIHRoZSBuZXh0IG5vbi1zdGF0aWMgcG9zaXRpb24NCisgICAgd2hpbGUgKCBzdGF0aWND
b3VudGVyIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQorICAgICAgICBpU3RhdGljLT5BdCggc3RhdGlj
Q291bnRlciApLlBvcygpID09IHN0YXRpY1B0ciApDQorICAgICAgew0KKyAgICAgICsrc3RhdGlj
Q291bnRlcjsNCisgICAgICArK3N0YXRpY1B0cjsNCisgICAgICB9DQogDQotCQlpZiAoIHN0YXRp
Y1B0ciA8IHN0YXRpY0xlbmd0aCApCS8vIGlzIHRoZXJlIHBsYWNlIGZvciBpdD8NCi0JCQl7DQor
ICAgIGlmICggc3RhdGljUHRyIDwgc3RhdGljTGVuZ3RoICkgLy8gaXMgdGhlcmUgcGxhY2UgZm9y
IGl0Pw0KKyAgICAgIHsNCiAgICAgICAgICAgICAvKmxpbnQgLWV7MTExfSBBc3NpZ25tZW50IHRv
IGNvbnN0IG9iamVjdCAqLw0KLQkJCXRleHQtPkRlcygpWyBzdGF0aWNQdHIgXSA9IGFSZWFkYWJs
ZSA/ICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXQ0KLQkJCQkJCQkJCQkJCSA6IEtPYnNjdXJp
bmdDaGFyKClbIDAgXTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWJyZWFrOw0KLQkJCX0N
Ci0JCX0NCi0NCi0JaWYgKCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApCS8vIGFwcGVuZCB0
aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KLQkJew0KLQkJSEJ1ZkMqIG5ld1RleHQgPSB0ZXh0
LT5SZUFsbG9jTA0KLQkJCSggc3RhdGljTGVuZ3RoICsgZHluYW1pY0xlbmd0aCAtIGR5bmFtaWNQ
dHIgKyAxICk7DQotDQotCQlDbGVhbnVwU3RhY2s6OlBvcCgpOwkJCS8vIHRleHQNCi0JCUNsZWFu
dXBTdGFjazo6UHVzaEwoIG5ld1RleHQgKTsJLy8gbmV3VGV4dA0KLQkJdGV4dCA9IG5ld1RleHQ7
DQotDQotCQlpZiAoIGFSZWFkYWJsZSApDQotCQkJew0KLQkJCWZvciAoIDsgZHluYW1pY1B0ciA8
IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyApDQotCQkJCXsNCi0JCQkJdGV4dC0+RGVzKCku
QXBwZW5kKCAoICppRHluYW1pYyApWyBkeW5hbWljUHRyIF0gKTsNCi0JCQkJfQ0KLQkJCX0NCi0J
CWVsc2UNCi0JCQl7DQotCQkJZm9yICggOyBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aDsgZHlu
YW1pY1B0cisrICkNCi0JCQkJew0KLQkJCQl0ZXh0LT5EZXMoKS5BcHBlbmQoIEtPYnNjdXJpbmdD
aGFyICk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQotDQotCXRleHQtPkRlcygpLlplcm9UZXJtaW5h
dGUoKTsNCi0JcmV0dXJuIHRleHQ7DQotCX0NCisgICAgICB0ZXh0LT5EZXMoKVsgc3RhdGljUHRy
IF0gPSBhUmVhZGFibGUgPyAoICppRHluYW1pYyApWyBkeW5hbWljUHRyIF0NCisgICAgICAgICAg
ICAgICAgICAgICAgICAgOiBLT2JzY3VyaW5nQ2hhcigpWyAwIF07DQorICAgICAgfQ0KKyAgICBl
bHNlDQorICAgICAgew0KKyAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgaWYg
KCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApIC8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5
bmFtaWMgdGV4dA0KKyAgICB7DQorICAgIEhCdWZDKiBuZXdUZXh0ID0gdGV4dC0+UmVBbGxvY0wN
CisgICAgICAoIHN0YXRpY0xlbmd0aCArIGR5bmFtaWNMZW5ndGggLSBkeW5hbWljUHRyICsgMSAp
Ow0KKw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAgICAgIC8vIHRleHQNCisgICAgQ2xlYW51
cFN0YWNrOjpQdXNoTCggbmV3VGV4dCApOyAvLyBuZXdUZXh0DQorICAgIHRleHQgPSBuZXdUZXh0
Ow0KKw0KKyAgICBpZiAoIGFSZWFkYWJsZSApDQorICAgICAgew0KKyAgICAgIGZvciAoIDsgZHlu
YW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyApDQorICAgICAgICB7DQorICAg
ICAgICB0ZXh0LT5EZXMoKS5BcHBlbmQoICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXSApOw0K
KyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAgICAgIHsNCisgICAgICBmb3IgKCA7
IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyBkeW5hbWljUHRyKysgKQ0KKyAgICAgICAgew0K
KyAgICAgICAgdGV4dC0+RGVzKCkuQXBwZW5kKCBLT2JzY3VyaW5nQ2hhciApOw0KKyAgICAgICAg
fQ0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgdGV4dC0+RGVzKCkuWmVyb1Rlcm1pbmF0ZSgpOw0K
KyAgcmV0dXJuIHRleHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
SW5zZXJ0TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vDQogdm9pZCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKCBU
SW50IGFQb3MsIFRDaGFyIGFDaGFyICkNCi0Jew0KLQlUQnVmPDE+IGJ1ZjsNCi0JYnVmLkFwcGVu
ZCggYUNoYXIgKTsNCi0JSW5zZXJ0TCggYVBvcywgYnVmICk7DQotCX0NCisgIHsNCisgIFRCdWY8
MT4gYnVmOw0KKyAgYnVmLkFwcGVuZCggYUNoYXIgKTsNCisgIEluc2VydEwoIGFQb3MsIGJ1ZiAp
Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Okluc2VydEwNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIHZvaWQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TCggVEludCBhUG9zLCBjb25z
dCBURGVzQyYgYURlcyApDQotCXsNCi0JVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYygg
YVBvcyApOw0KLQlpZiAoIC0xIDwgbmV3UG9zICYmIG5ld1BvcyA8PSBpRHluYW1pYy0+TGVuZ3Ro
KCkgKQ0KLQkJew0KLQkJLy8gbWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIHNwYWNlDQotCQlUSW50
IG5ld0xlbmd0aCA9IGlEeW5hbWljLT5MZW5ndGgoKSArIGFEZXMuTGVuZ3RoKCk7DQotCQlpZiAo
IGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQotCQkJew0KLQkJCWlE
eW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5ndGggKTsNCi0JCQl9DQotDQotCQlp
RHluYW1pYy0+RGVzKCkuSW5zZXJ0KCBuZXdQb3MsIGFEZXMgKTsNCi0JCX0NCi0JfQ0KKyAgew0K
KyAgVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KKyAgaWYgKCAtMSA8
IG5ld1BvcyAmJiBuZXdQb3MgPD0gaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAgICAv
LyBtYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggc3BhY2UNCisgICAgVEludCBuZXdMZW5ndGggPSBp
RHluYW1pYy0+TGVuZ3RoKCkgKyBhRGVzLkxlbmd0aCgpOw0KKyAgICBpZiAoIGlEeW5hbWljLT5E
ZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQorICAgICAgew0KKyAgICAgIGlEeW5hbWlj
ID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5ndGggKTsNCisgICAgICB9DQorDQorICAgIGlE
eW5hbWljLT5EZXMoKS5JbnNlcnQoIG5ld1BvcywgYURlcyApOw0KKyAgICB9DQorICB9DQogDQog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6RGVsZXRlDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUQm9vbCBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpEZWxldGUoIFRJbnQgYVBvcywgVEludCBhTGVuZ3RoICkNCi0J
ew0KKyAgew0KICAgVEJvb2wgc3RhdHVzID0gRUZhbHNlOw0KLQlUSW50IG5ld1BvcyA9IFBvc0V4
bHVkaW5nU3RhdGljKCBhUG9zICk7DQotCWlmICggLTEgPCBuZXdQb3MgJiYgbmV3UG9zICsgYUxl
bmd0aCA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJew0KLQkJaUR5bmFtaWMtPkRlcygpLkRl
bGV0ZSggbmV3UG9zLCBhTGVuZ3RoICk7DQorICBUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3Rh
dGljKCBhUG9zICk7DQorICBpZiAoIC0xIDwgbmV3UG9zICYmIG5ld1BvcyArIGFMZW5ndGggPD0g
aUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAgICBpRHluYW1pYy0+RGVzKCkuRGVsZXRl
KCBuZXdQb3MsIGFMZW5ndGggKTsNCiAgICAgc3RhdHVzID0gRVRydWU7DQotCQl9DQorICAgIH0N
CiAgIHJldHVybiBzdGF0dXM7DQotCX0NCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpTdGF0aWNUZXh0TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5k
bGVyOjpTdGF0aWNUZXh0TEMoKSBjb25zdA0KLQl7DQotCVRJbnQgY291bnQgPSBpU3RhdGljLT5D
b3VudCgpOw0KLQlUSW50IGxlbmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAt
IDEgKS5Qb3MoKSArIDEgOiAwOw0KLQlIQnVmQyogZW1wdHkgPSBIQnVmQzo6TmV3TEMoIGxlbmd0
aCArIDEgKTsNCi0JZW1wdHktPkRlcygpLkZpbGwoICcgJywgbGVuZ3RoICk7DQotCWZvciAoIFRJ
bnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCi0JCXsNCi0JCVRTdGF0aWNDaGFyIHN0YXRpY0No
YXIgPSBpU3RhdGljLT5BdCggaSApOw0KKyAgew0KKyAgVEludCBjb3VudCA9IGlTdGF0aWMtPkNv
dW50KCk7DQorICBUSW50IGxlbmd0aCA9ICggY291bnQgKSA/IGlTdGF0aWMtPkF0KCBjb3VudCAt
IDEgKS5Qb3MoKSArIDEgOiAwOw0KKyAgSEJ1ZkMqIGVtcHR5ID0gSEJ1ZkM6Ok5ld0xDKCBsZW5n
dGggKyAxICk7DQorICBlbXB0eS0+RGVzKCkuRmlsbCggJyAnLCBsZW5ndGggKTsNCisgIGZvciAo
IFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCisgICAgew0KKyAgICBUU3RhdGljQ2hhciBz
dGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKTsNCiAgICAgICAgIC8qbGludCAtZXsxMTF9IEFz
c2lnbm1lbnQgdG8gY29uc3Qgb2JqZWN0ICovDQotCQllbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIu
UG9zKCkgXSA9DQotCQkJU1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7
DQotCQl9DQotDQotCWVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQotCXJldHVybiBlbXB0
eTsNCi0JfQ0KKyAgICBlbXB0eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQorICAgICAg
U1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQorICAgIH0NCisNCisg
IGVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQorICByZXR1cm4gZW1wdHk7DQorICB9DQog
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMNCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZTdGF0aWMoKSBjb25zdA0KLQl7
DQotCXJldHVybiBpU3RhdGljLT5Db3VudCgpOw0KLQl9DQorICB7DQorICByZXR1cm4gaVN0YXRp
Yy0+Q291bnQoKTsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRG
b3JtYXQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
R2V0Rm9ybWF0KCBUSW50IGFJbmRleCApIGNvbnN0DQotCXsNCi0JVFVpbnQgY29kZSA9IEtJbnB1
dEZvcm1hdE5vbmU7DQotCWlmICggLTEgPCBhSW5kZXggKQ0KLQkJew0KLQkJaWYgKCBhSW5kZXgg
PCBpTWFzay0+TGVuZ3RoKCkgKQkJLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQotCQkJew0KLQkJCWNv
ZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCi0JCQl9DQotCQllbHNlDQotCQkJew0KLQkJCWlm
ICggYUluZGV4IDwgaU1heExlbmd0aCB8fA0KLQkJCQkgaU1heExlbmd0aCA9PSBLSW5maW5pdGVM
ZW5ndGggKQkJLy8gaXMgaXQgdGhlIHBvc3RmaXg/DQotCQkJCXsNCi0JCQkJY29kZSA9IGlQb3N0
Rml4Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQ0KLQlUSW50IHN0YXRpY0NoYXIgPSAwOw0KLQlp
ZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkJCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7
DQotCQlmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0K
LQkJCXsNCi0JCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCi0JCQkJ
ew0KLQkJCQlzdGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKS5DaGFyKCk7DQotCQkJCWJyZWFr
Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KKyAgew0KKyAgVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1h
dE5vbmU7DQorICBpZiAoIC0xIDwgYUluZGV4ICkNCisgICAgew0KKyAgICBpZiAoIGFJbmRleCA8
IGlNYXNrLT5MZW5ndGgoKSApICAgLy8gaXMgaXQgaW4gdGhlIG1hc2s/DQorICAgICAgew0KKyAg
ICAgIGNvZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCisgICAgICB9DQorICAgIGVsc2UNCisg
ICAgICB7DQorICAgICAgaWYgKCBhSW5kZXggPCBpTWF4TGVuZ3RoIHx8DQorICAgICAgICAgaU1h
eExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKSAgICAvLyBpcyBpdCB0aGUgcG9zdGZpeD8NCisg
ICAgICAgIHsNCisgICAgICAgIGNvZGUgPSBpUG9zdEZpeDsNCisgICAgICAgIH0NCisgICAgICB9
DQorICAgIH0NCisNCisgIFRJbnQgc3RhdGljQ2hhciA9IDA7DQorICBpZiAoIGNvZGUgPT0gS0lu
cHV0Rm9ybWF0U3RhdGljICkgICAgIC8vIGlzIGl0IHN0YXRpYz8NCisgICAgew0KKyAgICBmb3Ig
KCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KKyAgICAgIHsN
CisgICAgICBpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPT0gYUluZGV4ICkNCisgICAgICAg
IHsNCisgICAgICAgIHN0YXRpY0NoYXIgPSBpU3RhdGljLT5BdCggaSApLkNoYXIoKTsNCisgICAg
ICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gVElu
cHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciApOw0KLQl9DQorICByZXR1cm4gVElucHV0
Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1
dEZvcm1hdEhhbmRsZXI6OlBvc3RGaXgNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlQb3N0Rml4
Ow0KLQl9DQorICB7DQorICByZXR1cm4gaVBvc3RGaXg7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6TWluTGVuZ3RoDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1h
dEhhbmRsZXI6Ok1pbkxlbmd0aCgpIGNvbnN0DQotCXsNCi0JcmV0dXJuIGlNaW5MZW5ndGg7DQot
CX0NCisgIHsNCisgIHJldHVybiBpTWluTGVuZ3RoOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1
dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpNYXhMZW5ndGgoKSBjb25zdA0KLQl7DQotCXJldHVybiBpTWF4TGVuZ3RoOw0KLQl9
DQorICB7DQorICByZXR1cm4gaU1heExlbmd0aDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRG
b3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1h
dEhhbmRsZXI6OlZhbGlkYXRlQ2hhcg0KLQkoIFRDaGFyIGFDaGFyLCBUSW5wdXRGb3JtYXRDaGFy
IGFGb3JtYXRDaGFyICkgY29uc3QNCi0Jew0KKyAgKCBUQ2hhciBhQ2hhciwgVElucHV0Rm9ybWF0
Q2hhciBhRm9ybWF0Q2hhciApIGNvbnN0DQorICB7DQogICAgIFRCb29sIG1hdGNoKCBFRmFsc2Ug
KTsNCiANCi0JaWYgKCBhRm9ybWF0Q2hhci5TdGF0aWMoKSApCQkvLyBpcyBpdCBzdGF0aWM/DQot
CQl7DQotCQltYXRjaCA9ICggYUNoYXIgPT0gYUZvcm1hdENoYXIuU3RhdGljKCkgKTsNCi0JCX0N
Ci0JZWxzZQ0KLQkJew0KLQkJaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKQkJLy8gaXMgaXQgbnVtYmVy
Pw0KLQkJCXsNCi0JCQltYXRjaCA9IGFGb3JtYXRDaGFyLk51bWVyaWNBbGxvd2VkKCk7DQotCQkJ
fQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlpZiAoIGFDaGFyLklzQWxwaGEoKSApCS8vIGlzIGl0IGFs
cGhhYmV0aWNhbD8NCi0JCQkJew0KLQkJCQlUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRDYXNlIGZv
cmNlZENhc2UgPSBhRm9ybWF0Q2hhci5Gb3JjZWRDYXNlKCk7DQotCQkJCW1hdGNoID0gKCBmb3Jj
ZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dE5vbmUgKQ0KLQkJCQkJPyBFVHJ1ZQ0K
LQkJCQkJOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KLQkJCQkJCWZvcmNlZENhc2UgPT0gVElucHV0
Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkgfHwNCi0JCQkJCSAgKCBhQ2hhci5Jc0xvd2Vy
KCkgJiYNCi0JCQkJCQlmb3JjZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2Vy
Q2FzZSApOw0KKyAgaWYgKCBhRm9ybWF0Q2hhci5TdGF0aWMoKSApICAgLy8gaXMgaXQgc3RhdGlj
Pw0KKyAgICB7DQorICAgIG1hdGNoID0gKCBhQ2hhciA9PSBhRm9ybWF0Q2hhci5TdGF0aWMoKSAp
Ow0KKyAgICB9DQorICBlbHNlDQorICAgIHsNCisgICAgaWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKSAg
ICAvLyBpcyBpdCBudW1iZXI/DQorICAgICAgew0KKyAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIu
TnVtZXJpY0FsbG93ZWQoKTsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAg
aWYgKCBhQ2hhci5Jc0FscGhhKCkgKSAgLy8gaXMgaXQgYWxwaGFiZXRpY2FsPw0KKyAgICAgICAg
ew0KKyAgICAgICAgVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0Q2FzZSBmb3JjZWRDYXNlID0gYUZv
cm1hdENoYXIuRm9yY2VkQ2FzZSgpOw0KKyAgICAgICAgbWF0Y2ggPSAoIGZvcmNlZENhc2UgPT0g
VElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0Tm9uZSApDQorICAgICAgICAgID8gRVRydWUNCisgICAg
ICAgICAgOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KKyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0g
VElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkgfHwNCisgICAgICAgICAgICAoIGFD
aGFyLklzTG93ZXIoKSAmJg0KKyAgICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0
Q2hhcjo6RUlucHV0TG93ZXJDYXNlICk7DQogICAgICAgICAvLyBJZiBub24td2VzdGVybiBhbHBo
YSB0aGVuIGFzc3VtZSB0aGVyZSBpcyBubyB1cHBlciBhbmQgbG93ZXIgY2FzZQ0KICAgICAgICAg
Ly8gLSBzbyBjaGVjayBmb3IgTGV0dGVyT3RoZXIgb3IgTGV0dGVyQ2hpbmEvTGV0dGVyVGhhaSAo
ZGVwZW5kaW5nIHVwb24gdmFyaWFudCkuDQogICAgICAgICAvLyBJZiBpbnZhbGlkIGNoYXIgZm9y
IGZvcm1hdCwgdmFsdWUgb2YgIm1hdGNoIiBpcyByZXRhaW5lZC4gDQpAQCAtNjc1LDEyOSArNjc1
LDEyOSBAQCBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAgICAgICAg
ICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgIH0NCi0JCQkJfQ0K
LQkJCWVsc2UNCi0JCQkJewkJCQkJLy8gaXQncyBwdW5jdHVhdG9yIG9yIHN5bWJvbA0KLQkJCQlt
YXRjaCA9IGFGb3JtYXRDaGFyLlNwZWNpYWxBbGxvd2VkKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9
DQorICAgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAgICAgey8vIGl0J3MgcHVuY3R1YXRvciBv
ciBzeW1ib2wNCisgICAgICAgIG1hdGNoID0gYUZvcm1hdENoYXIuU3BlY2lhbEFsbG93ZWQoKTsN
CisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCiANCi0JcmV0dXJuIG1hdGNoOw0KLQl9DQor
ICByZXR1cm4gbWF0Y2g7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
VmFsaWRhdGVUZXh0TEMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIENBcnJheUZpeEZsYXQ8VEludD4qIENJbnB1dEZv
cm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4dExDKCkgY29uc3QNCi0Jew0KLQlDQXJyYXlGaXhGbGF0
PFRJbnQ+KiBlcnJvcnMgPQ0KLQkJbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VEludD4oIDMg
KTsNCi0JQ2xlYW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQotDQotCUhCdWZDKiB0ZXh0ID0g
VGV4dExDKCk7DQotCVRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KLQlmb3IgKCBUSW50
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KLQkJew0KLQkJaWYgKCAhVmFsaWRhdGVDaGFyKCAo
ICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKSApDQotCQkJew0KLQkJCWVycm9ycy0+QXBw
ZW5kTCggaSApOw0KLQkJCX0NCi0JCX0NCi0JCQ0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ry
b3koKTsJLy8gdGV4dA0KLQlyZXR1cm4gZXJyb3JzOw0KLQl9DQorICB7DQorICBDQXJyYXlGaXhG
bGF0PFRJbnQ+KiBlcnJvcnMgPQ0KKyAgICBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50
PiggMyApOw0KKyAgQ2xlYW51cFN0YWNrOjpQdXNoTCggZXJyb3JzICk7DQorDQorICBIQnVmQyog
dGV4dCA9IFRleHRMQygpOw0KKyAgVEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQorICBm
b3IgKCBUSW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggIVZh
bGlkYXRlQ2hhciggKCAqdGV4dCApWyBpIF0sIEdldEZvcm1hdCggaSApICkgKQ0KKyAgICAgIHsN
CisgICAgICBlcnJvcnMtPkFwcGVuZEwoIGkgKTsNCisgICAgICB9DQorICAgIH0NCisgICAgDQor
ICBDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsgIC8vIHRleHQNCisgIHJldHVybiBlcnJv
cnM7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0
TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vDQogVEJvb2wgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCgp
IGNvbnN0DQotCXsNCi0JSEJ1ZkMqIHRleHQgPSBUZXh0TEMoKTsNCi0JVEludCBsZW5ndGgoIHRl
eHQtPkxlbmd0aCgpICk7DQotCVRJbnQgaTsNCi0JZm9yICggaSA9IDA7DQotCQkgIGkgPCBsZW5n
dGggJiYgVmFsaWRhdGVDaGFyKCAoICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKTsNCi0J
CSAgaSsrICkNCi0JCXt9DQotCQkNCi0JQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8v
IHRleHQNCi0JcmV0dXJuICggaSA9PSBsZW5ndGggKTsNCi0JfQ0KKyAgew0KKyAgSEJ1ZkMqIHRl
eHQgPSBUZXh0TEMoKTsNCisgIFRJbnQgbGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KKyAgVElu
dCBpOw0KKyAgZm9yICggaSA9IDA7DQorICAgICAgaSA8IGxlbmd0aCAmJiBWYWxpZGF0ZUNoYXIo
ICggKnRleHQgKVsgaSBdLCBHZXRGb3JtYXQoIGkgKSApOw0KKyAgICAgIGkrKyApDQorICAgIHt9
DQorICAgIA0KKyAgQ2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7ICAvLyB0ZXh0DQorICBy
ZXR1cm4gKCBpID09IGxlbmd0aCApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhh
bmRsZXI6OlBvc0luY2x1ZGluZ1N0YXRpYw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRI
YW5kbGVyOjpQb3NJbmNsdWRpbmdTdGF0aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICkNCi0J
ew0KLQlUSW50IGkgPSAwOw0KLQlUSW50IGNvdW50ID0gaVN0YXRpYy0+Q291bnQoKTsNCi0JZm9y
ICggOyBpIDwgY291bnQ7IGkrKyApDQotCQl7DQotCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9z
KCkgPD0gYVBvc0V4bHVkaW5nU3RhdGljICkNCi0JCQl7DQotCQkJYVBvc0V4bHVkaW5nU3RhdGlj
Kys7DQotCQkJfQ0KLQkJfQ0KKyAgew0KKyAgVEludCBpID0gMDsNCisgIFRJbnQgY291bnQgPSBp
U3RhdGljLT5Db3VudCgpOw0KKyAgZm9yICggOyBpIDwgY291bnQ7IGkrKyApDQorICAgIHsNCisg
ICAgaWYgKCBpU3RhdGljLT5BdCggaSApLlBvcygpIDw9IGFQb3NFeGx1ZGluZ1N0YXRpYyApDQor
ICAgICAgew0KKyAgICAgIGFQb3NFeGx1ZGluZ1N0YXRpYysrOw0KKyAgICAgIH0NCisgICAgfQ0K
IA0KLQlyZXR1cm4gYVBvc0V4bHVkaW5nU3RhdGljOw0KLQl9DQorICByZXR1cm4gYVBvc0V4bHVk
aW5nU3RhdGljOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4
bHVkaW5nU3RhdGljDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4
bHVkaW5nU3RhdGljKCBUSW50IGFQb3NJbmNsdWRpbmdTdGF0aWMgKQ0KLQl7DQotCS8vIGZpbmQg
dGhlIG5lYXJlc3Qgc3RhdGljIGNoYXJhY3RlciBiZWZvcmUgYVBvc0luY2x1ZGluZ1N0YXRpYw0K
LQlUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCi0JZm9yICggOw0KLQkJICBpID4gLTEg
JiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQotCQkgIGkt
LSApDQotCQl7CQ0KLQkJfQ0KKyAgew0KKyAgLy8gZmluZCB0aGUgbmVhcmVzdCBzdGF0aWMgY2hh
cmFjdGVyIGJlZm9yZSBhUG9zSW5jbHVkaW5nU3RhdGljDQorICBUSW50IGkgPSBpU3RhdGljLT5D
b3VudCgpIC0gMTsNCisgIGZvciAoIDsNCisgICAgICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0
YXRpYyA8IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQorICAgICAgaS0tICkNCisgICAgeyANCisg
ICAgfQ0KIA0KLQlyZXR1cm4gKCBhUG9zSW5jbHVkaW5nU3RhdGljIC0gaSAtIDEgKTsNCi0JfQ0K
KyAgcmV0dXJuICggYVBvc0luY2x1ZGluZ1N0YXRpYyAtIGkgLSAxICk7DQorICB9DQogDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMNCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0K
IFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNOb25TdGF0aWMoIFRJbnQgYVBvcyAp
DQotCXsNCi0JVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICk7DQorICB7DQorICBUSW50IHBvc0V4bHVkaW5nU3RhdGljID0gUG9zRXhsdWRpbmdTdGF0aWMo
IGFQb3MgKTsNCiANCi0JcmV0dXJuICggLTEgPCBwb3NFeGx1ZGluZ1N0YXRpYyApDQotCQk/IFBv
c0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQot
CX0NCisgIHJldHVybiAoIC0xIDwgcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA/IFBvc0luY2x1
ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA6IEtOb3RGb3VuZDsNCisgIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
Ly8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5leHROb25TdGF0aWMoIFRJbnQgYVBvcyAp
DQotCXsNCi0JVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9z
ICkgKyAxOw0KKyAgew0KKyAgVEludCBwb3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3Rh
dGljKCBhUG9zICkgKyAxOw0KIA0KLQlyZXR1cm4gKCBwb3NFeGx1ZGluZ1N0YXRpYyA8IGlEeW5h
bWljLT5MZW5ndGgoKSApDQotCQk/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0
aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQotCX0NCisgIHJldHVybiAoIHBvc0V4bHVkaW5nU3RhdGlj
IDwgaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgPyBQb3NJbmNsdWRpbmdTdGF0aWMoIHBvc0V4
bHVkaW5nU3RhdGljICkNCisgICAgOiBLTm90Rm91bmQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3Jt
YXRIYW5kbGVyOjpGaXJzdEVtcHR5KCkNCi0Jew0KLQlyZXR1cm4gUG9zSW5jbHVkaW5nU3RhdGlj
KCBpRHluYW1pYy0+TGVuZ3RoKCkgKTsNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIFBvc0luY2x1ZGlu
Z1N0YXRpYyggaUR5bmFtaWMtPkxlbmd0aCgpICk7DQorICB9DQogDQogDQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtODA1
LDcgKzgwNSw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSgpDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKCBUSW50IGFQ
b3MgKQ0KLQl7DQorICB7DQogICBUSW50IHByZXZTdGF0aWNQb3MgPSAwOw0KICAgVEludCBpID0g
aVN0YXRpYy0+Q291bnQoKSAtIDE7DQogICBmb3IgKCA7IGkgPj0gMCAmJiAgaVN0YXRpYy0+QXQo
IGkgKS5Qb3MoKSA+IGFQb3M7IGktLSApDQpAQCAtODE1LDcgKzgxNSw3IEBAIFRJbnQgQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMNCiAgICAgcHJldlN0YXRpY1BvcyAgPSBpU3Rh
dGljLT5BdCggaSApLlBvcygpIDsNCiAgICAgfQ0KICAgcmV0dXJuIHByZXZTdGF0aWNQb3MgOw0K
LQl9DQorICB9DQogDQogDQogDQpAQCAtODI0LDcgKzgyNCw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0
SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhh
bmRsZXI6OklzUG9zU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50IGkgPSBp
U3RhdGljLT5Db3VudCgpIC0gMTsNCiAgIGZvciAoIDsgaSA+PSAwICYmICBpU3RhdGljLT5BdCgg
aSApLlBvcygpICE9IGFQb3M7IGktLSApDQogICAgIHt9DQpAQCAtODMzLDYgKzgzMyw2IEBAIFRC
b29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OklzUG9zU3RhdGljKCANCiAgICAgcmV0dXJuIEVUcnVl
Ow0KICAgICB9DQogICByZXR1cm4gRUZhbHNlOw0KLQl9DQorICB9DQogDQogLy8gIEVuZCBvZiBG
aWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZv
cm1hdHRlZEVkaXRvci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvcmUvRm9y
bWNvbnRyb2xzL3NyYy9GSW5wdXRsRm9ybWF0dGVkRWRpdG9yLmNwcAkocmV2aXNpb24gMTg4NTgp
DQorKysgV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRl
ZEVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0xMTE1LDYgKzExMTUsMTQgQEAgVEJvb2wg
Q0lucHV0Rm9ybWF0dGVkRWRpdG9yOjpVcGRhdGVFZGl0aQ0KIA0KICAgICBpZiAoIGlIYW5kbGVy
ICkNCiAgICAgICAgIHsNCisgICAgICAgIC8vVGhpcyBjYXNlIG9jY3VycyB3aGVuIHRoZXJlIGlz
IFdBUCBDU1MgcHJlc2VudC4gU2V0IHRoZSANCisgICAgICAgIC8vZGVmYXVsdCB2YWx1ZSBmb3Ig
dGhlIGlucHV0IG1vZGUgYW5kIGlucHV0IGNhc2UuIFRoZSBkZWZhdWx0IA0KKyAgICAgICAgLy92
YWx1ZSBpcyByZXF1aXJlZCB3aGVuIGludmFsaWQgaW5wdXQgbWFzayBvZiBXQVAgQ1NTIGlzIHBy
ZXNlbnQuDQorICAgICAgICAvL1RoZSBkZWZhbHQgdmFsdWUgb2YgV0FQIENTUyBpbnB1dCBtYXNr
IGlzICIqTSIuIEFsc28sIGJlIGNhcmVmdWwNCisgICAgICAgIC8vb2YgY2hhbmdpbmcgdGhlICJh
bGxvd2VkSW5wdXRNb2RlcyIgZnJvbSBFQWtuRWRpdG9yQWxsSW5wdXRNb2Rlcy4gICAgICAgDQor
ICAgICAgICANCisgICAgICAgIGZlcENhc2UgPSBjdXJyZW50Q2FzZSA9IEVBa25FZGl0b3JVcHBl
ckNhc2U7DQorICAgICAgICANCiAgICAgICAgIFRJbnB1dEZvcm1hdENoYXIgZm9ybWF0ID0gaUhh
bmRsZXItPkdldEZvcm1hdCggYURvY1BvcyApOw0KIA0KICAgICAgICAgaWYgKCBpRm9ybWF0LkNo
YXIoKSAhPSBmb3JtYXQuQ2hhcigpICkNCkBAIC0xMTMxLDcgKzExMzksNyBAQCBUQm9vbCBDSW5w
dXRGb3JtYXR0ZWRFZGl0b3I6OlVwZGF0ZUVkaXRpDQogDQogICAgICAgICAgICAgaWYgKCBmb3Jt
YXQuU3VnZ2VzdGVkQ2FzZSgpID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2VyQ2FzZSAp
DQogICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgZmVwQ2FzZSA9IHBlcm1pdHRl
ZENhc2UgPSBFQWtuRWRpdG9yTG93ZXJDYXNlOw0KKyAgICAgICAgICAgICAgICBmZXBDYXNlID0g
Y3VycmVudENhc2UgID0gcGVybWl0dGVkQ2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQogICAg
ICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICBpZiAoZm9ybWF0LlNwZWNpYWxBbGxvd2Vk
KCkpDQpAQCAtMTE0Nyw2ICsxMTU1LDEwIEBAIFRCb29sIENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6
VXBkYXRlRWRpdGkNCiAgICAgICAgICAgICBpZiAoIGZvcm1hdC5OdW1lcmljQWxsb3dlZCgpICkN
CiAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICBpbnB1dE1vZGUgPSBFQWtuRWRp
dG9yTnVtZXJpY0lucHV0TW9kZTsNCisgICAgICAgICAgICAgICAgLy9JZiBudW1lcmljLCB0aGVu
IGZvbGxvd2luZyB2YWx1ZXMgZG9lc24ndCBtYXR0ZXIuIEJ1dCwNCisgICAgICAgICAgICAgICAg
Ly9pdCBhdm9pZHMgcGFuaWMgaW4gdGhlIEF2a29uIEZFUCBzZXJ2ZXIgbGF0ZXIgaW4gY2FzZSBs
aWtlDQorICAgICAgICAgICAgICAgIC8vIk5OQUFOTmFhIiBkdXJpbmcgY2FsbCBTZXRBa25FZGl0
b3JDdXJyZW50SW5wdXRNb2RlKC4uKS4gIA0KKyAgICAgICAgICAgICAgICBTZXRBa25FZGl0b3JQ
ZXJtaXR0ZWRDYXNlTW9kZXMoIEVBa25FZGl0b3JBbGxDYXNlTW9kZXMgKTsNCiAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgew0K
</data>
<flag name="review"
          id="4703"
          type_id="1"
          status="+"
          setter="Sachin.Padma"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12743</attachid>
            <date>2007-01-29 08:41:12 -0800</date>
            <delta_ts>2007-01-29 13:45:33 -0800</delta_ts>
            <desc>Patch for 3.1m</desc>
            <filename>wapcss3-1noFormat.patch</filename>
            <type>text/plain</type>
            <size>38385</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTIyNCkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDQ5IEBADQorMjAwNy0wMS0yOSAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IHlvbmdqdW4uemhhbmdAbm9raWEuY29tLg0K
KyAgICAgICAgREVTQzogV0FQIENTUyBzcGVjaWZpYyBjaGFyYWN0ZXIgZm9ybWF0IGNhdXNpbmcg
cGhvbmUga2V5cGFkIGlucHV0IGVycm9yDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIzMg0KKw0KKyAgICAgICAgKiBCcm93c2VyQ29yZS9Gb3JtY29u
dHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHA6DQorICAgICAgICAoVElucHV0Rm9y
bWF0Q2hhcjo6VElucHV0Rm9ybWF0Q2hhcik6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6
Rm9yY2VkQ2FzZSk6DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6U3VnZ2VzdGVkQ2FzZSk6
DQorICAgICAgICAoVElucHV0Rm9ybWF0Q2hhcjo6QWxwaGFBbGxvd2VkKToNCisgICAgICAgIChU
SW5wdXRGb3JtYXRDaGFyOjpOdW1lcmljQWxsb3dlZCk6DQorICAgICAgICAoVElucHV0Rm9ybWF0
Q2hhcjo6U3BlY2lhbEFsbG93ZWQpOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OkNoYXIp
Og0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6OlN0YXRpYyk6DQorICAgICAgICAoVFN0YXRp
Y0NoYXI6OlRTdGF0aWNDaGFyKToNCisgICAgICAgIChUU3RhdGljQ2hhcjo6Q2hhcik6DQorICAg
ICAgICAoVFN0YXRpY0NoYXI6OlBvcyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
Q0lucHV0Rm9ybWF0SGFuZGxlcik6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Q29u
c3RydWN0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TmV3TEMpOg0KKyAgICAg
ICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0wpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhh
bmRsZXI6On5DSW5wdXRGb3JtYXRIYW5kbGVyKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5k
bGVyOjpTZXRUZXh0TCk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4dExDKToN
CisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpJbnNlcnRMKToNCisgICAgICAgIChDSW5w
dXRGb3JtYXRIYW5kbGVyOjpEZWxldGUpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6
OlN0YXRpY1RleHRMQyk6DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVtYmVyT2ZT
dGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OkdldEZvcm1hdCk6DQorICAg
ICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6TWluTGVuZ3RoKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpN
YXhMZW5ndGgpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlQ2hhcik6
DQorICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TEMpOg0KKyAgICAg
ICAgKENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4dEwpOg0KKyAgICAgICAgKENJbnB1
dEZvcm1hdEhhbmRsZXI6OlBvc0luY2x1ZGluZ1N0YXRpYyk6DQorICAgICAgICAoQ0lucHV0Rm9y
bWF0SGFuZGxlcjo6UG9zRXhsdWRpbmdTdGF0aWMpOg0KKyAgICAgICAgKENJbnB1dEZvcm1hdEhh
bmRsZXI6OlByZXZpb3VzTm9uU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVy
OjpOZXh0Tm9uU3RhdGljKToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpGaXJzdEVt
cHR5KToNCisgICAgICAgIChDSW5wdXRGb3JtYXRIYW5kbGVyOjpQcmV2aW91c1N0YXRpYyk6DQor
ICAgICAgICAoQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SXNQb3NTdGF0aWMpOg0KKyAgICAgICAgKiBC
cm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZJbnB1dGxGb3JtYXR0ZWRFZGl0b3IuY3BwOg0K
KyAgICAgICAgKENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGluZ1BhcmFtZXRlcnMp
Og0KKw0KIDIwMDctMDEtMjYgIHNwYWRtYSAgPFNhY2hpbi5QYWRtYUBub2tpYS5jb20+DQogDQog
ICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiwgbGFuZGVkIGJ5IGJyYWQuDQpJbmRleDogV2ViS2l0
L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250
cm9sZm9ybWF0aGFuZGxlci5jcHAJKHJldmlzaW9uIDE5MjIxKQ0KKysrIFdlYktpdC9Ccm93c2Vy
Q29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250cm9sZm9ybWF0aGFuZGxlci5jcHAJKHdvcmtpbmcg
Y29weSkNCkBAIC05LDkgKzksOSBAQA0KICogICAgQ29weXJpZ2h0IChjKSAyMDA2LCBOb2tpYSBD
b3Jwb3JhdGlvbg0KICogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqICANCi0qICAJUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0DQotKiAgCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucw0KLSogIAlhcmUgbWV0Og0KKyogICBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQorKiAgIGFyZSBtZXQ6DQogKiAgDQogKiAgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuDQpAQCAtMjMsMTggKzIzLDE4IEBADQogKiAgICAgICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQogKiAgICAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLg0KICogIA0KLSogIAlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQotKiAgCSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UDQotKiAgCUxJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUg0KLSogIAlBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KLSogIAlPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwNCi0qICAJU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVA0K
LSogIAlMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwNCi0qICAJREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQotKiAgCVRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0q
ICAJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUNCi0qICAJVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KLSogIAlEQU1BR0UuDQorKiAgIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMN
CisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QNCisqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorKiAgIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUDQorKiAg
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLA0KKyogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KKyogICBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkNCisqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0KKyogICBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQor
KiAgIERBTUFHRS4NCiAqICANCiAqICAgIFBsZWFzZSBzZWUgZmlsZSBwYXRlbnRsaWNlbnNlLnR4
dCBmb3IgZnVydGhlciBncmFudHMuDQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkBAIC02NCwx
NzEgKzY0LDE3MSBAQCBzdGF0aWMgY29uc3QgVFVpbnQgS0lucHV0Rm9ybWF0TXVsdGlwbGllDQog
Ly8gbWlnaHQgbGVhdmUuDQogLy8NCiBUSW5wdXRGb3JtYXRDaGFyOjpUSW5wdXRGb3JtYXRDaGFy
KCBUVWludCBhQ2hhciwgVFVpbnQgYVN0YXRpYyApDQotCTogaUNoYXIoIGFDaGFyICkNCi0Jew0K
LQlpU3RhdGljID0gKCBhQ2hhciA9PSBLSW5wdXRGb3JtYXRTdGF0aWMgKSA/IGFTdGF0aWMgOiAw
Ow0KLQl9DQorICA6IGlDaGFyKCBhQ2hhciApDQorICB7DQorICBpU3RhdGljID0gKCBhQ2hhciA9
PSBLSW5wdXRGb3JtYXRTdGF0aWMgKSA/IGFTdGF0aWMgOiAwOw0KKyAgfQ0KIA0KIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8v
IFRJbnB1dEZvcm1hdENoYXI6OkZvcmNlZENhc2UNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENo
YXI6OlRJbnB1dENhc2UgVElucHV0Rm9ybWF0Q2hhcjo6Rm9yY2VkQ2FzZSgpIGNvbnN0DQotCXsN
Ci0JVElucHV0Q2FzZSByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRBIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0WCA6DQotCQkJcmVzdWx0ID0gRUlu
cHV0VXBwZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRhIDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQkJcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KLQkJ
CWJyZWFrOw0KLQ0KLQkJY2FzZSBLSW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0
TiA6DQotCQkJcmVzdWx0ID0gRUlucHV0TnVtZXJpY0Nhc2U7DQotCQkJYnJlYWs7DQotDQotCQlk
ZWZhdWx0Og0KLQkJCXJlc3VsdCA9IEVJbnB1dE5vbmU7DQotCQkJYnJlYWs7DQotCQl9DQotCXJl
dHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRJbnB1dENhc2UgcmVzdWx0Ow0KKyAgc3dpdGNo
KCBpQ2hhciApDQorICAgIHsNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRBIDoNCisgICAgY2FzZSBL
SW5wdXRGb3JtYXRYIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQorICAgICAg
YnJlYWs7DQorDQorICAgIGNhc2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9y
bWF0eCA6DQorICAgICAgcmVzdWx0ID0gRUlucHV0TG93ZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0K
Kw0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG4gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE4gOg0K
KyAgICAgIHJlc3VsdCA9IEVJbnB1dE51bWVyaWNDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAg
ICBkZWZhdWx0Og0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dE5vbmU7DQorICAgICAgYnJlYWs7DQor
ICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0
Q2hhcjo6U3VnZ2VzdGVkQ2FzZQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVElucHV0Rm9ybWF0Q2hhcjo6VElucHV0
Q2FzZSBUSW5wdXRGb3JtYXRDaGFyOjpTdWdnZXN0ZWRDYXNlKCkgY29uc3QNCi0Jew0KLQlUSW5w
dXRDYXNlIHJlc3VsdDsNCi0Jc3dpdGNoKCBpQ2hhciApDQotCQl7DQotCQljYXNlIEtJbnB1dEZv
cm1hdEEgOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6
DQotCQkJcmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRhIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQljYXNlIEtJbnB1dEZv
cm1hdG0gOg0KLQkJCXJlc3VsdCA9IEVJbnB1dExvd2VyQ2FzZTsNCi0JCQlicmVhazsNCi0NCi0J
CWNhc2UgS0lucHV0Rm9ybWF0biA6DQotCQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJCXJlc3Vs
dCA9IEVJbnB1dE51bWVyaWNDYXNlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQly
ZXN1bHQgPSBFSW5wdXROb25lOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0K
LQl9DQorICB7DQorICBUSW5wdXRDYXNlIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAg
ICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0QSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6
DQorICAgICAgcmVzdWx0ID0gRUlucHV0VXBwZXJDYXNlOw0KKyAgICAgIGJyZWFrOw0KKw0KKyAg
ICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdHggOg0KKyAgICBj
YXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICAgIHJlc3VsdCA9IEVJbnB1dExvd2VyQ2FzZTsNCisg
ICAgICBicmVhazsNCisNCisgICAgY2FzZSBLSW5wdXRGb3JtYXRuIDoNCisgICAgY2FzZSBLSW5w
dXRGb3JtYXROIDoNCisgICAgICByZXN1bHQgPSBFSW5wdXROdW1lcmljQ2FzZTsNCisgICAgICBi
cmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICAvL0Fsc28sIHVzZWQgZm9yIEtJbnB1dEZv
cm1hdE0uIERlZmF1bHQgY2FzZS4NCisgICAgICByZXN1bHQgPSBFSW5wdXROb25lOw0KKyAgICAg
IGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJ
bnB1dEZvcm1hdENoYXI6OkFscGhhQWxsb3dlZA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgVElucHV0Rm9y
bWF0Q2hhcjo6QWxwaGFBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7DQotCXN3
aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoNCi0JCWNhc2UgS0lu
cHV0Rm9ybWF0YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2FzZSBLSW5wdXRGb3Jt
YXR4IDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG0gOg0K
LQkJY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJCXJlc3VsdCA9IEVUcnVlOw0KLQkJCWJy
ZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQgPSBFRmFsc2U7DQotCQkJYnJlYWs7DQot
CQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsNCisgIFRCb29sIHJlc3VsdDsNCisgIHN3
aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0QSA6DQorICAgIGNh
c2UgS0lucHV0Rm9ybWF0YSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2Ug
S0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TSA6DQorICAgIGNhc2UgS0lu
cHV0Rm9ybWF0bSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0U3RhdGljIDoNCisgICAgICByZXN1
bHQgPSBFVHJ1ZTsNCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICByZXN1
bHQgPSBFRmFsc2U7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisgIHJldHVybiByZXN1bHQ7DQor
ICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hhcjo6TnVtZXJpY0FsbG93ZWQNCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIFRCb29sIFRJbnB1dEZvcm1hdENoYXI6Ok51bWVyaWNBbGxvd2VkKCkgY29uc3QNCi0J
ew0KLQlUQm9vbCByZXN1bHQ7DQotCXN3aXRjaCggaUNoYXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5w
dXRGb3JtYXRYIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0eCA6DQotCQljYXNlIEtJbnB1dEZvcm1h
dE0gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRtIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0biA6DQot
CQljYXNlIEtJbnB1dEZvcm1hdE4gOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXRTdGF0aWMgOg0KLQkJ
CXJlc3VsdCA9IEVUcnVlOw0KLQkJCWJyZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlyZXN1bHQg
PSBFRmFsc2U7DQotCQkJYnJlYWs7DQotCQl9DQotCXJldHVybiByZXN1bHQ7DQotCX0NCisgIHsN
CisgIFRCb29sIHJlc3VsdDsNCisgIHN3aXRjaCggaUNoYXIgKQ0KKyAgICB7DQorICAgIGNhc2Ug
S0lucHV0Rm9ybWF0WCA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0eCA6DQorICAgIGNhc2UgS0lu
cHV0Rm9ybWF0TSA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0bSA6DQorICAgIGNhc2UgS0lucHV0
Rm9ybWF0biA6DQorICAgIGNhc2UgS0lucHV0Rm9ybWF0TiA6DQorICAgIGNhc2UgS0lucHV0Rm9y
bWF0U3RhdGljIDoNCisgICAgICByZXN1bHQgPSBFVHJ1ZTsNCisgICAgICBicmVhazsNCisNCisg
ICAgZGVmYXVsdDoNCisgICAgICByZXN1bHQgPSBFRmFsc2U7DQorICAgICAgYnJlYWs7DQorICAg
IH0NCisgIHJldHVybiByZXN1bHQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gVElucHV0Rm9ybWF0Q2hh
cjo6U3BlY2lhbEFsbG93ZWQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRCb29sIFRJbnB1dEZvcm1hdENoYXI6OlNw
ZWNpYWxBbGxvd2VkKCkgY29uc3QNCi0Jew0KLQlUQm9vbCByZXN1bHQ7DQotCXN3aXRjaCggaUNo
YXIgKQ0KLQkJew0KLQkJY2FzZSBLSW5wdXRGb3JtYXRBIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0
YSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdFggOg0KLQkJY2FzZSBLSW5wdXRGb3JtYXR4IDoNCi0J
CWNhc2UgS0lucHV0Rm9ybWF0TSA6DQotCQljYXNlIEtJbnB1dEZvcm1hdG0gOg0KLQkJY2FzZSBL
SW5wdXRGb3JtYXRuIDoNCi0JCWNhc2UgS0lucHV0Rm9ybWF0U3RhdGljIDoNCi0JCQlyZXN1bHQg
PSBFVHJ1ZTsNCi0JCQlicmVhazsNCi0NCi0JCWRlZmF1bHQ6DQotCQkJcmVzdWx0ID0gRUZhbHNl
Ow0KLQkJCWJyZWFrOw0KLQkJfQ0KLQlyZXR1cm4gcmVzdWx0Ow0KLQl9DQorICB7DQorICBUQm9v
bCByZXN1bHQ7DQorICBzd2l0Y2goIGlDaGFyICkNCisgICAgew0KKyAgICBjYXNlIEtJbnB1dEZv
cm1hdEEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdGEgOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1h
dFggOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdHggOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdE0g
Og0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG0gOg0KKyAgICBjYXNlIEtJbnB1dEZvcm1hdG4gOg0K
KyAgICBjYXNlIEtJbnB1dEZvcm1hdFN0YXRpYyA6DQorICAgICAgcmVzdWx0ID0gRVRydWU7DQor
ICAgICAgYnJlYWs7DQorDQorICAgIGRlZmF1bHQ6DQorICAgICAgcmVzdWx0ID0gRUZhbHNlOw0K
KyAgICAgIGJyZWFrOw0KKyAgICB9DQorICByZXR1cm4gcmVzdWx0Ow0KKyAgfQ0KIA0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vIFRJbnB1dEZvcm1hdENoYXI6OkNoYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRVaW50IFRJbnB1dEZvcm1h
dENoYXI6OkNoYXIoKSBjb25zdA0KLQl7DQotCXJldHVybiBpQ2hhcjsNCi0JfQ0KKyAgew0KKyAg
cmV0dXJuIGlDaGFyOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRJbnB1dEZvcm1hdENoYXI6OlN0YXRp
YygpDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8NCiBUVWludCBUSW5wdXRGb3JtYXRDaGFyOjpTdGF0aWMoKSBjb25zdA0K
LQl7DQotCXJldHVybiBpU3RhdGljOw0KLQl9DQorICB7DQorICByZXR1cm4gaVN0YXRpYzsNCisg
IH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVOQ1RJT05TID09PT09PT09PT09
PT09PT09PT09PT09DQogDQpAQCAtMjM2LDI4ICsyMzYsMjggQEAgVFVpbnQgVElucHV0Rm9ybWF0
Q2hhcjo6U3RhdGljKCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0KIFRTdGF0aWNDaGFy
OjpUU3RhdGljQ2hhciggVFVpbnQgYUNoYXIsIFRJbnQgYVBvcyApDQotCTogaUNoYXIoIGFDaGFy
ICkNCi0JLCBpUG9zKCBhUG9zICkNCi0Jew0KLQl9DQorICA6IGlDaGFyKCBhQ2hhciApDQorICAs
IGlQb3MoIGFQb3MgKQ0KKyAgew0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIFRTdGF0aWNDaGFyOjpDaGFy
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogLy8NCiBUVWludCBUU3RhdGljQ2hhcjo6Q2hhcigpIGNvbnN0DQotCXsNCi0JcmV0
dXJuIGlDaGFyOwkNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIGlDaGFyOyANCisgIH0NCiANCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLyBUU3RhdGljQ2hhcjo6UG9zDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IFRTdGF0aWNDaGFyOjpQb3Mo
KSBjb25zdA0KLQl7DQotCXJldHVybiBpUG9zOwkNCi0JfQ0KKyAgew0KKyAgcmV0dXJuIGlQb3M7
ICANCisgIH0NCiANCiAvLyA9PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVOQ1RJT05TID09PT09
PT09PT09PT09PT09PT09PT09DQogDQpAQCAtMjY1LDk5ICsyNjUsOTkgQEAgVEludCBUU3RhdGlj
Q2hhcjo6UG9zKCkgY29uc3QNCiAvLyBtaWdodCBsZWF2ZS4NCiAvLw0KIENJbnB1dEZvcm1hdEhh
bmRsZXI6OkNJbnB1dEZvcm1hdEhhbmRsZXIoKQ0KLQk6IGlQb3N0Rml4KCBLSW5wdXRGb3JtYXRO
b25lICkNCisgIDogaVBvc3RGaXgoIEtJbnB1dEZvcm1hdE5vbmUgKQ0KICAgICB7DQotCX0NCisg
IH0NCiANCiAvLyBFUE9DIGRlZmF1bHQgY29uc3RydWN0b3IgY2FuIGxlYXZlLg0KIHZvaWQgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6Q29uc3RydWN0TA0KLQkoIGNvbnN0IFREZXNDJiBhRm9ybWF0U3Ry
aW5nKQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmluZykNCiAgICAgew0KIA0KLQlDQXJy
YXlGaXhGbGF0PFRJbnQ+KiBzdGF0aWNzID0gbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VElu
dD4oIDMgKTsNCi0JQ2xlYW51cFN0YWNrOjpQdXNoTCggc3RhdGljcyApOw0KLQkNCi0JLy8gY29s
bGVjdCB0aGUgaW5kZXhlcyBvZiBzdGF0aWMgY2hhcmFjdGVycw0KLQlUQm9vbCBtYXJrID0gRUZh
bHNlOw0KLQlUSW50IGxlbmd0aCA9IGFGb3JtYXRTdHJpbmcuTGVuZ3RoKCk7DQotCWZvciAoIFRJ
bnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApDQotCQl7DQotCQlpZiAoIG1hcmsgKQkvLyB3YXMg
dGhlIHByZXZpb3VzIGNoYXJhY3RlciBwcmVmaXg/DQotCQkJew0KLQkJCW1hcmsgPSBFRmFsc2U7
DQotCQkJc3RhdGljcy0+QXBwZW5kTCggaSApOw0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7CQkvLyBp
cyBpdCBwcmVmaXg/DQotCQkJbWFyayA9ICggYUZvcm1hdFN0cmluZ1sgaSBdID09IEtJbnB1dEZv
cm1hdFN0YXRpYyApOw0KLQkJCX0NCi0JCX0NCi0NCi0JVEludCBudW1iZXJPZlN0YXRpY3MgPSBz
dGF0aWNzLT5Db3VudCgpOw0KLQlpTWluTGVuZ3RoID0gbGVuZ3RoIC0gbnVtYmVyT2ZTdGF0aWNz
Ow0KLQlpTWF4TGVuZ3RoID0gaU1pbkxlbmd0aDsNCi0NCi0JLy8gKmYgYW5kIG5mIGhhbmRsaW5n
CQ0KLQlpZiAoIGxlbmd0aCA+IDEgJiYJCQkJLy8gbG9uZ2VyIHRoYW4gb25lIGNoYXJhY3Rlcg0K
LQkJICggIW51bWJlck9mU3RhdGljcyB8fAkJLy8gdGhlcmUgYXJlIG5vIHN0YXRpY3MsIG9yIGl0
IGlzbid0IHN0YXRpYw0KLQkJICAgc3RhdGljcy0+QXQoIG51bWJlck9mU3RhdGljcyAtIDEgKSAh
PSBsZW5ndGggLSAyICkgKQ0KLQkJew0KLQkJaWYgKCBhRm9ybWF0U3RyaW5nWyBsZW5ndGggLSAy
IF0gPT0gS0lucHV0Rm9ybWF0TXVsdGlwbGllciApCS8vICpmPw0KLQkJCXsNCi0JCQlpUG9zdEZp
eCA9IGFGb3JtYXRTdHJpbmdbICggLS1sZW5ndGggKS0tIF07DQotCQkJaU1pbkxlbmd0aCA9IGxl
bmd0aCAtIG51bWJlck9mU3RhdGljczsNCi0JCQlpTWF4TGVuZ3RoID0gS0luZmluaXRlTGVuZ3Ro
Ow0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJVENoYXIgbiggYUZvcm1hdFN0cmluZ1sgbGVu
Z3RoIC0gMiBdICk7DQotCQkJaWYgKCBuLklzRGlnaXQoKSAmJiBuICE9ICcwJyApCS8vIG5mPw0K
LQkJCQl7DQotCQkJCWlQb3N0Rml4ID0gYUZvcm1hdFN0cmluZ1sgKCAtLWxlbmd0aCApLS0gXTsN
Ci0JCQkJaU1heExlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljcyArIG4uR2V0TnVtZXJp
Y1ZhbHVlKCk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQotDQotCS8vIGFsbG9jYXRlIG1lbW9yeSBm
b3IgbWVtYmVycw0KLQlpTWFzayA9IEhCdWZDOjpOZXdMKCBsZW5ndGggLSBudW1iZXJPZlN0YXRp
Y3MgKTsJLy8gZXhjZXB0IHN0YXRpYyB0ZXh0DQotCWlTdGF0aWMgPSBuZXcoIEVMZWF2ZSApQ0Fy
cmF5Rml4RmxhdDxUU3RhdGljQ2hhcj4oIDMgKTsNCi0NCi0JLy8gY29weSBhRm9ybWF0U3RyaW5n
IHRvIGlNYXNrIGV4Y2VwdCBzdGF0aWMgdGV4dA0KLQlUSW50IG5leHRTdGF0aWMgPSAwOw0KLQlm
b3IgKCBUSW50IGogPSAwOyBqIDwgbGVuZ3RoOyBqKysgKQ0KLQkJew0KLQkJaWYgKCBuZXh0U3Rh
dGljIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQotCQkJIGogPT0gc3RhdGljcy0+QXQoIG5leHRTdGF0
aWMgKSApCS8vIGlzIGl0IHN0YXRpYz8NCi0JCQl7DQotCQkJCW5leHRTdGF0aWMrKzsNCi0JCQkJ
aVN0YXRpYy0+QXBwZW5kTA0KLQkJCQkJKCBUU3RhdGljQ2hhciggYUZvcm1hdFN0cmluZ1sgaiBd
LCBqIC0gbmV4dFN0YXRpYyApICk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlpTWFzay0+
RGVzKCkuQXBwZW5kKCBhRm9ybWF0U3RyaW5nWyBqIF0gKTsNCi0JCQl9DQotCQl9DQorICBDQXJy
YXlGaXhGbGF0PFRJbnQ+KiBzdGF0aWNzID0gbmV3KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VElu
dD4oIDMgKTsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHN0YXRpY3MgKTsNCisgIA0KKyAgLy8g
Y29sbGVjdCB0aGUgaW5kZXhlcyBvZiBzdGF0aWMgY2hhcmFjdGVycw0KKyAgVEJvb2wgbWFyayA9
IEVGYWxzZTsNCisgIFRJbnQgbGVuZ3RoID0gYUZvcm1hdFN0cmluZy5MZW5ndGgoKTsNCisgIGZv
ciAoIFRJbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKyApDQorICAgIHsNCisgICAgaWYgKCBtYXJr
ICkgLy8gd2FzIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgcHJlZml4Pw0KKyAgICAgIHsNCisgICAg
ICBtYXJrID0gRUZhbHNlOw0KKyAgICAgIHN0YXRpY3MtPkFwcGVuZEwoIGkgKTsNCisgICAgICB9
DQorICAgIGVsc2UNCisgICAgICB7ICAgLy8gaXMgaXQgcHJlZml4Pw0KKyAgICAgIG1hcmsgPSAo
IGFGb3JtYXRTdHJpbmdbIGkgXSA9PSBLSW5wdXRGb3JtYXRTdGF0aWMgKTsNCisgICAgICB9DQor
ICAgIH0NCiANCi0JaUR5bmFtaWMgPSBIQnVmQzo6TmV3TCggaU1pbkxlbmd0aCAtIG51bWJlck9m
U3RhdGljcyApOw0KKyAgVEludCBudW1iZXJPZlN0YXRpY3MgPSBzdGF0aWNzLT5Db3VudCgpOw0K
KyAgaU1pbkxlbmd0aCA9IGxlbmd0aCAtIG51bWJlck9mU3RhdGljczsNCisgIGlNYXhMZW5ndGgg
PSBpTWluTGVuZ3RoOw0KKw0KKyAgLy8gKmYgYW5kIG5mIGhhbmRsaW5nIA0KKyAgaWYgKCBsZW5n
dGggPiAxICYmICAgICAgICAvLyBsb25nZXIgdGhhbiBvbmUgY2hhcmFjdGVyDQorICAgICAoICFu
dW1iZXJPZlN0YXRpY3MgfHwgICAgLy8gdGhlcmUgYXJlIG5vIHN0YXRpY3MsIG9yIGl0IGlzbid0
IHN0YXRpYw0KKyAgICAgICBzdGF0aWNzLT5BdCggbnVtYmVyT2ZTdGF0aWNzIC0gMSApICE9IGxl
bmd0aCAtIDIgKSApDQorICAgIHsNCisgICAgaWYgKCBhRm9ybWF0U3RyaW5nWyBsZW5ndGggLSAy
IF0gPT0gS0lucHV0Rm9ybWF0TXVsdGlwbGllciApICAvLyAqZj8NCisgICAgICB7DQorICAgICAg
aVBvc3RGaXggPSBhRm9ybWF0U3RyaW5nWyAoIC0tbGVuZ3RoICktLSBdOw0KKyAgICAgIGlNaW5M
ZW5ndGggPSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3M7DQorICAgICAgaU1heExlbmd0aCA9IEtJ
bmZpbml0ZUxlbmd0aDsNCisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgVENo
YXIgbiggYUZvcm1hdFN0cmluZ1sgbGVuZ3RoIC0gMiBdICk7DQorICAgICAgaWYgKCBuLklzRGln
aXQoKSAmJiBuICE9ICcwJyApICAvLyBuZj8NCisgICAgICAgIHsNCisgICAgICAgIGlQb3N0Rml4
ID0gYUZvcm1hdFN0cmluZ1sgKCAtLWxlbmd0aCApLS0gXTsNCisgICAgICAgIGlNYXhMZW5ndGgg
PSBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKyBuLkdldE51bWVyaWNWYWx1ZSgpOw0KKyAgICAg
ICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3ko
KTsJLy8gc3RhdGljcw0KKyAgLy8gYWxsb2NhdGUgbWVtb3J5IGZvciBtZW1iZXJzDQorICBpTWFz
ayA9IEhCdWZDOjpOZXdMKCBsZW5ndGggLSBudW1iZXJPZlN0YXRpY3MgKTsgIC8vIGV4Y2VwdCBz
dGF0aWMgdGV4dA0KKyAgaVN0YXRpYyA9IG5ldyggRUxlYXZlIClDQXJyYXlGaXhGbGF0PFRTdGF0
aWNDaGFyPiggMyApOw0KKw0KKyAgLy8gY29weSBhRm9ybWF0U3RyaW5nIHRvIGlNYXNrIGV4Y2Vw
dCBzdGF0aWMgdGV4dA0KKyAgVEludCBuZXh0U3RhdGljID0gMDsNCisgIGZvciAoIFRJbnQgaiA9
IDA7IGogPCBsZW5ndGg7IGorKyApDQorICAgIHsNCisgICAgaWYgKCBuZXh0U3RhdGljIDwgbnVt
YmVyT2ZTdGF0aWNzICYmDQorICAgICAgIGogPT0gc3RhdGljcy0+QXQoIG5leHRTdGF0aWMgKSAp
IC8vIGlzIGl0IHN0YXRpYz8NCisgICAgICB7DQorICAgICAgICBuZXh0U3RhdGljKys7DQorICAg
ICAgICBpU3RhdGljLT5BcHBlbmRMDQorICAgICAgICAgICggVFN0YXRpY0NoYXIoIGFGb3JtYXRT
dHJpbmdbIGogXSwgaiAtIG5leHRTdGF0aWMgKSApOw0KKyAgICAgIH0NCisgICAgZWxzZQ0KKyAg
ICAgIHsNCisgICAgICBpTWFzay0+RGVzKCkuQXBwZW5kKCBhRm9ybWF0U3RyaW5nWyBqIF0gKTsN
CisgICAgICB9DQorICAgIH0NCisNCisgIGlEeW5hbWljID0gSEJ1ZkM6Ok5ld0woIGlNaW5MZW5n
dGggLSBudW1iZXJPZlN0YXRpY3MgKTsNCisNCisgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJv
eSgpOyAgLy8gc3RhdGljcw0KICAgICB9DQogDQogLy8gVHdvLXBoYXNlZCBjb25zdHJ1Y3Rvci4N
CiBDSW5wdXRGb3JtYXRIYW5kbGVyKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpOZXdMQw0KLQkoIGNv
bnN0IFREZXNDJiBhRm9ybWF0U3RyaW5nKQ0KKyAgKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmlu
ZykNCiAgICAgew0KLQlDSW5wdXRGb3JtYXRIYW5kbGVyKiBzZWxmID0gbmV3KCBFTGVhdmUgKUNJ
bnB1dEZvcm1hdEhhbmRsZXI7DQotCUNsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCisgIENJ
bnB1dEZvcm1hdEhhbmRsZXIqIHNlbGYgPSBuZXcoIEVMZWF2ZSApQ0lucHV0Rm9ybWF0SGFuZGxl
cjsNCisgIENsZWFudXBTdGFjazo6UHVzaEwoIHNlbGYgKTsNCiAgICAgc2VsZi0+Q29uc3RydWN0
TCggYUZvcm1hdFN0cmluZyk7DQotCXJldHVybiBzZWxmOw0KKyAgcmV0dXJuIHNlbGY7DQogICAg
IH0NCiANCiAvLyBUd28tcGhhc2VkIGNvbnN0cnVjdG9yLg0KIENJbnB1dEZvcm1hdEhhbmRsZXIq
IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok5ld0wNCi0JKCBjb25zdCBURGVzQyYgYUZvcm1hdFN0cmlu
ZykNCisgICggY29uc3QgVERlc0MmIGFGb3JtYXRTdHJpbmcpDQogICAgIHsNCiAgICAgQ0lucHV0
Rm9ybWF0SGFuZGxlciogc2VsZiA9IE5ld0xDKCBhRm9ybWF0U3RyaW5nKTsNCiAgICAgQ2xlYW51
cFN0YWNrOjpQb3AoKTsNCkBAIC0zNjcsOSArMzY3LDkgQEAgQ0lucHV0Rm9ybWF0SGFuZGxlciog
Q0lucHV0Rm9ybWF0SGFuZGxlcg0KIC8vIERlc3RydWN0b3INCiBDSW5wdXRGb3JtYXRIYW5kbGVy
Ojp+Q0lucHV0Rm9ybWF0SGFuZGxlcigpDQogICAgIHsNCi0JZGVsZXRlIGlNYXNrOw0KLQlkZWxl
dGUgaVN0YXRpYzsNCi0JZGVsZXRlIGlEeW5hbWljOw0KKyAgZGVsZXRlIGlNYXNrOw0KKyAgZGVs
ZXRlIGlTdGF0aWM7DQorICBkZWxldGUgaUR5bmFtaWM7DQogICAgIH0NCiANCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC0z
OTAsMjY2ICszOTAsMjY2IEBAIEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRUZXh0T25s
eUwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OlNldFRleHRMKCBjb25z
dCBURGVzQyYgYVRleHQsIFRCb29sIGFOb1ZhbGlkYXRpb24gKQ0KLQl7DQotCWlEeW5hbWljLT5E
ZXMoKS5TZXRMZW5ndGgoIDAgKTsJLy8gaWdub3JlIHByZXZpb3VzIHRleHQNCisgIHsNCisgIGlE
eW5hbWljLT5EZXMoKS5TZXRMZW5ndGgoIDAgKTsgLy8gaWdub3JlIHByZXZpb3VzIHRleHQNCiAN
Ci0JLy8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRoZXkgYXJlIHZhbGlkDQotCVRJbnQgaiggMCApOw0K
LQlUSW50IHRleHRMZW5ndGgoIGFUZXh0Lkxlbmd0aCgpICk7DQotCWZvciAoIDsNCi0JCSAgaiA8
IHRleHRMZW5ndGggJiYNCi0JCSAgKCBhTm9WYWxpZGF0aW9uIHx8IFZhbGlkYXRlQ2hhciggYVRl
eHRbIGogXSwgR2V0Rm9ybWF0KCBqICkgKSApOw0KLQkJICBqKysgKQ0KLQkJew0KLQ0KLQkJaWYg
KCAhR2V0Rm9ybWF0KCBqICkuU3RhdGljKCkgKQ0KLQkJCXsNCi0JCSAgICBJbnNlcnRMKCBqLCBh
VGV4dFsgaiBdICk7CS8vIGluc2VydCBub24tc3RhdGljIGNoYXJzDQotCQkJfQ0KLQkJfQ0KKyAg
Ly8gaW5zZXJ0IGNoYXJzIHdoaWxlIHRoZXkgYXJlIHZhbGlkDQorICBUSW50IGooIDAgKTsNCisg
IFRJbnQgdGV4dExlbmd0aCggYVRleHQuTGVuZ3RoKCkgKTsNCisgIGZvciAoIDsNCisgICAgICBq
IDwgdGV4dExlbmd0aCAmJg0KKyAgICAgICggYU5vVmFsaWRhdGlvbiB8fCBWYWxpZGF0ZUNoYXIo
IGFUZXh0WyBqIF0sIEdldEZvcm1hdCggaiApICkgKTsNCisgICAgICBqKysgKQ0KKyAgICB7DQor
DQorICAgIGlmICggIUdldEZvcm1hdCggaiApLlN0YXRpYygpICkNCisgICAgICB7DQorICAgICAg
ICBJbnNlcnRMKCBqLCBhVGV4dFsgaiBdICk7IC8vIGluc2VydCBub24tc3RhdGljIGNoYXJzDQor
ICAgICAgfQ0KKyAgICB9DQogDQotCXJldHVybiBqID09IHRleHRMZW5ndGg7DQotCX0NCisgIHJl
dHVybiBqID09IHRleHRMZW5ndGg7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFu
ZGxlcjo6VGV4dExDDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBIQnVmQyogQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VGV4
dExDKCBUQm9vbCBhUmVhZGFibGUgKSBjb25zdA0KLQl7DQotCUhCdWZDKiB0ZXh0ID0gU3RhdGlj
VGV4dExDKCk7CS8vIGdldCBzdGF0aWMgdGV4dA0KLQlUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQt
Pkxlbmd0aCgpOw0KLQlUSW50IGR5bmFtaWNMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCk7DQot
CVRJbnQgZHluYW1pY1B0ciggMCApOw0KLQlUSW50IHN0YXRpY1B0ciggMCApOw0KLQlUSW50IHN0
YXRpY0NvdW50ZXIoIDAgKTsNCi0JVEludCBudW1iZXJPZlN0YXRpY3MoIGlTdGF0aWMtPkNvdW50
KCkgKTsNCi0JLy8gaW5zZXJ0IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBt
YW55IGFzIHBvc3NpYmxlDQotCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7ICsr
ZHluYW1pY1B0ciwgKytzdGF0aWNQdHIgKQ0KLQkJew0KLQkJLy8gZmluZCB0aGUgbmV4dCBub24t
c3RhdGljIHBvc2l0aW9uDQotCQl3aGlsZSAoIHN0YXRpY0NvdW50ZXIgPCBudW1iZXJPZlN0YXRp
Y3MgJiYNCi0JCQkJaVN0YXRpYy0+QXQoIHN0YXRpY0NvdW50ZXIgKS5Qb3MoKSA9PSBzdGF0aWNQ
dHIgKQ0KLQkJCXsNCi0JCQkrK3N0YXRpY0NvdW50ZXI7DQotCQkJKytzdGF0aWNQdHI7DQotCQkJ
fQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBTdGF0aWNUZXh0TEMoKTsgLy8gZ2V0IHN0YXRpYyB0
ZXh0DQorICBUSW50IHN0YXRpY0xlbmd0aCA9IHRleHQtPkxlbmd0aCgpOw0KKyAgVEludCBkeW5h
bWljTGVuZ3RoID0gaUR5bmFtaWMtPkxlbmd0aCgpOw0KKyAgVEludCBkeW5hbWljUHRyKCAwICk7
DQorICBUSW50IHN0YXRpY1B0ciggMCApOw0KKyAgVEludCBzdGF0aWNDb3VudGVyKCAwICk7DQor
ICBUSW50IG51bWJlck9mU3RhdGljcyggaVN0YXRpYy0+Q291bnQoKSApOw0KKyAgLy8gaW5zZXJ0
IGR5bmFtaWMgdGV4dCBpbnRvIHRoZSBzdGF0aWMgdGV4dCBhcyBtYW55IGFzIHBvc3NpYmxlDQor
ICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyArK2R5bmFtaWNQdHIsICsrc3Rh
dGljUHRyICkNCisgICAgew0KKyAgICAvLyBmaW5kIHRoZSBuZXh0IG5vbi1zdGF0aWMgcG9zaXRp
b24NCisgICAgd2hpbGUgKCBzdGF0aWNDb3VudGVyIDwgbnVtYmVyT2ZTdGF0aWNzICYmDQorICAg
ICAgICBpU3RhdGljLT5BdCggc3RhdGljQ291bnRlciApLlBvcygpID09IHN0YXRpY1B0ciApDQor
ICAgICAgew0KKyAgICAgICsrc3RhdGljQ291bnRlcjsNCisgICAgICArK3N0YXRpY1B0cjsNCisg
ICAgICB9DQogDQotCQlpZiAoIHN0YXRpY1B0ciA8IHN0YXRpY0xlbmd0aCApCS8vIGlzIHRoZXJl
IHBsYWNlIGZvciBpdD8NCi0JCQl7DQorICAgIGlmICggc3RhdGljUHRyIDwgc3RhdGljTGVuZ3Ro
ICkgLy8gaXMgdGhlcmUgcGxhY2UgZm9yIGl0Pw0KKyAgICAgIHsNCiAgICAgICAgICAgICAvKmxp
bnQgLWV7MTExfSBBc3NpZ25tZW50IHRvIGNvbnN0IG9iamVjdCAqLw0KLQkJCXRleHQtPkRlcygp
WyBzdGF0aWNQdHIgXSA9IGFSZWFkYWJsZSA/ICggKmlEeW5hbWljIClbIGR5bmFtaWNQdHIgXQ0K
LQkJCQkJCQkJCQkJCSA6IEtPYnNjdXJpbmdDaGFyKClbIDAgXTsNCi0JCQl9DQotCQllbHNlDQot
CQkJew0KLQkJCWJyZWFrOw0KLQkJCX0NCi0JCX0NCi0NCi0JaWYgKCBkeW5hbWljUHRyIDwgZHlu
YW1pY0xlbmd0aCApCS8vIGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KLQkJew0K
LQkJSEJ1ZkMqIG5ld1RleHQgPSB0ZXh0LT5SZUFsbG9jTA0KLQkJCSggc3RhdGljTGVuZ3RoICsg
ZHluYW1pY0xlbmd0aCAtIGR5bmFtaWNQdHIgKyAxICk7DQotDQotCQlDbGVhbnVwU3RhY2s6OlBv
cCgpOwkJCS8vIHRleHQNCi0JCUNsZWFudXBTdGFjazo6UHVzaEwoIG5ld1RleHQgKTsJLy8gbmV3
VGV4dA0KLQkJdGV4dCA9IG5ld1RleHQ7DQotDQotCQlpZiAoIGFSZWFkYWJsZSApDQotCQkJew0K
LQkJCWZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQdHIrKyApDQot
CQkJCXsNCi0JCQkJdGV4dC0+RGVzKCkuQXBwZW5kKCAoICppRHluYW1pYyApWyBkeW5hbWljUHRy
IF0gKTsNCi0JCQkJfQ0KLQkJCX0NCi0JCWVsc2UNCi0JCQl7DQotCQkJZm9yICggOyBkeW5hbWlj
UHRyIDwgZHluYW1pY0xlbmd0aDsgZHluYW1pY1B0cisrICkNCi0JCQkJew0KLQkJCQl0ZXh0LT5E
ZXMoKS5BcHBlbmQoIEtPYnNjdXJpbmdDaGFyICk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQotDQot
CXRleHQtPkRlcygpLlplcm9UZXJtaW5hdGUoKTsNCi0JcmV0dXJuIHRleHQ7DQotCX0NCisgICAg
ICB0ZXh0LT5EZXMoKVsgc3RhdGljUHRyIF0gPSBhUmVhZGFibGUgPyAoICppRHluYW1pYyApWyBk
eW5hbWljUHRyIF0NCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBLT2JzY3VyaW5nQ2hhcigp
WyAwIF07DQorICAgICAgfQ0KKyAgICBlbHNlDQorICAgICAgew0KKyAgICAgIGJyZWFrOw0KKyAg
ICAgIH0NCisgICAgfQ0KKw0KKyAgaWYgKCBkeW5hbWljUHRyIDwgZHluYW1pY0xlbmd0aCApIC8v
IGFwcGVuZCB0aGUgcmVtYWluaW5nIGR5bmFtaWMgdGV4dA0KKyAgICB7DQorICAgIEhCdWZDKiBu
ZXdUZXh0ID0gdGV4dC0+UmVBbGxvY0wNCisgICAgICAoIHN0YXRpY0xlbmd0aCArIGR5bmFtaWNM
ZW5ndGggLSBkeW5hbWljUHRyICsgMSApOw0KKw0KKyAgICBDbGVhbnVwU3RhY2s6OlBvcCgpOyAg
ICAgIC8vIHRleHQNCisgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCggbmV3VGV4dCApOyAvLyBuZXdU
ZXh0DQorICAgIHRleHQgPSBuZXdUZXh0Ow0KKw0KKyAgICBpZiAoIGFSZWFkYWJsZSApDQorICAg
ICAgew0KKyAgICAgIGZvciAoIDsgZHluYW1pY1B0ciA8IGR5bmFtaWNMZW5ndGg7IGR5bmFtaWNQ
dHIrKyApDQorICAgICAgICB7DQorICAgICAgICB0ZXh0LT5EZXMoKS5BcHBlbmQoICggKmlEeW5h
bWljIClbIGR5bmFtaWNQdHIgXSApOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgZWxzZQ0K
KyAgICAgIHsNCisgICAgICBmb3IgKCA7IGR5bmFtaWNQdHIgPCBkeW5hbWljTGVuZ3RoOyBkeW5h
bWljUHRyKysgKQ0KKyAgICAgICAgew0KKyAgICAgICAgdGV4dC0+RGVzKCkuQXBwZW5kKCBLT2Jz
Y3VyaW5nQ2hhciApOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgdGV4dC0+
RGVzKCkuWmVyb1Rlcm1pbmF0ZSgpOw0KKyAgcmV0dXJuIHRleHQ7DQorICB9DQogDQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQog
Ly8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6SW5zZXJ0TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogdm9pZCBDSW5wdXRG
b3JtYXRIYW5kbGVyOjpJbnNlcnRMKCBUSW50IGFQb3MsIFRDaGFyIGFDaGFyICkNCi0Jew0KLQlU
QnVmPDE+IGJ1ZjsNCi0JYnVmLkFwcGVuZCggYUNoYXIgKTsNCi0JSW5zZXJ0TCggYVBvcywgYnVm
ICk7DQotCX0NCisgIHsNCisgIFRCdWY8MT4gYnVmOw0KKyAgYnVmLkFwcGVuZCggYUNoYXIgKTsN
CisgIEluc2VydEwoIGFQb3MsIGJ1ZiApOw0KKyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1h
dEhhbmRsZXI6Okluc2VydEwNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIHZvaWQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
SW5zZXJ0TCggVEludCBhUG9zLCBjb25zdCBURGVzQyYgYURlcyApDQotCXsNCi0JVEludCBuZXdQ
b3MgPSBQb3NFeGx1ZGluZ1N0YXRpYyggYVBvcyApOw0KLQlpZiAoIC0xIDwgbmV3UG9zICYmIG5l
d1BvcyA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJew0KLQkJLy8gbWFrZSBzdXJlIHRoZXJl
J3MgZW5vdWdoIHNwYWNlDQotCQlUSW50IG5ld0xlbmd0aCA9IGlEeW5hbWljLT5MZW5ndGgoKSAr
IGFEZXMuTGVuZ3RoKCk7DQotCQlpZiAoIGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8IG5l
d0xlbmd0aCApDQotCQkJew0KLQkJCWlEeW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdM
ZW5ndGggKTsNCi0JCQl9DQotDQotCQlpRHluYW1pYy0+RGVzKCkuSW5zZXJ0KCBuZXdQb3MsIGFE
ZXMgKTsNCi0JCX0NCi0JfQ0KKyAgew0KKyAgVEludCBuZXdQb3MgPSBQb3NFeGx1ZGluZ1N0YXRp
YyggYVBvcyApOw0KKyAgaWYgKCAtMSA8IG5ld1BvcyAmJiBuZXdQb3MgPD0gaUR5bmFtaWMtPkxl
bmd0aCgpICkNCisgICAgew0KKyAgICAvLyBtYWtlIHN1cmUgdGhlcmUncyBlbm91Z2ggc3BhY2UN
CisgICAgVEludCBuZXdMZW5ndGggPSBpRHluYW1pYy0+TGVuZ3RoKCkgKyBhRGVzLkxlbmd0aCgp
Ow0KKyAgICBpZiAoIGlEeW5hbWljLT5EZXMoKS5NYXhMZW5ndGgoKSA8IG5ld0xlbmd0aCApDQor
ICAgICAgew0KKyAgICAgIGlEeW5hbWljID0gaUR5bmFtaWMtPlJlQWxsb2NMKCBuZXdMZW5ndGgg
KTsNCisgICAgICB9DQorDQorICAgIGlEeW5hbWljLT5EZXMoKS5JbnNlcnQoIG5ld1BvcywgYURl
cyApOw0KKyAgICB9DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6RGVs
ZXRlDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQogLy8NCiBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpEZWxldGUoIFRJbnQg
YVBvcywgVEludCBhTGVuZ3RoICkNCi0Jew0KKyAgew0KICAgVEJvb2wgc3RhdHVzID0gRUZhbHNl
Ow0KLQlUSW50IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQotCWlmICggLTEg
PCBuZXdQb3MgJiYgbmV3UG9zICsgYUxlbmd0aCA8PSBpRHluYW1pYy0+TGVuZ3RoKCkgKQ0KLQkJ
ew0KLQkJaUR5bmFtaWMtPkRlcygpLkRlbGV0ZSggbmV3UG9zLCBhTGVuZ3RoICk7DQorICBUSW50
IG5ld1BvcyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICBpZiAoIC0xIDwgbmV3UG9z
ICYmIG5ld1BvcyArIGFMZW5ndGggPD0gaUR5bmFtaWMtPkxlbmd0aCgpICkNCisgICAgew0KKyAg
ICBpRHluYW1pYy0+RGVzKCkuRGVsZXRlKCBuZXdQb3MsIGFMZW5ndGggKTsNCiAgICAgc3RhdHVz
ID0gRVRydWU7DQotCQl9DQorICAgIH0NCiAgIHJldHVybiBzdGF0dXM7DQotCX0NCisgIH0NCiAN
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMNCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0K
IEhCdWZDKiBDSW5wdXRGb3JtYXRIYW5kbGVyOjpTdGF0aWNUZXh0TEMoKSBjb25zdA0KLQl7DQot
CVRJbnQgY291bnQgPSBpU3RhdGljLT5Db3VudCgpOw0KLQlUSW50IGxlbmd0aCA9ICggY291bnQg
KSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAwOw0KLQlIQnVmQyogZW1w
dHkgPSBIQnVmQzo6TmV3TEMoIGxlbmd0aCArIDEgKTsNCi0JZW1wdHktPkRlcygpLkZpbGwoICcg
JywgbGVuZ3RoICk7DQotCWZvciAoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCi0JCXsN
Ci0JCVRTdGF0aWNDaGFyIHN0YXRpY0NoYXIgPSBpU3RhdGljLT5BdCggaSApOw0KKyAgew0KKyAg
VEludCBjb3VudCA9IGlTdGF0aWMtPkNvdW50KCk7DQorICBUSW50IGxlbmd0aCA9ICggY291bnQg
KSA/IGlTdGF0aWMtPkF0KCBjb3VudCAtIDEgKS5Qb3MoKSArIDEgOiAwOw0KKyAgSEJ1ZkMqIGVt
cHR5ID0gSEJ1ZkM6Ok5ld0xDKCBsZW5ndGggKyAxICk7DQorICBlbXB0eS0+RGVzKCkuRmlsbCgg
JyAnLCBsZW5ndGggKTsNCisgIGZvciAoIFRJbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrICkNCisg
ICAgew0KKyAgICBUU3RhdGljQ2hhciBzdGF0aWNDaGFyID0gaVN0YXRpYy0+QXQoIGkgKTsNCiAg
ICAgICAgIC8qbGludCAtZXsxMTF9IEFzc2lnbm1lbnQgdG8gY29uc3Qgb2JqZWN0ICovDQotCQll
bXB0eS0+RGVzKClbIHN0YXRpY0NoYXIuUG9zKCkgXSA9DQotCQkJU1RBVElDX0NBU1QoIFRVaW50
MTYsIHN0YXRpY0NoYXIuQ2hhcigpICk7DQotCQl9DQotDQotCWVtcHR5LT5EZXMoKS5aZXJvVGVy
bWluYXRlKCk7DQotCXJldHVybiBlbXB0eTsNCi0JfQ0KKyAgICBlbXB0eS0+RGVzKClbIHN0YXRp
Y0NoYXIuUG9zKCkgXSA9DQorICAgICAgU1RBVElDX0NBU1QoIFRVaW50MTYsIHN0YXRpY0NoYXIu
Q2hhcigpICk7DQorICAgIH0NCisNCisgIGVtcHR5LT5EZXMoKS5aZXJvVGVybWluYXRlKCk7DQor
ICByZXR1cm4gZW1wdHk7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6
TnVtYmVyT2ZTdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TnVt
YmVyT2ZTdGF0aWMoKSBjb25zdA0KLQl7DQotCXJldHVybiBpU3RhdGljLT5Db3VudCgpOw0KLQl9
DQorICB7DQorICByZXR1cm4gaVN0YXRpYy0+Q291bnQoKTsNCisgIH0NCiANCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBD
SW5wdXRGb3JtYXRIYW5kbGVyOjpHZXRGb3JtYXQNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnB1dEZvcm1hdENo
YXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6R2V0Rm9ybWF0KCBUSW50IGFJbmRleCApIGNvbnN0DQot
CXsNCi0JVFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQotCWlmICggLTEgPCBhSW5kZXgg
KQ0KLQkJew0KLQkJaWYgKCBhSW5kZXggPCBpTWFzay0+TGVuZ3RoKCkgKQkJLy8gaXMgaXQgaW4g
dGhlIG1hc2s/DQotCQkJew0KLQkJCWNvZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsNCi0JCQl9
DQotCQllbHNlDQotCQkJew0KLQkJCWlmICggYUluZGV4IDwgaU1heExlbmd0aCB8fA0KLQkJCQkg
aU1heExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKQkJLy8gaXMgaXQgdGhlIHBvc3RmaXg/DQot
CQkJCXsNCi0JCQkJY29kZSA9IGlQb3N0Rml4Ow0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQ0KLQlU
SW50IHN0YXRpY0NoYXIgPSAwOw0KLQlpZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkJ
CQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQlmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5Db3Vu
dCgpIC0gMTsgaSA+IC0xOyBpLS0gKQ0KLQkJCXsNCi0JCQlpZiAoIGlTdGF0aWMtPkF0KCBpICku
UG9zKCkgPT0gYUluZGV4ICkNCi0JCQkJew0KLQkJCQlzdGF0aWNDaGFyID0gaVN0YXRpYy0+QXQo
IGkgKS5DaGFyKCk7DQotCQkJCWJyZWFrOw0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KKyAgew0KKyAg
VFVpbnQgY29kZSA9IEtJbnB1dEZvcm1hdE5vbmU7DQorICBpZiAoIC0xIDwgYUluZGV4ICkNCisg
ICAgew0KKyAgICBpZiAoIGFJbmRleCA8IGlNYXNrLT5MZW5ndGgoKSApICAgLy8gaXMgaXQgaW4g
dGhlIG1hc2s/DQorICAgICAgew0KKyAgICAgIGNvZGUgPSAoICppTWFzayApWyBhSW5kZXggXTsN
CisgICAgICB9DQorICAgIGVsc2UNCisgICAgICB7DQorICAgICAgaWYgKCBhSW5kZXggPCBpTWF4
TGVuZ3RoIHx8DQorICAgICAgICAgaU1heExlbmd0aCA9PSBLSW5maW5pdGVMZW5ndGggKSAgICAv
LyBpcyBpdCB0aGUgcG9zdGZpeD8NCisgICAgICAgIHsNCisgICAgICAgIGNvZGUgPSBpUG9zdEZp
eDsNCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisNCisgIFRJbnQgc3RhdGljQ2hhciA9
IDA7DQorICBpZiAoIGNvZGUgPT0gS0lucHV0Rm9ybWF0U3RhdGljICkgICAgIC8vIGlzIGl0IHN0
YXRpYz8NCisgICAgew0KKyAgICBmb3IgKCBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsg
aSA+IC0xOyBpLS0gKQ0KKyAgICAgIHsNCisgICAgICBpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9z
KCkgPT0gYUluZGV4ICkNCisgICAgICAgIHsNCisgICAgICAgIHN0YXRpY0NoYXIgPSBpU3RhdGlj
LT5BdCggaSApLkNoYXIoKTsNCisgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICAgIH0N
CisgICAgfQ0KIA0KLQlyZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciAp
Ow0KLQl9DQorICByZXR1cm4gVElucHV0Rm9ybWF0Q2hhciggY29kZSwgc3RhdGljQ2hhciApOw0K
KyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc3RGaXgNCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIFRJbnB1dEZvcm1hdENoYXIgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UG9zdEZpeCgpIGNvbnN0
DQotCXsNCi0JcmV0dXJuIGlQb3N0Rml4Ow0KLQl9DQorICB7DQorICByZXR1cm4gaVBvc3RGaXg7
DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6TWluTGVuZ3RoDQogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1pbkxlbmd0aCgpIGNvbnN0DQotCXsN
Ci0JcmV0dXJuIGlNaW5MZW5ndGg7DQotCX0NCisgIHsNCisgIHJldHVybiBpTWluTGVuZ3RoOw0K
KyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6Ok1heExlbmd0aA0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
IC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpNYXhMZW5ndGgoKSBjb25zdA0KLQl7DQot
CXJldHVybiBpTWF4TGVuZ3RoOw0KLQl9DQorICB7DQorICByZXR1cm4gaU1heExlbmd0aDsNCisg
IH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3JtYXRIYW5kbGVyOjpWYWxpZGF0ZUNoYXINCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N
CiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlQ2hhcg0KLQkoIFRDaGFy
IGFDaGFyLCBUSW5wdXRGb3JtYXRDaGFyIGFGb3JtYXRDaGFyICkgY29uc3QNCi0Jew0KKyAgKCBU
Q2hhciBhQ2hhciwgVElucHV0Rm9ybWF0Q2hhciBhRm9ybWF0Q2hhciApIGNvbnN0DQorICB7DQog
ICAgIFRCb29sIG1hdGNoKCBFRmFsc2UgKTsNCiANCi0JaWYgKCBhRm9ybWF0Q2hhci5TdGF0aWMo
KSApCQkvLyBpcyBpdCBzdGF0aWM/DQotCQl7DQotCQltYXRjaCA9ICggYUNoYXIgPT0gYUZvcm1h
dENoYXIuU3RhdGljKCkgKTsNCi0JCX0NCi0JZWxzZQ0KLQkJew0KLQkJaWYgKCBhQ2hhci5Jc0Rp
Z2l0KCkgKQkJLy8gaXMgaXQgbnVtYmVyPw0KLQkJCXsNCi0JCQltYXRjaCA9IGFGb3JtYXRDaGFy
Lk51bWVyaWNBbGxvd2VkKCk7DQotCQkJfQ0KLQkJZWxzZQ0KLQkJCXsNCi0JCQlpZiAoIGFDaGFy
LklzQWxwaGEoKSApCS8vIGlzIGl0IGFscGhhYmV0aWNhbD8NCi0JCQkJew0KLQkJCQlUSW5wdXRG
b3JtYXRDaGFyOjpUSW5wdXRDYXNlIGZvcmNlZENhc2UgPSBhRm9ybWF0Q2hhci5Gb3JjZWRDYXNl
KCk7DQotCQkJCW1hdGNoID0gKCBmb3JjZWRDYXNlID09IFRJbnB1dEZvcm1hdENoYXI6OkVJbnB1
dE5vbmUgKQ0KLQkJCQkJPyBFVHJ1ZQ0KLQkJCQkJOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KLQkJ
CQkJCWZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNlICkgfHwN
Ci0JCQkJCSAgKCBhQ2hhci5Jc0xvd2VyKCkgJiYNCi0JCQkJCQlmb3JjZWRDYXNlID09IFRJbnB1
dEZvcm1hdENoYXI6OkVJbnB1dExvd2VyQ2FzZSApOw0KKyAgaWYgKCBhRm9ybWF0Q2hhci5TdGF0
aWMoKSApICAgLy8gaXMgaXQgc3RhdGljPw0KKyAgICB7DQorICAgIG1hdGNoID0gKCBhQ2hhciA9
PSBhRm9ybWF0Q2hhci5TdGF0aWMoKSApOw0KKyAgICB9DQorICBlbHNlDQorICAgIHsNCisgICAg
aWYgKCBhQ2hhci5Jc0RpZ2l0KCkgKSAgICAvLyBpcyBpdCBudW1iZXI/DQorICAgICAgew0KKyAg
ICAgIG1hdGNoID0gYUZvcm1hdENoYXIuTnVtZXJpY0FsbG93ZWQoKTsNCisgICAgICB9DQorICAg
IGVsc2UNCisgICAgICB7DQorICAgICAgaWYgKCBhQ2hhci5Jc0FscGhhKCkgKSAgLy8gaXMgaXQg
YWxwaGFiZXRpY2FsPw0KKyAgICAgICAgew0KKyAgICAgICAgVElucHV0Rm9ybWF0Q2hhcjo6VElu
cHV0Q2FzZSBmb3JjZWRDYXNlID0gYUZvcm1hdENoYXIuRm9yY2VkQ2FzZSgpOw0KKyAgICAgICAg
bWF0Y2ggPSAoIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0Tm9uZSApDQor
ICAgICAgICAgID8gRVRydWUNCisgICAgICAgICAgOiAoIGFDaGFyLklzVXBwZXIoKSAmJg0KKyAg
ICAgICAgICAgIGZvcmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0VXBwZXJDYXNl
ICkgfHwNCisgICAgICAgICAgICAoIGFDaGFyLklzTG93ZXIoKSAmJg0KKyAgICAgICAgICAgIGZv
cmNlZENhc2UgPT0gVElucHV0Rm9ybWF0Q2hhcjo6RUlucHV0TG93ZXJDYXNlICk7DQogICAgICAg
ICAvLyBJZiBub24td2VzdGVybiBhbHBoYSB0aGVuIGFzc3VtZSB0aGVyZSBpcyBubyB1cHBlciBh
bmQgbG93ZXIgY2FzZQ0KICAgICAgICAgLy8gLSBzbyBjaGVjayBmb3IgTGV0dGVyT3RoZXIgb3Ig
TGV0dGVyQ2hpbmEvTGV0dGVyVGhhaSAoZGVwZW5kaW5nIHVwb24gdmFyaWFudCkuDQogICAgICAg
ICAvLyBJZiBpbnZhbGlkIGNoYXIgZm9yIGZvcm1hdCwgdmFsdWUgb2YgIm1hdGNoIiBpcyByZXRh
aW5lZC4gDQpAQCAtNjc1LDEyOSArNjc1LDEyOSBAQCBUQm9vbCBDSW5wdXRGb3JtYXRIYW5kbGVy
OjpWYWxpZGF0ZUNoYXINCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAqLw0K
ICAgICAgICAgICAgIH0NCi0JCQkJfQ0KLQkJCWVsc2UNCi0JCQkJewkJCQkJLy8gaXQncyBwdW5j
dHVhdG9yIG9yIHN5bWJvbA0KLQkJCQltYXRjaCA9IGFGb3JtYXRDaGFyLlNwZWNpYWxBbGxvd2Vk
KCk7DQotCQkJCX0NCi0JCQl9DQotCQl9DQorICAgICAgICB9DQorICAgICAgZWxzZQ0KKyAgICAg
ICAgeyAgICAgICAgIC8vIGl0J3MgcHVuY3R1YXRvciBvciBzeW1ib2wNCisgICAgICAgIG1hdGNo
ID0gYUZvcm1hdENoYXIuU3BlY2lhbEFsbG93ZWQoKTsNCisgICAgICAgIH0NCisgICAgICB9DQor
ICAgIH0NCiANCi0JcmV0dXJuIG1hdGNoOw0KLQl9DQorICByZXR1cm4gbWF0Y2g7DQorICB9DQog
DQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TEMNCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAv
Lw0KIENBcnJheUZpeEZsYXQ8VEludD4qIENJbnB1dEZvcm1hdEhhbmRsZXI6OlZhbGlkYXRlVGV4
dExDKCkgY29uc3QNCi0Jew0KLQlDQXJyYXlGaXhGbGF0PFRJbnQ+KiBlcnJvcnMgPQ0KLQkJbmV3
KCBFTGVhdmUgKUNBcnJheUZpeEZsYXQ8VEludD4oIDMgKTsNCi0JQ2xlYW51cFN0YWNrOjpQdXNo
TCggZXJyb3JzICk7DQotDQotCUhCdWZDKiB0ZXh0ID0gVGV4dExDKCk7DQotCVRJbnQgbGVuZ3Ro
KCB0ZXh0LT5MZW5ndGgoKSApOw0KLQlmb3IgKCBUSW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysg
KQ0KLQkJew0KLQkJaWYgKCAhVmFsaWRhdGVDaGFyKCAoICp0ZXh0IClbIGkgXSwgR2V0Rm9ybWF0
KCBpICkgKSApDQotCQkJew0KLQkJCWVycm9ycy0+QXBwZW5kTCggaSApOw0KLQkJCX0NCi0JCX0N
Ci0JCQ0KLQlDbGVhbnVwU3RhY2s6OlBvcEFuZERlc3Ryb3koKTsJLy8gdGV4dA0KLQlyZXR1cm4g
ZXJyb3JzOw0KLQl9DQorICB7DQorICBDQXJyYXlGaXhGbGF0PFRJbnQ+KiBlcnJvcnMgPQ0KKyAg
ICBuZXcoIEVMZWF2ZSApQ0FycmF5Rml4RmxhdDxUSW50PiggMyApOw0KKyAgQ2xlYW51cFN0YWNr
OjpQdXNoTCggZXJyb3JzICk7DQorDQorICBIQnVmQyogdGV4dCA9IFRleHRMQygpOw0KKyAgVElu
dCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQorICBmb3IgKCBUSW50IGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKysgKQ0KKyAgICB7DQorICAgIGlmICggIVZhbGlkYXRlQ2hhciggKCAqdGV4dCApWyBp
IF0sIEdldEZvcm1hdCggaSApICkgKQ0KKyAgICAgIHsNCisgICAgICBlcnJvcnMtPkFwcGVuZEwo
IGkgKTsNCisgICAgICB9DQorICAgIH0NCisgICAgDQorICBDbGVhbnVwU3RhY2s6OlBvcEFuZERl
c3Ryb3koKTsgIC8vIHRleHQNCisgIHJldHVybiBlcnJvcnM7DQorICB9DQogDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8g
Q0lucHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vDQogVEJvb2wgQ0lu
cHV0Rm9ybWF0SGFuZGxlcjo6VmFsaWRhdGVUZXh0TCgpIGNvbnN0DQotCXsNCi0JSEJ1ZkMqIHRl
eHQgPSBUZXh0TEMoKTsNCi0JVEludCBsZW5ndGgoIHRleHQtPkxlbmd0aCgpICk7DQotCVRJbnQg
aTsNCi0JZm9yICggaSA9IDA7DQotCQkgIGkgPCBsZW5ndGggJiYgVmFsaWRhdGVDaGFyKCAoICp0
ZXh0IClbIGkgXSwgR2V0Rm9ybWF0KCBpICkgKTsNCi0JCSAgaSsrICkNCi0JCXt9DQotCQkNCi0J
Q2xlYW51cFN0YWNrOjpQb3BBbmREZXN0cm95KCk7CS8vIHRleHQNCi0JcmV0dXJuICggaSA9PSBs
ZW5ndGggKTsNCi0JfQ0KKyAgew0KKyAgSEJ1ZkMqIHRleHQgPSBUZXh0TEMoKTsNCisgIFRJbnQg
bGVuZ3RoKCB0ZXh0LT5MZW5ndGgoKSApOw0KKyAgVEludCBpOw0KKyAgZm9yICggaSA9IDA7DQor
ICAgICAgaSA8IGxlbmd0aCAmJiBWYWxpZGF0ZUNoYXIoICggKnRleHQgKVsgaSBdLCBHZXRGb3Jt
YXQoIGkgKSApOw0KKyAgICAgIGkrKyApDQorICAgIHt9DQorICAgIA0KKyAgQ2xlYW51cFN0YWNr
OjpQb3BBbmREZXN0cm95KCk7ICAvLyB0ZXh0DQorICByZXR1cm4gKCBpID09IGxlbmd0aCApOw0K
KyAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0luY2x1ZGluZ1N0YXRp
Yw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpQb3NJbmNsdWRpbmdTdGF0
aWMoIFRJbnQgYVBvc0V4bHVkaW5nU3RhdGljICkNCi0Jew0KLQlUSW50IGkgPSAwOw0KLQlUSW50
IGNvdW50ID0gaVN0YXRpYy0+Q291bnQoKTsNCi0JZm9yICggOyBpIDwgY291bnQ7IGkrKyApDQot
CQl7DQotCQlpZiAoIGlTdGF0aWMtPkF0KCBpICkuUG9zKCkgPD0gYVBvc0V4bHVkaW5nU3RhdGlj
ICkNCi0JCQl7DQotCQkJYVBvc0V4bHVkaW5nU3RhdGljKys7DQotCQkJfQ0KLQkJfQ0KKyAgew0K
KyAgVEludCBpID0gMDsNCisgIFRJbnQgY291bnQgPSBpU3RhdGljLT5Db3VudCgpOw0KKyAgZm9y
ICggOyBpIDwgY291bnQ7IGkrKyApDQorICAgIHsNCisgICAgaWYgKCBpU3RhdGljLT5BdCggaSAp
LlBvcygpIDw9IGFQb3NFeGx1ZGluZ1N0YXRpYyApDQorICAgICAgew0KKyAgICAgIGFQb3NFeGx1
ZGluZ1N0YXRpYysrOw0KKyAgICAgIH0NCisgICAgfQ0KIA0KLQlyZXR1cm4gYVBvc0V4bHVkaW5n
U3RhdGljOw0KLQl9DQorICByZXR1cm4gYVBvc0V4bHVkaW5nU3RhdGljOw0KKyAgfQ0KIA0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KIC8vIENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3RhdGljDQogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8N
CiBUSW50IENJbnB1dEZvcm1hdEhhbmRsZXI6OlBvc0V4bHVkaW5nU3RhdGljKCBUSW50IGFQb3NJ
bmNsdWRpbmdTdGF0aWMgKQ0KLQl7DQotCS8vIGZpbmQgdGhlIG5lYXJlc3Qgc3RhdGljIGNoYXJh
Y3RlciBiZWZvcmUgYVBvc0luY2x1ZGluZ1N0YXRpYw0KLQlUSW50IGkgPSBpU3RhdGljLT5Db3Vu
dCgpIC0gMTsNCi0JZm9yICggOw0KLQkJICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8
IGlTdGF0aWMtPkF0KCBpICkuUG9zKCk7DQotCQkgIGktLSApDQotCQl7CQ0KLQkJfQ0KKyAgew0K
KyAgLy8gZmluZCB0aGUgbmVhcmVzdCBzdGF0aWMgY2hhcmFjdGVyIGJlZm9yZSBhUG9zSW5jbHVk
aW5nU3RhdGljDQorICBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCisgIGZvciAoIDsN
CisgICAgICBpID4gLTEgJiYgYVBvc0luY2x1ZGluZ1N0YXRpYyA8IGlTdGF0aWMtPkF0KCBpICku
UG9zKCk7DQorICAgICAgaS0tICkNCisgICAgeyANCisgICAgfQ0KIA0KLQlyZXR1cm4gKCBhUG9z
SW5jbHVkaW5nU3RhdGljIC0gaSAtIDEgKTsNCi0JfQ0KKyAgcmV0dXJuICggYVBvc0luY2x1ZGlu
Z1N0YXRpYyAtIGkgLSAxICk7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6UHJldmlvdXNOb25TdGF0aWMNCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLw0KIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxl
cjo6UHJldmlvdXNOb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0JVEludCBwb3NFeGx1ZGlu
Z1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICk7DQorICB7DQorICBUSW50IHBvc0V4
bHVkaW5nU3RhdGljID0gUG9zRXhsdWRpbmdTdGF0aWMoIGFQb3MgKTsNCiANCi0JcmV0dXJuICgg
LTEgPCBwb3NFeGx1ZGluZ1N0YXRpYyApDQotCQk/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhs
dWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQotCX0NCisgIHJldHVybiAoIC0xIDwgcG9z
RXhsdWRpbmdTdGF0aWMgKQ0KKyAgICA/IFBvc0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdT
dGF0aWMgKQ0KKyAgICA6IEtOb3RGb3VuZDsNCisgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDSW5wdXRGb3Jt
YXRIYW5kbGVyOjpOZXh0Tm9uU3RhdGljDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1hdEhh
bmRsZXI6Ok5leHROb25TdGF0aWMoIFRJbnQgYVBvcyApDQotCXsNCi0JVEludCBwb3NFeGx1ZGlu
Z1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICkgKyAxOw0KKyAgew0KKyAgVEludCBw
b3NFeGx1ZGluZ1N0YXRpYyA9IFBvc0V4bHVkaW5nU3RhdGljKCBhUG9zICkgKyAxOw0KIA0KLQly
ZXR1cm4gKCBwb3NFeGx1ZGluZ1N0YXRpYyA8IGlEeW5hbWljLT5MZW5ndGgoKSApDQotCQk/IFBv
c0luY2x1ZGluZ1N0YXRpYyggcG9zRXhsdWRpbmdTdGF0aWMgKQ0KLQkJOiBLTm90Rm91bmQ7DQot
CX0NCisgIHJldHVybiAoIHBvc0V4bHVkaW5nU3RhdGljIDwgaUR5bmFtaWMtPkxlbmd0aCgpICkN
CisgICAgPyBQb3NJbmNsdWRpbmdTdGF0aWMoIHBvc0V4bHVkaW5nU3RhdGljICkNCisgICAgOiBL
Tm90Rm91bmQ7DQorICB9DQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8gQ0lucHV0Rm9ybWF0SGFuZGxlcjo6Rmlyc3RF
bXB0eQ0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vDQogVEludCBDSW5wdXRGb3JtYXRIYW5kbGVyOjpGaXJzdEVtcHR5KCkN
Ci0Jew0KLQlyZXR1cm4gUG9zSW5jbHVkaW5nU3RhdGljKCBpRHluYW1pYy0+TGVuZ3RoKCkgKTsN
Ci0JfQ0KKyAgew0KKyAgcmV0dXJuIFBvc0luY2x1ZGluZ1N0YXRpYyggaUR5bmFtaWMtPkxlbmd0
aCgpICk7DQorICB9DQogDQogDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtODA1LDcgKzgwNSw3IEBAIFRJbnQgQ0lucHV0
Rm9ybWF0SGFuZGxlcjo6Rmlyc3RFbXB0eSgpDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogLy8NCiBUSW50IENJbnB1dEZvcm1h
dEhhbmRsZXI6OlByZXZpb3VzU3RhdGljKCBUSW50IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50
IHByZXZTdGF0aWNQb3MgPSAwOw0KICAgVEludCBpID0gaVN0YXRpYy0+Q291bnQoKSAtIDE7DQog
ICBmb3IgKCA7IGkgPj0gMCAmJiAgaVN0YXRpYy0+QXQoIGkgKS5Qb3MoKSA+IGFQb3M7IGktLSAp
DQpAQCAtODE1LDcgKzgxNSw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNT
dGF0aWMNCiAgICAgcHJldlN0YXRpY1BvcyAgPSBpU3RhdGljLT5BdCggaSApLlBvcygpIDsNCiAg
ICAgfQ0KICAgcmV0dXJuIHByZXZTdGF0aWNQb3MgOw0KLQl9DQorICB9DQogDQogDQogDQpAQCAt
ODI0LDcgKzgyNCw3IEBAIFRJbnQgQ0lucHV0Rm9ybWF0SGFuZGxlcjo6UHJldmlvdXNTdGF0aWMN
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCiAvLw0KIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6OklzUG9zU3RhdGljKCBUSW50
IGFQb3MgKQ0KLQl7DQorICB7DQogICBUSW50IGkgPSBpU3RhdGljLT5Db3VudCgpIC0gMTsNCiAg
IGZvciAoIDsgaSA+PSAwICYmICBpU3RhdGljLT5BdCggaSApLlBvcygpICE9IGFQb3M7IGktLSAp
DQogICAgIHt9DQpAQCAtODMzLDYgKzgzMyw2IEBAIFRCb29sIENJbnB1dEZvcm1hdEhhbmRsZXI6
OklzUG9zU3RhdGljKCANCiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogICByZXR1cm4gRUZh
bHNlOw0KLQl9DQorICB9DQogDQogLy8gIEVuZCBvZiBGaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dz
ZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVkaXRvci5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GSW5wdXRsRm9y
bWF0dGVkRWRpdG9yLmNwcAkocmV2aXNpb24gMTkyMjEpDQorKysgV2ViS2l0L0Jyb3dzZXJDb3Jl
L0Zvcm1jb250cm9scy9zcmMvRklucHV0bEZvcm1hdHRlZEVkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC0xMTE1LDYgKzExMTUsMTQgQEAgVEJvb2wgQ0lucHV0Rm9ybWF0dGVkRWRpdG9yOjpV
cGRhdGVFZGl0aQ0KIA0KICAgICBpZiAoIGlIYW5kbGVyICkNCiAgICAgICAgIHsNCisgICAgICAg
IC8vVGhpcyBjYXNlIG9jY3VycyB3aGVuIHRoZXJlIGlzIFdBUCBDU1MgcHJlc2VudC4gU2V0IHRo
ZSANCisgICAgICAgIC8vZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGlucHV0IG1vZGUgYW5kIGlucHV0
IGNhc2UuIFRoZSBkZWZhdWx0IA0KKyAgICAgICAgLy92YWx1ZSBpcyByZXF1aXJlZCB3aGVuIGlu
dmFsaWQgaW5wdXQgbWFzayBvZiBXQVAgQ1NTIGlzIHByZXNlbnQuDQorICAgICAgICAvL1RoZSBk
ZWZhbHQgdmFsdWUgb2YgV0FQIENTUyBpbnB1dCBtYXNrIGlzICIqTSIuIEFsc28sIGJlIGNhcmVm
dWwNCisgICAgICAgIC8vb2YgY2hhbmdpbmcgdGhlICJhbGxvd2VkSW5wdXRNb2RlcyIgZnJvbSBF
QWtuRWRpdG9yQWxsSW5wdXRNb2Rlcy4gICAgICAgDQorICAgICAgICANCisgICAgICAgIGZlcENh
c2UgPSBjdXJyZW50Q2FzZSA9IEVBa25FZGl0b3JVcHBlckNhc2U7DQorICAgICAgICANCiAgICAg
ICAgIFRJbnB1dEZvcm1hdENoYXIgZm9ybWF0ID0gaUhhbmRsZXItPkdldEZvcm1hdCggYURvY1Bv
cyApOw0KIA0KICAgICAgICAgaWYgKCBpRm9ybWF0LkNoYXIoKSAhPSBmb3JtYXQuQ2hhcigpICkN
CkBAIC0xMTMxLDcgKzExMzksNyBAQCBUQm9vbCBDSW5wdXRGb3JtYXR0ZWRFZGl0b3I6OlVwZGF0
ZUVkaXRpDQogDQogICAgICAgICAgICAgaWYgKCBmb3JtYXQuU3VnZ2VzdGVkQ2FzZSgpID09IFRJ
bnB1dEZvcm1hdENoYXI6OkVJbnB1dExvd2VyQ2FzZSApDQogICAgICAgICAgICAgICAgIHsNCi0g
ICAgICAgICAgICAgICAgZmVwQ2FzZSA9IHBlcm1pdHRlZENhc2UgPSBFQWtuRWRpdG9yTG93ZXJD
YXNlOw0KKyAgICAgICAgICAgICAgICBmZXBDYXNlID0gY3VycmVudENhc2UgID0gcGVybWl0dGVk
Q2FzZSA9IEVBa25FZGl0b3JMb3dlckNhc2U7DQogICAgICAgICAgICAgICAgIH0NCiANCiAgICAg
ICAgICAgICBpZiAoZm9ybWF0LlNwZWNpYWxBbGxvd2VkKCkpDQpAQCAtMTE0Nyw2ICsxMTU1LDEw
IEBAIFRCb29sIENJbnB1dEZvcm1hdHRlZEVkaXRvcjo6VXBkYXRlRWRpdGkNCiAgICAgICAgICAg
ICBpZiAoIGZvcm1hdC5OdW1lcmljQWxsb3dlZCgpICkNCiAgICAgICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICBpbnB1dE1vZGUgPSBFQWtuRWRpdG9yTnVtZXJpY0lucHV0TW9kZTsNCisg
ICAgICAgICAgICAgICAgLy9JZiBudW1lcmljLCB0aGVuIGZvbGxvd2luZyB2YWx1ZXMgZG9lc24n
dCBtYXR0ZXIuIEJ1dCwNCisgICAgICAgICAgICAgICAgLy9pdCBhdm9pZHMgcGFuaWMgaW4gdGhl
IEF2a29uIEZFUCBzZXJ2ZXIgbGF0ZXIgaW4gY2FzZSBsaWtlDQorICAgICAgICAgICAgICAgIC8v
Ik5OQUFOTmFhIiBkdXJpbmcgY2FsbCBTZXRBa25FZGl0b3JDdXJyZW50SW5wdXRNb2RlKC4uKS4g
IA0KKyAgICAgICAgICAgICAgICBTZXRBa25FZGl0b3JQZXJtaXR0ZWRDYXNlTW9kZXMoIEVBa25F
ZGl0b3JBbGxDYXNlTW9kZXMgKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIGVs
c2UNCiAgICAgICAgICAgICAgICAgew0K
</data>
<flag name="review"
          id="4863"
          type_id="1"
          status="+"
          setter="yongjun.zhang"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12795</attachid>
            <date>2007-01-30 09:11:13 -0800</date>
            <delta_ts>2007-01-30 11:14:03 -0800</delta_ts>
            <desc>Last patch was obsolete. Submitting again.</desc>
            <filename>3_1formatHandler.patch</filename>
            <type>text/plain</type>
            <size>1340</size>
            <attacher name="Shyam Sareen">shyam.sareen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxOTI2MSkNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDEyIEBADQorMjAwNy0wMS0zMCAgc2FyZWVuICA8c2h5YW0uc2FyZWVuQG5va2lh
LmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKyAgICAgICAg
REVTQzogV0FQIENTUyBzcGVjaWZpYyBjaGFyYWN0ZXIgZm9ybWF0IGNhdXNpbmcgcGhvbmUga2V5
cGFkIGlucHV0IGVycm9yLg0KKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyMzINCisNCisgICAgICAgICogQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3Ny
Yy9GQ29udHJvbGZvcm1hdGhhbmRsZXIuY3BwOg0KKyAgICAgICAgKFRJbnB1dEZvcm1hdENoYXI6
OlN1Z2dlc3RlZENhc2UpOg0KKw0KIDIwMDctMDEtMjkgIHNhcmVlbiAgPHNoeWFtLnNhcmVlbkBu
b2tpYS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSB5b25nanVuLnpoYW5nQG5va2lhLmNv
bS4NCkluZGV4OiBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbGZv
cm1hdGhhbmRsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1j
b250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5kbGVyLmNwcAkocmV2aXNpb24gMTkyNjEpDQor
KysgV2ViS2l0L0Jyb3dzZXJDb3JlL0Zvcm1jb250cm9scy9zcmMvRkNvbnRyb2xmb3JtYXRoYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTExMSw3ICsxMTEsNiBAQCBUSW5wdXRGb3JtYXRD
aGFyOjpUSW5wdXRDYXNlIFRJbnB1dEZvcm1hDQogICAgIHsNCiAgICAgY2FzZSBLSW5wdXRGb3Jt
YXRBIDoNCiAgICAgY2FzZSBLSW5wdXRGb3JtYXRYIDoNCi0gICAgY2FzZSBLSW5wdXRGb3JtYXRN
IDoNCiAgICAgICByZXN1bHQgPSBFSW5wdXRVcHBlckNhc2U7DQogICAgICAgYnJlYWs7DQogDQpA
QCAtMTI3LDYgKzEyNiw3IEBAIFRJbnB1dEZvcm1hdENoYXI6OlRJbnB1dENhc2UgVElucHV0Rm9y
bWENCiAgICAgICBicmVhazsNCiANCiAgICAgZGVmYXVsdDoNCisgICAgICAvL0Fsc28sIHVzZWQg
Zm9yIEtJbnB1dEZvcm1hdE0uIERlZmF1bHQgY2FzZS4NCiAgICAgICByZXN1bHQgPSBFSW5wdXRO
b25lOw0KICAgICAgIGJyZWFrOw0KICAgICB9DQo=
</data>
<flag name="review"
          id="4890"
          type_id="1"
          status="+"
          setter="bradley.morrison"
    />
          </attachment>
      

    </bug>

</bugzilla>