<?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>104774</bug_id>
          
          <creation_ts>2012-12-12 00:11:48 -0800</creation_ts>
          <short_desc>Change SET_VAR, SET_BORDERVALUE_COLOR macro to require semicolon(;) at the end of the line</short_desc>
          <delta_ts>2012-12-17 15:09:29 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jaehun Lim">ljaehun.lim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789281</commentid>
    <comment_count>0</comment_count>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-12 00:11:48 -0800</bug_when>
    <thetext>Remove redundant semicolons in RenderStyle.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789296</commentid>
    <comment_count>1</comment_count>
      <attachid>178990</attachid>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-12 00:33:10 -0800</bug_when>
    <thetext>Created attachment 178990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789697</commentid>
    <comment_count>2</comment_count>
      <attachid>178990</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-12 10:47:41 -0800</bug_when>
    <thetext>Comment on attachment 178990
Patch

I don&apos;t think that this is an improvement. Statements should end with semicolons for consistency, otherwise the code looks wrong to humans.

If you really want to avoid redundant semicolons, please change the macros to require them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789741</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-12 11:32:31 -0800</bug_when>
    <thetext>Yup.  Generally we write our macros to require semicolons. :)  Please don&apos;t remove these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789866</commentid>
    <comment_count>4</comment_count>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-12 13:37:48 -0800</bug_when>
    <thetext>Thank you for your comments. 

Some lines ends with semicolons, others not. I think it&apos;s not consistent.
How about to change all lines end with semicolons? Or no need to change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789869</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-12 13:43:42 -0800</bug_when>
    <thetext>I&apos;d be happy to r+ such a change.  But better than doing it manually would be to make sure check-webkit-style knows how to catch macro-lines w/o a ;, and to make sure that the WebKit style guide makes this explicit.  W/o changing those patches to fix the code are only a temporary fix at best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789921</commentid>
    <comment_count>6</comment_count>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-12 14:29:37 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;d be happy to r+ such a change.  But better than doing it manually would be to make sure check-webkit-style knows how to catch macro-lines w/o a ;, and to make sure that the WebKit style guide makes this explicit.  W/o changing those patches to fix the code are only a temporary fix at best.

I&apos;ll make a patch to add ; first. And then make another bug for what you said.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790033</commentid>
    <comment_count>7</comment_count>
      <attachid>179145</attachid>
    <who name="Jaehun Lim">ljaehun.lim</who>
    <bug_when>2012-12-12 16:17:22 -0800</bug_when>
    <thetext>Created attachment 179145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793057</commentid>
    <comment_count>8</comment_count>
      <attachid>179145</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-17 14:54:15 -0800</bug_when>
    <thetext>Comment on attachment 179145
Patch

:shrug:  I&apos;m not sure this really helps.  But I don&apos;t see it really hurting either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793066</commentid>
    <comment_count>9</comment_count>
      <attachid>179145</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 15:09:25 -0800</bug_when>
    <thetext>Comment on attachment 179145
Patch

Clearing flags on attachment: 179145

Committed r137950: &lt;http://trac.webkit.org/changeset/137950&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793067</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-17 15:09:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178990</attachid>
            <date>2012-12-12 00:33:10 -0800</date>
            <delta_ts>2012-12-12 16:17:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104774-20121212173030.patch</filename>
            <type>text/plain</type>
            <size>31518</size>
            <attacher name="Jaehun Lim">ljaehun.lim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY3MTA1NWQ3ZWY1OWFh
NGY2YzQ5ZDJmZjYzNTUxYjAxYjM1ZGI2Mi4uNDU0MWNkYTUxZWQ5NDFjODcxOTRmZmMyOTJiNzlj
MWM1NTZkMDQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEyICBKYWVo
dW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgU0VUX1ZBUiwgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SIG1hY3JvIGRvbid0IG5lZWQgc2VtaWNvbG9uKDspIGF0IHRoZSBl
bmQgb2YgdGhlIGxpbmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDc3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSByZWR1bmRhbnQgc2VtaWNvbG9ucyBpbiBSZW5kZXJTdHlsZS5oLgorICAg
ICAgICBBbmQgZml4IHNvbWUgc3R5bGUgaXNzdWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
bm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmg6CisKIDIwMTItMTItMTEgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFRleHQgbm9kZXMgaW4gc2hhZG93IHJvb3RzIGRvbid0IGluaGVyaXQgc3R5
bGUgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggYjEzMzQ5MGJiZjU0ZDVkNjIxZTk4OTkxN2UwN2ZmMzg4ODczYzgyYy4uNmRhNGJl
YjU0YzY3NTg4NGIyOWEwNTIyOWM4ZDdlNjJlODY1ZmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTk3NCw3ICs5NzQsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVjdG9yPFN0eWxlRGFzaGJv
YXJkUmVnaW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQotICAgIHZvaWQgc2V0RGFzaGJvYXJkUmVn
aW9ucyhWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lvbnMpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9kYXNoYm9hcmRSZWdpb25zLCByZWdpb25zKTsgfQorICAgIHZv
aWQgc2V0RGFzaGJvYXJkUmVnaW9ucyhWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+IHJlZ2lv
bnMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9kYXNoYm9hcmRSZWdpb25zLCBy
ZWdpb25zKSB9CiAKICAgICB2b2lkIHNldERhc2hib2FyZFJlZ2lvbihpbnQgdHlwZSwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgTGVuZ3RoIHQsIExlbmd0aCByLCBMZW5ndGggYiwgTGVuZ3RoIGwsIGJv
b2wgYXBwZW5kKQogICAgIHsKQEAgLTk5Myw3ICs5OTMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoRFJBR0dBQkxFX1JFR0lPTikKICAgICBEcmFnZ2FibGVSZWdpb25Nb2RlIGdldERyYWdnYWJs
ZVJlZ2lvbk1vZGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kcmFn
Z2FibGVSZWdpb25Nb2RlOyB9Ci0gICAgdm9pZCBzZXREcmFnZ2FibGVSZWdpb25Nb2RlKERyYWdn
YWJsZVJlZ2lvbk1vZGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2RyYWdn
YWJsZVJlZ2lvbk1vZGUsIHYpOyB9CisgICAgdm9pZCBzZXREcmFnZ2FibGVSZWdpb25Nb2RlKERy
YWdnYWJsZVJlZ2lvbk1vZGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2Ry
YWdnYWJsZVJlZ2lvbk1vZGUsIHYpIH0KICNlbmRpZgogCiAgICAgdm9pZCByZXNldEJvcmRlcigp
IHsgcmVzZXRCb3JkZXJJbWFnZSgpOyByZXNldEJvcmRlclRvcCgpOyByZXNldEJvcmRlclJpZ2h0
KCk7IHJlc2V0Qm9yZGVyQm90dG9tKCk7IHJlc2V0Qm9yZGVyTGVmdCgpOyByZXNldEJvcmRlclJh
ZGl1cygpOyB9CkBAIC0xMDk5LDkgKzEwOTksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0
VHJhbnNmb3JtKEVUZXh0VHJhbnNmb3JtIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X3RyYW5z
Zm9ybSA9IHY7IH0KICAgICB2b2lkIGFkZFRvVGV4dERlY29yYXRpb25zSW5FZmZlY3QoRVRleHRE
ZWNvcmF0aW9uIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zIHw9IHY7IH0K
ICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uc0luRWZmZWN0KEVUZXh0RGVjb3JhdGlvbiB2KSB7
IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyA9IHY7IH0KLSAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uKEVUZXh0RGVjb3JhdGlvbiB2KSB7IFNFVF9WQVIodmlzdWFsLCB0ZXh0RGVj
b3JhdGlvbiwgdik7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uKEVUZXh0RGVjb3JhdGlv
biB2KSB7IFNFVF9WQVIodmlzdWFsLCB0ZXh0RGVjb3JhdGlvbiwgdikgfQogI2lmIEVOQUJMRShD
U1MzX1RFWFQpCi0gICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0aW9u
U3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RleHREZWNvcmF0aW9u
U3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblN0eWxlKFRleHREZWNvcmF0
aW9uU3R5bGUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RleHREZWNvcmF0
aW9uU3R5bGUsIHYpIH0KICAgICB2b2lkIHNldFRleHRBbGlnbkxhc3QoRVRleHRBbGlnbkxhc3Qg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRBbGlnbkxhc3QsIHYpIH0KICNl
bmRpZiAvLyBDU1MzX1RFWFQKICAgICB2b2lkIHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIHYp
IHsgaW5oZXJpdGVkX2ZsYWdzLl9kaXJlY3Rpb24gPSB2OyB9CkBAIC0xMTYzLDkgKzExNjMsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVFbXB0eUNlbGwgdikgeyBpbmhlcml0
ZWRfZmxhZ3MuX2VtcHR5X2NlbGxzID0gdjsgfQogICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoRUNh
cHRpb25TaWRlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgPSB2OyB9CiAKLSAg
ICB2b2lkIHNldEhhc0FzcGVjdFJhdGlvKGJvb2wgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2hhc0FzcGVjdFJhdGlvLCBiKTsgfQotICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9E
ZW5vbWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNw
ZWN0UmF0aW9EZW5vbWluYXRvciwgdik7IH0KLSAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVtZXJh
dG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRp
b051bWVyYXRvciwgdik7IH0KKyAgICB2b2lkIHNldEhhc0FzcGVjdFJhdGlvKGJvb2wgYikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2hhc0FzcGVjdFJhdGlvLCBiKSB9CisgICAg
dm9pZCBzZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCB2KSB9CisgICAgdm9pZCBz
ZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpIH0KIAogICAgIHZvaWQgc2V0TGlzdFN0
eWxlVHlwZShFTGlzdFN0eWxlVHlwZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV90
eXBlID0gdjsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlSW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUlt
YWdlPik7CkBAIC0xMTk4LDE1ICsxMTk4LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByaW50
Q29sb3JBZGp1c3QoUHJpbnRDb2xvckFkanVzdCB2YWx1ZSkgeyBpbmhlcml0ZWRfZmxhZ3MubV9w
cmludENvbG9yQWRqdXN0ID0gdmFsdWU7IH0KIAogICAgIGJvb2wgaGFzQXV0b1pJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fYm94LT5oYXNBdXRvWkluZGV4KCk7IH0KLSAgICB2b2lkIHNldEhhc0F1
dG9aSW5kZXgoKSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgdHJ1ZSk7IFNFVF9W
QVIobV9ib3gsIG1fekluZGV4LCAwKSB9CisgICAgdm9pZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBT
RVRfVkFSKG1fYm94LCBtX2hhc0F1dG9aSW5kZXgsIHRydWUpIFNFVF9WQVIobV9ib3gsIG1feklu
ZGV4LCAwKSB9CiAgICAgaW50IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT56SW5kZXgo
KTsgfQotICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0
b1pJbmRleCwgZmFsc2UpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwgdikgfQorICAgIHZvaWQg
c2V0WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgZmFsc2Up
IFNFVF9WQVIobV9ib3gsIG1fekluZGV4LCB2KSB9CiAKLSAgICB2b2lkIHNldEhhc0F1dG9XaWRv
d3MoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywgdHJ1ZSk7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygpKSB9Ci0g
ICAgdm9pZCBzZXRXaWRvd3Moc2hvcnQgdykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBt
X2hhc0F1dG9XaWRvd3MsIGZhbHNlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dz
LCB3KTsgfQorICAgIHZvaWQgc2V0SGFzQXV0b1dpZG93cygpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbV9oYXNBdXRvV2lkb3dzLCB0cnVlKSBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB3aWRvd3MsIGluaXRpYWxXaWRvd3MoKSkgfQorICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvV2lkb3dzLCBmYWxzZSkgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgd2lkb3dzLCB3KSB9CiAKLSAgICB2b2lkIHNldEhhc0F1
dG9PcnBoYW5zKCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9PcnBoYW5z
LCB0cnVlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgb3JwaGFucywgaW5pdGlhbE9ycGhh
bnMoKSkgfQotICAgIHZvaWQgc2V0T3JwaGFucyhzaG9ydCBvKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIG1faGFzQXV0b09ycGhhbnMsIGZhbHNlKTsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgb3JwaGFucywgbyk7IH0KKyAgICB2b2lkIHNldEhhc0F1dG9PcnBoYW5zKCkgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2hhc0F1dG9PcnBoYW5zLCB0cnVlKSBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCBvcnBoYW5zLCBpbml0aWFsT3JwaGFucygpKSB9CisgICAgdm9pZCBz
ZXRPcnBoYW5zKHNob3J0IG8pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRv
T3JwaGFucywgZmFsc2UpIFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIG8pIH0K
IAogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgcGFnZS1icmVhay1pbnNpZGUgc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIxL3BhZ2UuaHRtbCNwYWdlLWJyZWFrLXByb3BzCiAgICAgdm9p
ZCBzZXRQYWdlQnJlYWtJbnNpZGUoRVBhZ2VCcmVhayBiKSB7IEFTU0VSVChiID09IFBCQVVUTyB8
fCBiID09IFBCQVZPSUQpOyBub25pbmhlcml0ZWRfZmxhZ3MuX3BhZ2VfYnJlYWtfaW5zaWRlID0g
YjsgfQpAQCAtMTIyMCwxMTYgKzEyMjAsMTE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHRT
dHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJv
a2VXaWR0aCwgdykgfQogICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgYykg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBjKSB9CiAgICAgdm9p
ZCBzZXRDb2xvclNwYWNlKENvbG9yU3BhY2Ugc3BhY2UpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgY29sb3JTcGFjZSwgc3BhY2UpIH0KLSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikg
eyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4oZiwgMCwgMSk7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG9wYWNpdHksIHYpOyB9Ci0gICAgdm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQ
YXJ0IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hcHBlYXJhbmNlLCBhKTsg
fQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0
PihmLCAwLCAxKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0eSwgdikgfQor
ICAgIHZvaWQgc2V0QXBwZWFyYW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fYXBwZWFyYW5jZSwgYSkgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMg
b2YgYm94LWFsaWduIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtZmxleGJv
eC0yMDA5MDcyMy8jYWxpZ25tZW50Ci0gICAgdm9pZCBzZXRCb3hBbGlnbihFQm94QWxpZ25tZW50
IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kZXByZWNhdGVk
RmxleGlibGVCb3gsIGFsaWduLCBhKTsgfQorICAgIHZvaWQgc2V0Qm94QWxpZ24oRUJveEFsaWdu
bWVudCBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZGVwcmVj
YXRlZEZsZXhpYmxlQm94LCBhbGlnbiwgYSkgfQogI2lmIEVOQUJMRShDU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUspCi0gICAgdm9pZCBzZXRCb3hEZWNvcmF0aW9uQnJlYWsoRUJveERlY29yYXRpb25C
cmVhayBiKSB7IFNFVF9WQVIobV9ib3gsIG1fYm94RGVjb3JhdGlvbkJyZWFrLCBiKTsgfQorICAg
IHZvaWQgc2V0Qm94RGVjb3JhdGlvbkJyZWFrKEVCb3hEZWNvcmF0aW9uQnJlYWsgYikgeyBTRVRf
VkFSKG1fYm94LCBtX2JveERlY29yYXRpb25CcmVhaywgYikgfQogI2VuZGlmCiAgICAgdm9pZCBz
ZXRCb3hEaXJlY3Rpb24oRUJveERpcmVjdGlvbiBkKSB7IGluaGVyaXRlZF9mbGFncy5fYm94X2Rp
cmVjdGlvbiA9IGQ7IH0KLSAgICB2b2lkIHNldEJveEZsZXgoZmxvYXQgZikgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxl
eCwgZik7IH0KLSAgICB2b2lkIHNldEJveEZsZXhHcm91cCh1bnNpZ25lZCBpbnQgZmcpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kZXByZWNhdGVkRmxleGlibGVC
b3gsIGZsZXhfZ3JvdXAsIGZnKTsgfQotICAgIHZvaWQgc2V0Qm94TGluZXMoRUJveExpbmVzIGwp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kZXByZWNhdGVkRmxl
eGlibGVCb3gsIGxpbmVzLCBsKTsgfQotICAgIHZvaWQgc2V0Qm94T3JkaW5hbEdyb3VwKHVuc2ln
bmVkIGludCBvZykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rl
cHJlY2F0ZWRGbGV4aWJsZUJveCwgb3JkaW5hbF9ncm91cCwgb2cpOyB9Ci0gICAgdm9pZCBzZXRC
b3hPcmllbnQoRUJveE9yaWVudCBvKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmllbnQsIG8pOyB9Ci0gICAgdm9pZCBz
ZXRCb3hQYWNrKEVCb3hQYWNrIHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ssIHApOyB9CisgICAgdm9pZCBzZXRC
b3hGbGV4KGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9kZXByZWNhdGVkRmxleGlibGVCb3gsIGZsZXgsIGYpIH0KKyAgICB2b2lkIHNldEJveEZsZXhH
cm91cCh1bnNpZ25lZCBmZykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgZmxleF9ncm91cCwgZmcpIH0KKyAgICB2b2lkIHNl
dEJveExpbmVzKEVCb3hMaW5lcyBsaW5lKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBsaW5lcywgbGluZSkgfQorICAgIHZv
aWQgc2V0Qm94T3JkaW5hbEdyb3VwKHVuc2lnbmVkIG9nKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LCBvcmRpbmFsX2dyb3Vw
LCBvZykgfQorICAgIHZvaWQgc2V0Qm94T3JpZW50KEVCb3hPcmllbnQgbykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveCwgb3Jp
ZW50LCBvKSB9CisgICAgdm9pZCBzZXRCb3hQYWNrKEVCb3hQYWNrIHApIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gsIHBhY2ss
IHApIH0KICAgICB2b2lkIHNldEJveFNoYWRvdyhQYXNzT3duUHRyPFNoYWRvd0RhdGE+LCBib29s
IGFkZCA9IGZhbHNlKTsKICAgICB2b2lkIHNldEJveFJlZmxlY3QoUGFzc1JlZlB0cjxTdHlsZVJl
ZmxlY3Rpb24+IHJlZmxlY3QpIHsgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2JveFJlZmxl
Y3QgIT0gcmVmbGVjdCkgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYm94UmVmbGVj
dCA9IHJlZmxlY3Q7IH0KLSAgICB2b2lkIHNldEJveFNpemluZyhFQm94U2l6aW5nIHMpIHsgU0VU
X1ZBUihtX2JveCwgbV9ib3hTaXppbmcsIHMpOyB9Ci0gICAgdm9pZCBzZXRGbGV4R3JvdyhmbG9h
dCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVC
b3gsIG1fZmxleEdyb3csIGYpOyB9Ci0gICAgdm9pZCBzZXRGbGV4U2hyaW5rKGZsb2F0IGYpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9m
bGV4U2hyaW5rLCBmKTsgfQotICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0aCBsZW5ndGgpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9m
bGV4QmFzaXMsIGxlbmd0aCk7IH0KLSAgICB2b2lkIHNldE9yZGVyKGludCBvKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fb3JkZXIsIG8pOyB9Ci0gICAgdm9pZCBzZXRBbGlnbkNv
bnRlbnQoRUFsaWduQ29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
YWxpZ25Db250ZW50LCBwKTsgfQotICAgIHZvaWQgc2V0QWxpZ25JdGVtcyhFQWxpZ25JdGVtcyBh
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25JdGVtcywgYSk7IH0KLSAg
ICB2b2lkIHNldEFsaWduU2VsZihFQWxpZ25JdGVtcyBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fYWxpZ25TZWxmLCBhKTsgfQotICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihF
RmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9Ci0g
ICAgdm9pZCBzZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhXcmFwLCB3KTsgfQotICAgIHZv
aWQgc2V0SnVzdGlmeUNvbnRlbnQoRUp1c3RpZnlDb250ZW50IHApIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5Q29udGVudCwgcCk7IH0KLSAgICB2b2lkIHNldEdyaWRD
b2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0
aHMpOyB9Ci0gICAgdm9pZCBzZXRHcmlkUm93cyhjb25zdCBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4m
IGxlbmd0aHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlk
LCBtX2dyaWRSb3dzLCBsZW5ndGhzKTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Db2x1bW4oY29u
c3QgR3JpZFBvc2l0aW9uJiBjb2x1bW5Qb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRDb2x1bW4sIGNvbHVtblBvc2l0aW9u
KTsgfQotICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3coY29uc3QgR3JpZFBvc2l0aW9uJiByb3dQb3Np
dGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWRJdGVt
LCBtX2dyaWRSb3csIHJvd1Bvc2l0aW9uKTsgfQotCi0gICAgdm9pZCBzZXRNYXJxdWVlSW5jcmVt
ZW50KGNvbnN0IExlbmd0aCYgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX21hcnF1ZWUsIGluY3JlbWVudCwgZik7IH0KLSAgICB2b2lkIHNldE1hcnF1ZWVTcGVl
ZChpbnQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hcnF1
ZWUsIHNwZWVkLCBmKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZURpcmVjdGlvbihFTWFycXVlZURp
cmVjdGlvbiBkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFy
cXVlZSwgZGlyZWN0aW9uLCBkKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZUJlaGF2aW9yKEVNYXJx
dWVlQmVoYXZpb3IgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X21hcnF1ZWUsIGJlaGF2aW9yLCBiKTsgfQotICAgIHZvaWQgc2V0TWFycXVlZUxvb3BDb3VudChp
bnQgaSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hcnF1ZWUs
IGxvb3BzLCBpKTsgfQotICAgIHZvaWQgc2V0VXNlck1vZGlmeShFVXNlck1vZGlmeSB1KSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZXJNb2RpZnksIHUpOyB9Ci0gICAgdm9pZCBzZXRV
c2VyRHJhZyhFVXNlckRyYWcgZCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB1c2Vy
RHJhZywgZCk7IH0KLSAgICB2b2lkIHNldFVzZXJTZWxlY3QoRVVzZXJTZWxlY3QgcykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1c2VyU2VsZWN0LCBzKTsgfQotICAgIHZvaWQgc2V0VGV4
dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCB0ZXh0T3ZlcmZsb3csIG92ZXJmbG93KTsgfQotICAgIHZvaWQgc2V0TWFyZ2luQmVm
b3JlQ29sbGFwc2UoRU1hcmdpbkNvbGxhcHNlIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbWFyZ2luQmVmb3JlQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRl
ckNvbGxhcHNlKEVNYXJnaW5Db2xsYXBzZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1hcmdpbkFmdGVyQ29sbGFwc2UsIGMpOyB9Ci0gICAgdm9pZCBzZXRXb3JkQnJlYWsoRVdv
cmRCcmVhayBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdvcmRCcmVhaywgYik7IH0K
LSAgICB2b2lkIHNldE92ZXJmbG93V3JhcChFT3ZlcmZsb3dXcmFwIGIpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgb3ZlcmZsb3dXcmFwLCBiKTsgfQotICAgIHZvaWQgc2V0TkJTUE1vZGUo
RU5CU1BNb2RlIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbmJzcE1vZGUsIGIpOyB9
Ci0gICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbGluZUJyZWFrLCBiKTsgfQotICAgIHZvaWQgc2V0SGlnaGxpZ2h0KGNvbnN0IEF0
b21pY1N0cmluZyYgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoaWdobGlnaHQsIGgp
OyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5zKEh5cGhlbnMgaCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCBoeXBoZW5zLCBoKTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEJlZm9y
ZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxp
bWl0QmVmb3JlLCBsaW1pdCk7IH0KLSAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRBZnRlcihz
aG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0
QWZ0ZXIsIGxpbWl0KTsgfQotICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdExpbmVzKHNob3J0
IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9uTGltaXRMaW5l
cywgbGltaXQpOyB9Ci0gICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9taWNT
dHJpbmcmIGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25TdHJpbmcs
IGgpOyB9Ci0gICAgdm9pZCBzZXRMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGUpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbG9jYWxlLCBsb2NhbGUpOyB9Ci0gICAgdm9pZCBz
ZXRCb3JkZXJGaXQoRUJvcmRlckZpdCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fYm9yZGVyRml0LCBiKTsgfQotICAgIHZvaWQgc2V0UmVzaXplKEVSZXNpemUgcikgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCByZXNpemUsIHIpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5B
eGlzKENvbHVtbkF4aXMgYXhpcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX211bHRpQ29sLCBtX2F4aXMsIGF4aXMpOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5Qcm9n
cmVzc2lvbihDb2x1bW5Qcm9ncmVzc2lvbiBwcm9ncmVzc2lvbikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3Byb2dyZXNzaW9uLCBwcm9ncmVz
c2lvbik7IH0KLSAgICB2b2lkIHNldENvbHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIGZhbHNl
KTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV93
aWR0aCwgZik7IH0KLSAgICB2b2lkIHNldEhhc0F1dG9Db2x1bW5XaWR0aCgpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIHRy
dWUpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBt
X3dpZHRoLCAwKTsgfQotICAgIHZvaWQgc2V0Q29sdW1uQ291bnQodW5zaWduZWQgc2hvcnQgYykg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2F1
dG9Db3VudCwgZmFsc2UpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X211bHRpQ29sLCBtX2NvdW50LCBjKTsgfQotICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbkNvdW50
KCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBt
X2F1dG9Db3VudCwgdHJ1ZSk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fbXVsdGlDb2wsIG1fY291bnQsIDApOyB9Ci0gICAgdm9pZCBzZXRDb2x1bW5HYXAoZmxvYXQg
ZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBt
X25vcm1hbEdhcCwgZmFsc2UpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX211bHRpQ29sLCBtX2dhcCwgZik7IH0KLSAgICB2b2lkIHNldEhhc05vcm1hbENvbHVtbkdh
cCgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwg
bV9ub3JtYWxHYXAsIHRydWUpOyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX211bHRpQ29sLCBtX2dhcCwgMCk7IH0KLSAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihj
b25zdCBDb2xvciYgYykgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1IocmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwgYyk7IH0KLSAgICB2b2lkIHNldENvbHVt
blJ1bGVTdHlsZShFQm9yZGVyU3R5bGUgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3J1bGUubV9zdHlsZSwgYik7IH0KLSAgICB2b2lkIHNl
dENvbHVtblJ1bGVXaWR0aCh1bnNpZ25lZCBzaG9ydCB3KSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZS5tX3dpZHRoLCB3KTsgfQorICAg
IHZvaWQgc2V0Qm94U2l6aW5nKEVCb3hTaXppbmcgcykgeyBTRVRfVkFSKG1fYm94LCBtX2JveFNp
emluZywgcykgfQorICAgIHZvaWQgc2V0RmxleEdyb3coZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhHcm93LCBmKSB9
CisgICAgdm9pZCBzZXRGbGV4U2hyaW5rKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4U2hyaW5rLCBmKSB9CisgICAg
dm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgbGVuZ3RoKSB9Cisg
ICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X29yZGVyLCBvKSB9CisgICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQoRUFsaWduQ29udGVudCBwKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25Db250ZW50LCBwKSB9CisgICAg
dm9pZCBzZXRBbGlnbkl0ZW1zKEVBbGlnbkl0ZW1zIGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9hbGlnbkl0ZW1zLCBhKSB9CisgICAgdm9pZCBzZXRBbGlnblNlbGYoRUFsaWdu
SXRlbXMgYSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduU2VsZiwgYSkg
fQorICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVjdGlvbiBkaXJlY3Rpb24pIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9m
bGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pIH0KKyAgICB2b2lkIHNldEZsZXhXcmFwKEVGbGV4V3Jh
cCB3KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVC
b3gsIG1fZmxleFdyYXAsIHcpIH0KKyAgICB2b2lkIHNldEp1c3RpZnlDb250ZW50KEVKdXN0aWZ5
Q29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUNvbnRl
bnQsIHApIH0KKyAgICB2b2lkIHNldEdyaWRDb2x1bW5zKGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tT
aXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5t
X2dyaWQsIG1fZ3JpZENvbHVtbnMsIGxlbmd0aHMpIH0KKyAgICB2b2lkIHNldEdyaWRSb3dzKGNv
bnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYgbGVuZ3RocykgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZFJvd3MsIGxlbmd0aHMpIH0KKyAgICB2
b2lkIHNldEdyaWRJdGVtQ29sdW1uKGNvbnN0IEdyaWRQb3NpdGlvbiYgY29sdW1uUG9zaXRpb24p
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9ncmlkSXRlbSwgbV9n
cmlkQ29sdW1uLCBjb2x1bW5Qb3NpdGlvbikgfQorICAgIHZvaWQgc2V0R3JpZEl0ZW1Sb3coY29u
c3QgR3JpZFBvc2l0aW9uJiByb3dQb3NpdGlvbikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2dyaWRJdGVtLCBtX2dyaWRSb3csIHJvd1Bvc2l0aW9uKSB9CisKKyAg
ICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoY29uc3QgTGVuZ3RoJiBmKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbWFycXVlZSwgaW5jcmVtZW50LCBmKSB9Cisg
ICAgdm9pZCBzZXRNYXJxdWVlU3BlZWQoaW50IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9tYXJxdWVlLCBzcGVlZCwgZikgfQorICAgIHZvaWQgc2V0TWFycXVl
ZURpcmVjdGlvbihFTWFycXVlZURpcmVjdGlvbiBkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fbWFycXVlZSwgZGlyZWN0aW9uLCBkKSB9CisgICAgdm9pZCBzZXRN
YXJxdWVlQmVoYXZpb3IoRU1hcnF1ZWVCZWhhdmlvciBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fbWFycXVlZSwgYmVoYXZpb3IsIGIpIH0KKyAgICB2b2lkIHNl
dE1hcnF1ZWVMb29wQ291bnQoaW50IGkpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9tYXJxdWVlLCBsb29wcywgaSkgfQorICAgIHZvaWQgc2V0VXNlck1vZGlmeShF
VXNlck1vZGlmeSB1KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVzZXJNb2RpZnksIHUp
IH0KKyAgICB2b2lkIHNldFVzZXJEcmFnKEVVc2VyRHJhZyBkKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIHVzZXJEcmFnLCBkKSB9CisgICAgdm9pZCBzZXRVc2VyU2VsZWN0KEVVc2Vy
U2VsZWN0IHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNlclNlbGVjdCwgcykgfQor
ICAgIHZvaWQgc2V0VGV4dE92ZXJmbG93KFRleHRPdmVyZmxvdyBvdmVyZmxvdykgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0T3ZlcmZsb3csIG92ZXJmbG93KSB9CisgICAgdm9p
ZCBzZXRNYXJnaW5CZWZvcmVDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtYXJnaW5CZWZvcmVDb2xsYXBzZSwgYykgfQorICAgIHZvaWQg
c2V0TWFyZ2luQWZ0ZXJDb2xsYXBzZShFTWFyZ2luQ29sbGFwc2UgYykgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtYXJnaW5BZnRlckNvbGxhcHNlLCBjKSB9CisgICAgdm9pZCBzZXRX
b3JkQnJlYWsoRVdvcmRCcmVhayBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdvcmRC
cmVhaywgYikgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3dXcmFwKEVPdmVyZmxvd1dyYXAgYikgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBvdmVyZmxvd1dyYXAsIGIpIH0KKyAgICB2b2lkIHNl
dE5CU1BNb2RlKEVOQlNQTW9kZSBiKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG5ic3BN
b2RlLCBiKSB9CisgICAgdm9pZCBzZXRMaW5lQnJlYWsoTGluZUJyZWFrIGIpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgbGluZUJyZWFrLCBiKSB9CisgICAgdm9pZCBzZXRIaWdobGlnaHQo
Y29uc3QgQXRvbWljU3RyaW5nJiBoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGhpZ2hs
aWdodCwgaCkgfQorICAgIHZvaWQgc2V0SHlwaGVucyhIeXBoZW5zIGgpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgaHlwaGVucywgaCkgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1p
dEJlZm9yZShzaG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5h
dGlvbkxpbWl0QmVmb3JlLCBsaW1pdCkgfQorICAgIHZvaWQgc2V0SHlwaGVuYXRpb25MaW1pdEFm
dGVyKHNob3J0IGxpbWl0KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGh5cGhlbmF0aW9u
TGltaXRBZnRlciwgbGltaXQpIH0KKyAgICB2b2lkIHNldEh5cGhlbmF0aW9uTGltaXRMaW5lcyhz
aG9ydCBsaW1pdCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBoeXBoZW5hdGlvbkxpbWl0
TGluZXMsIGxpbWl0KSB9CisgICAgdm9pZCBzZXRIeXBoZW5hdGlvblN0cmluZyhjb25zdCBBdG9t
aWNTdHJpbmcmIGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaHlwaGVuYXRpb25TdHJp
bmcsIGgpIH0KKyAgICB2b2lkIHNldExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkg
eyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBsb2NhbGUsIGxvY2FsZSkgfQorICAgIHZvaWQg
c2V0Qm9yZGVyRml0KEVCb3JkZXJGaXQgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2JvcmRlckZpdCwgYikgfQorICAgIHZvaWQgc2V0UmVzaXplKEVSZXNpemUgcikgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCByZXNpemUsIHIpIH0KKyAgICB2b2lkIHNldENvbHVtbkF4
aXMoQ29sdW1uQXhpcyBheGlzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fbXVsdGlDb2wsIG1fYXhpcywgYXhpcykgfQorICAgIHZvaWQgc2V0Q29sdW1uUHJvZ3Jl
c3Npb24oQ29sdW1uUHJvZ3Jlc3Npb24gcHJvZ3Jlc3Npb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9wcm9ncmVzc2lvbiwgcHJvZ3Jlc3Np
b24pIH0KKyAgICB2b2lkIHNldENvbHVtbldpZHRoKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9hdXRvV2lkdGgsIGZhbHNlKSBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3dpZHRo
LCBmKSB9CisgICAgdm9pZCBzZXRIYXNBdXRvQ29sdW1uV2lkdGgoKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fYXV0b1dpZHRoLCB0cnVlKSBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3dpZHRo
LCAwKSB9CisgICAgdm9pZCBzZXRDb2x1bW5Db3VudCh1bnNpZ25lZCBzaG9ydCBjKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fYXV0b0NvdW50
LCBmYWxzZSkgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNv
bCwgbV9jb3VudCwgYykgfQorICAgIHZvaWQgc2V0SGFzQXV0b0NvbHVtbkNvdW50KCkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2F1dG9Db3Vu
dCwgdHJ1ZSkgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNv
bCwgbV9jb3VudCwgMCkgfQorICAgIHZvaWQgc2V0Q29sdW1uR2FwKGZsb2F0IGYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9ub3JtYWxHYXAs
IGZhbHNlKSBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29s
LCBtX2dhcCwgZikgfQorICAgIHZvaWQgc2V0SGFzTm9ybWFsQ29sdW1uR2FwKCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX25vcm1hbEdhcCwg
dHJ1ZSkgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwg
bV9nYXAsIDApIH0KKyAgICB2b2lkIHNldENvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgYykg
eyBTRVRfQk9SREVSVkFMVUVfQ09MT1IocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
bXVsdGlDb2wsIG1fcnVsZSwgYykgfQorICAgIHZvaWQgc2V0Q29sdW1uUnVsZVN0eWxlKEVCb3Jk
ZXJTdHlsZSBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVs
dGlDb2wsIG1fcnVsZS5tX3N0eWxlLCBiKSB9CisgICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgo
dW5zaWduZWQgc2hvcnQgdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX211bHRpQ29sLCBtX3J1bGUubV93aWR0aCwgdykgfQogICAgIHZvaWQgcmVzZXRDb2x1bW5S
dWxlKCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29s
LCBtX3J1bGUsIEJvcmRlclZhbHVlKCkpIH0KLSAgICB2b2lkIHNldENvbHVtblNwYW4oQ29sdW1u
U3BhbiBjb2x1bW5TcGFuKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fbXVsdGlDb2wsIG1fY29sdW1uU3BhbiwgY29sdW1uU3Bhbik7IH0KLSAgICB2b2lkIHNldENv
bHVtbkJyZWFrQmVmb3JlKEVQYWdlQnJlYWsgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2JyZWFrQmVmb3JlLCBwKTsgfQorICAgIHZvaWQg
c2V0Q29sdW1uU3BhbihDb2x1bW5TcGFuIGNvbHVtblNwYW4pIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9jb2x1bW5TcGFuLCBjb2x1bW5TcGFu
KSB9CisgICAgdm9pZCBzZXRDb2x1bW5CcmVha0JlZm9yZShFUGFnZUJyZWFrIHApIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9icmVha0JlZm9y
ZSwgcCkgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgY29sdW1uLWJyZWFrLWluc2lkZSBz
ZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tdWx0aWNvbC8jYnJlYWstYmVmb3JlLWJyZWFr
LWFmdGVyLWJyZWFrLWluc2lkZQotICAgIHZvaWQgc2V0Q29sdW1uQnJlYWtJbnNpZGUoRVBhZ2VC
cmVhayBwKSB7IEFTU0VSVChwID09IFBCQVVUTyB8fCBwID09IFBCQVZPSUQpOyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX2JyZWFrSW5zaWRlLCBw
KTsgfQotICAgIHZvaWQgc2V0Q29sdW1uQnJlYWtBZnRlcihFUGFnZUJyZWFrIHApIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9icmVha0FmdGVy
LCBwKTsgfQotICAgIHZvaWQgc2V0UmVnaW9uQnJlYWtCZWZvcmUoRVBhZ2VCcmVhayBwKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uQnJlYWtCZWZvcmUsIHApOyB9Ci0g
ICAgdm9pZCBzZXRSZWdpb25CcmVha0luc2lkZShFUGFnZUJyZWFrIHApIHsgQVNTRVJUKHAgPT0g
UEJBVVRPIHx8IHAgPT0gUEJBVk9JRCk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cmVnaW9uQnJlYWtJbnNpZGUsIHApOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25CcmVha0FmdGVyKEVQ
YWdlQnJlYWsgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvbkJyZWFr
QWZ0ZXIsIHApOyB9CisgICAgdm9pZCBzZXRDb2x1bW5CcmVha0luc2lkZShFUGFnZUJyZWFrIHAp
IHsgQVNTRVJUKHAgPT0gUEJBVVRPIHx8IHAgPT0gUEJBVk9JRCk7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fYnJlYWtJbnNpZGUsIHApIH0KKyAg
ICB2b2lkIHNldENvbHVtbkJyZWFrQWZ0ZXIoRVBhZ2VCcmVhayBwKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fYnJlYWtBZnRlciwgcCkgfQor
ICAgIHZvaWQgc2V0UmVnaW9uQnJlYWtCZWZvcmUoRVBhZ2VCcmVhayBwKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uQnJlYWtCZWZvcmUsIHApIH0KKyAgICB2b2lkIHNl
dFJlZ2lvbkJyZWFrSW5zaWRlKEVQYWdlQnJlYWsgcCkgeyBBU1NFUlQocCA9PSBQQkFVVE8gfHwg
cCA9PSBQQkFWT0lEKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZWdpb25CcmVh
a0luc2lkZSwgcCkgfQorICAgIHZvaWQgc2V0UmVnaW9uQnJlYWtBZnRlcihFUGFnZUJyZWFrIHAp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZWdpb25CcmVha0FmdGVyLCBwKSB9
CiAgICAgdm9pZCBpbmhlcml0Q29sdW1uUHJvcGVydGllc0Zyb20oUmVuZGVyU3R5bGUqIHBhcmVu
dCkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCA9IHBhcmVudC0+
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2w7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2Zvcm0sIG1fb3BlcmF0aW9ucywgb3BzKTsgfQotICAg
IHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWChMZW5ndGggbCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV94LCBsKTsgfQotICAgIHZvaWQgc2V0
VHJhbnNmb3JtT3JpZ2luWShMZW5ndGggbCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV95LCBsKTsgfQotICAgIHZvaWQgc2V0VHJhbnNmb3Jt
T3JpZ2luWihmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCkt
Pm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9Ci0gICAgdm9pZCBzZXRTcGVhayhFU3BlYWsgcykgeyBT
RVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywgcyk7IH0KLSAgICB2b2lkIHNldFRleHRD
b21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90
ZXh0Q29tYmluZSwgdik7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiBvcHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV90cmFuc2Zvcm0sIG1fb3BlcmF0aW9ucywgb3BzKSB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1P
cmlnaW5YKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV90cmFuc2Zvcm0sIG1feCwgbGVuZ3RoKSB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1P
cmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV90cmFuc2Zvcm0sIG1feSwgbGVuZ3RoKSB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1P
cmlnaW5aKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV90cmFuc2Zvcm0sIG1feiwgZikgfQorICAgIHZvaWQgc2V0U3BlYWsoRVNwZWFrIHMpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpIH0KKyAgICB2b2lkIHNldFRleHRDb21i
aW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0
Q29tYmluZSwgdikgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpIH0K
LSAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9Ci0gICAg
dm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJrLCBtYXJrKTsgfQotICAgIHZvaWQg
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyaywgbWFyayk7IH0K
LSAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRFbXBoYXNpc1Bvc2l0aW9uIHBv
c2l0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9u
LCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lz
RmlsbCBmaWxsKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGws
IGZpbGwpIH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBt
YXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmsp
IH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsoY29uc3QgQXRvbWljU3RyaW5n
JiBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1h
cmssIG1hcmspIH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0aW9uKFRleHRFbXBoYXNp
c1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBo
YXNpc1Bvc2l0aW9uLCBwb3NpdGlvbikgfQogICAgIGJvb2wgc2V0VGV4dE9yaWVudGF0aW9uKFRl
eHRPcmllbnRhdGlvbik7CiAKLSAgICB2b2lkIHNldFJ1YnlQb3NpdGlvbihSdWJ5UG9zaXRpb24g
cG9zaXRpb24pIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9ydWJ5UG9zaXRpb24sIHBv
c2l0aW9uKTsgfQorICAgIHZvaWQgc2V0UnVieVBvc2l0aW9uKFJ1YnlQb3NpdGlvbiBwb3NpdGlv
bikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3J1YnlQb3NpdGlvbiwgcG9zaXRpb24p
IH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICB2b2lkIHNldEZpbHRlcihjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9maWx0ZXIsIG1fb3BlcmF0aW9ucywgb3BzKTsgfQorICAgIHZvaWQgc2V0RmlsdGVy
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX2ZpbHRlciwgbV9vcGVyYXRpb25zLCBvcHMpIH0KICNlbmRpZgogCi0g
ICAgdm9pZCBzZXRUYWJTaXplKHVuc2lnbmVkIHNpemUpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV90YWJTaXplLCBzaXplKTsgfQorICAgIHZvaWQgc2V0VGFiU2l6ZSh1bnNpZ25lZCBz
aXplKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGFiU2l6ZSwgc2l6ZSkgfQogCiAg
ICAgLy8gRW5kIENTUzMgU2V0dGVycwogCi0gICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9t
aWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUdy
aWQsIGxpbmVHcmlkKTsgfQotICAgIHZvaWQgc2V0TGluZVNuYXAoTGluZVNuYXAgbGluZVNuYXAp
IHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lU25hcCwgbGluZVNuYXApOyB9Ci0g
ICAgdm9pZCBzZXRMaW5lQWxpZ24oTGluZUFsaWduIGxpbmVBbGlnbikgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBtX2xpbmVBbGlnbiwgbGluZUFsaWduKTsgfQorICAgIHZvaWQgc2V0TGlu
ZUdyaWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCBtX2xpbmVHcmlkLCBsaW5lR3JpZCkgfQorICAgIHZvaWQgc2V0TGluZVNuYXAoTGlu
ZVNuYXAgbGluZVNuYXApIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lU25hcCwg
bGluZVNuYXApIH0KKyAgICB2b2lkIHNldExpbmVBbGlnbihMaW5lQWxpZ24gbGluZUFsaWduKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUFsaWduLCBsaW5lQWxpZ24pIH0KIAot
ICAgIHZvaWQgc2V0Rmxvd1RocmVhZChjb25zdCBBdG9taWNTdHJpbmcmIGZsb3dUaHJlYWQpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9mbG93VGhyZWFkLCBmbG93VGhyZWFkKTsg
fQotICAgIHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhy
ZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcmVnaW9uVGhyZWFkLCByZWdp
b25UaHJlYWQpOyB9Ci0gICAgdm9pZCBzZXRSZWdpb25PdmVyZmxvdyhSZWdpb25PdmVyZmxvdyBy
ZWdpb25PdmVyZmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3JlZ2lvbk92
ZXJmbG93LCByZWdpb25PdmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZmxvd1RocmVhZCwgZmxvd1RocmVhZCkgfQorICAgIHZvaWQgc2V0UmVnaW9uVGhyZWFkKGNv
bnN0IEF0b21pY1N0cmluZyYgcmVnaW9uVGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fcmVnaW9uVGhyZWFkLCByZWdpb25UaHJlYWQpIH0KKyAgICB2b2lkIHNldFJlZ2lv
bk92ZXJmbG93KFJlZ2lvbk92ZXJmbG93IHJlZ2lvbk92ZXJmbG93KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fcmVnaW9uT3ZlcmZsb3csIHJlZ2lvbk92ZXJmbG93KSB9CiAKLSAg
ICB2b2lkIHNldFdyYXBGbG93KFdyYXBGbG93IHdyYXBGbG93KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fd3JhcEZsb3csIHdyYXBGbG93KTsgfQotICAgIHZvaWQgc2V0V3JhcFRo
cm91Z2goV3JhcFRocm91Z2ggd3JhcFRocm91Z2gpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV93cmFwVGhyb3VnaCwgd3JhcFRocm91Z2gpOyB9CisgICAgdm9pZCBzZXRXcmFwRmxv
dyhXcmFwRmxvdyB3cmFwRmxvdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3dy
YXBGbG93LCB3cmFwRmxvdykgfQorICAgIHZvaWQgc2V0V3JhcFRocm91Z2goV3JhcFRocm91Z2gg
d3JhcFRocm91Z2gpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV93cmFwVGhyb3Vn
aCwgd3JhcFRocm91Z2gpIH0KIAogICAgIC8vIEFwcGxlLXNwZWNpZmljIHByb3BlcnR5IHNldHRl
cnMKICAgICB2b2lkIHNldFBvaW50ZXJFdmVudHMoRVBvaW50ZXJFdmVudHMgcCkgeyBpbmhlcml0
ZWRfZmxhZ3MuX3BvaW50ZXJFdmVudHMgPSBwOyB9CkBAIC0xMzQ5LDI5ICsxMzQ5LDI5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkanVzdEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIGFkanVzdFRyYW5z
aXRpb25zKCk7CiAKLSAgICB2b2lkIHNldFRyYW5zZm9ybVN0eWxlM0QoRVRyYW5zZm9ybVN0eWxl
M0QgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybVN0eWxlM0Qs
IGIpOyB9Ci0gICAgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoRUJhY2tmYWNlVmlzaWJpbGl0
eSBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYmFja2ZhY2VWaXNpYmlsaXR5
LCBiKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlLCBwKTsgfQotICAgIHZvaWQgc2V0UGVyc3Bl
Y3RpdmVPcmlnaW5YKExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGVyc3BlY3RpdmVPcmlnaW5YLCBsKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5Z
KExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmVP
cmlnaW5ZLCBsKTsgfQotICAgIHZvaWQgc2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemUsIHMpOyB9Ci0gICAgdm9pZCBzZXRQ
YWdlU2l6ZVR5cGUoUGFnZVNpemVUeXBlIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9wYWdlU2l6ZVR5cGUsIHQpOyB9Ci0gICAgdm9pZCByZXNldFBhZ2VTaXplVHlwZSgpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBBR0VfU0laRV9B
VVRPKTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtU3R5bGUzRChFVHJhbnNmb3JtU3R5bGUzRCBi
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdHJhbnNmb3JtU3R5bGUzRCwgYikg
fQorICAgIHZvaWQgc2V0QmFja2ZhY2VWaXNpYmlsaXR5KEVCYWNrZmFjZVZpc2liaWxpdHkgYikg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2JhY2tmYWNlVmlzaWJpbGl0eSwgYikg
fQorICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlLCBwKSB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9y
aWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Bl
cnNwZWN0aXZlT3JpZ2luWCwgbGVuZ3RoKSB9CisgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdp
blkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNw
ZWN0aXZlT3JpZ2luWSwgbGVuZ3RoKSB9CisgICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5ndGhTaXpl
IHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZSwgcykgfQorICAg
IHZvaWQgc2V0UGFnZVNpemVUeXBlKFBhZ2VTaXplVHlwZSB0KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fcGFnZVNpemVUeXBlLCB0KSB9CisgICAgdm9pZCByZXNldFBhZ2VTaXpl
VHlwZSgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBB
R0VfU0laRV9BVVRPKSB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
dm9pZCBzZXRJc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbihib29sIGIgPSB0cnVlKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9u
LCBiKTsgfQorICAgIHZvaWQgc2V0SXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24oYm9vbCBi
ID0gdHJ1ZSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3J1bm5pbmdBY2NlbGVy
YXRlZEFuaW1hdGlvbiwgYikgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldExpbmVCb3hDb250YWlu
KExpbmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94
Q29udGFpbiwgYyk7IH0KLSAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KKyAgICB2b2lk
IHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgbV9saW5lQm94Q29udGFpbiwgYykgfQorICAgIHZvaWQgc2V0TGluZUNsYW1wKExp
bmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1w
LCBjKSB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2b2lkIHNldFRhcEhpZ2hsaWdo
dENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhp
Z2hsaWdodENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3Qg
Q29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3Is
IGMpIH0KICNlbmRpZgogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcp
Ci0gICAgdm9pZCBzZXRVc2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFS
KHJhcmVJbmhlcml0ZWREYXRhLCB1c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCB2KTsgfQorICAg
IHZvaWQgc2V0VXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdXNlVG91Y2hPdmVyZmxvd1Njcm9sbGluZywgdikgfQogI2VuZGlmCiAg
ICAgYm9vbCBzZXRUZXh0U2l6ZUFkanVzdChib29sKTsKLSAgICB2b2lkIHNldFRleHRTZWN1cml0
eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5KTsgfQorICAgIHZvaWQgc2V0VGV4dFNlY3Vy
aXR5KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpIH0KIAogI2lmIEVOQUJMRShTVkcpCiAg
ICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdmdT
dHlsZS5nZXQoKTsgfQpAQCAtMTQ0MCwxMSArMTQ0MCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IENsaXBQYXRoT3BlcmF0aW9uKiBpbml0aWFsQ2xpcFBhdGgoKSB7IHJldHVybiAwOyB9CiAKICAg
ICBMZW5ndGggc2hhcGVQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fc2hhcGVQYWRkaW5nOyB9Ci0gICAgdm9pZCBzZXRTaGFwZVBhZGRpbmcoTGVuZ3RoIHNo
YXBlUGFkZGluZykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlUGFkZGlu
Zywgc2hhcGVQYWRkaW5nKTsgfQorICAgIHZvaWQgc2V0U2hhcGVQYWRkaW5nKExlbmd0aCBzaGFw
ZVBhZGRpbmcpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZVBhZGRpbmcs
IHNoYXBlUGFkZGluZykgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNoYXBlUGFkZGluZygp
IHsgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KIAogICAgIExlbmd0aCBzaGFwZU1hcmdpbigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlTWFyZ2luOyB9Ci0g
ICAgdm9pZCBzZXRTaGFwZU1hcmdpbihMZW5ndGggc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9zaGFwZU1hcmdpbiwgc2hhcGVNYXJnaW4pOyB9CisgICAgdm9p
ZCBzZXRTaGFwZU1hcmdpbihMZW5ndGggc2hhcGVNYXJnaW4pIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9zaGFwZU1hcmdpbiwgc2hhcGVNYXJnaW4pIH0KICAgICBzdGF0aWMgTGVu
Z3RoIGluaXRpYWxTaGFwZU1hcmdpbigpIHsgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7IH0KIAog
ICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnREYXRhKCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179145</attachid>
            <date>2012-12-12 16:17:22 -0800</date>
            <delta_ts>2012-12-17 15:09:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104774-20121213091441.patch</filename>
            <type>text/plain</type>
            <size>28226</size>
            <attacher name="Jaehun Lim">ljaehun.lim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlOTU2YWI3OTVmYTVj
ZTdlMjI4OTVmOTdiN2JmNWJlMzNiNGZmMy4uYmQyYjFhZjEzNWNhZGU1YmVmYmNmNmNkYjQwMDUy
ZTliYzM1ODk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTEyICBKYWVo
dW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ2hhbmdlIFNFVF9W
QVIsIFNFVF9CT1JERVJWQUxVRV9DT0xPUiBtYWNybyB0byByZXF1aXJlIHNlbWljb2xvbig7KSBh
dCB0aGUgZW5kIG9mIHRoZSBsaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDQ3NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIGxhc3QgOyBpbiBTRVRfVkFSLCBTRVRfQk9SREVSVkFM
VUVfQ09MT1IgbWFjcm8gZGVmaW5pdGlvbi4KKyAgICAgICAgQWRkIHRoZSBvbWl0dGVkIDsgaW4g
UmVuZGVyU3R5bGUuaCB8IC5jcHAKKworICAgICAgICBObyBuZXcgdGVzdHMsIGp1c3Qgc3R5bGUg
Y2hhbmdlLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTItMTItMTIgIENocmlzIFJvZ2VycyAg
PGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgT2ZmbGluZUF1ZGlvQ29u
dGV4dCBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKaW5kZXggN2Y2Yjg3NDZjNTRmYWNmYzJmNTU5ODQ4NzNjYzA2ZGYxYTFlYWUx
MS4uNTBmNzViMWNkNjg3YjE3NjkxNTNkNmVlNTVmZTM2YTdmNWIyNTQ4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC05NzYsMTMgKzk3
NiwxMyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZShQYXNzUmVmUHRyPFN0
eWxlSW1hZ2U+IHYpCiAKIENvbG9yIFJlbmRlclN0eWxlOjpjb2xvcigpIGNvbnN0IHsgcmV0dXJu
IGluaGVyaXRlZC0+Y29sb3I7IH0KIENvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOyB9Ci12b2lkIFJl
bmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwg
Y29sb3IsIHYpIH07Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0
IENvbG9yJiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9yLCB2KSB9Cit2
b2lkIFJlbmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVy
aXRlZCwgY29sb3IsIHYpOyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9yLCB2
KTsgfQogCiBzaG9ydCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSBjb25z
dCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmc7IH0KIHNob3J0
IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhl
cml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOyB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRI
b3Jpem9udGFsQm9yZGVyU3BhY2luZyhzaG9ydCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBob3Jp
em9udGFsX2JvcmRlcl9zcGFjaW5nLCB2KSB9Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0aWNh
bEJvcmRlclNwYWNpbmcoc2hvcnQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxfYm9y
ZGVyX3NwYWNpbmcsIHYpIH0KK3ZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKHNob3J0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGhvcml6b250YWxfYm9yZGVyX3Nw
YWNpbmcsIHYpOyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmco
c2hvcnQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcsIHYp
OyB9CiAKIFJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0
IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
YjEzMzQ5MGJiZjU0ZDVkNjIxZTk4OTkxN2UwN2ZmMzg4ODczYzgyYy4uZWVjNTcyYmNmOTk4ZDUz
OTFmYWIzNzk4Yzg0NzljNDllZDQ4NDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTkwLDExICs5MCwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21wYXJlRXF1YWwoY29uc3QgVCYgdCwgY29u
c3QgVSYgdQogCiAjZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2YWx1ZSkgXAogICAg
IGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT52YXJpYWJsZSwgdmFsdWUpKSBcCi0gICAgICAgIGdy
b3VwLmFjY2VzcygpLT52YXJpYWJsZSA9IHZhbHVlOworICAgICAgICBncm91cC5hY2Nlc3MoKS0+
dmFyaWFibGUgPSB2YWx1ZQogCiAjZGVmaW5lIFNFVF9CT1JERVJWQUxVRV9DT0xPUihncm91cCwg
dmFyaWFibGUsIHZhbHVlKSBcCiAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAtPnZhcmlhYmxl
LmNvbG9yKCksIHZhbHVlKSkgXAotICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFyaWFibGUuc2V0
Q29sb3IodmFsdWUpOworICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFyaWFibGUuc2V0Q29sb3Io
dmFsdWUpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTU5LDE4ICs5NTksMTggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24oRVBvc2l0aW9uIHYpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLl9wb3NpdGlvbiA9IHY7IH0KICAgICB2b2lkIHNldEZsb2F0aW5nKEVGbG9hdCB2KSB7IG5v
bmluaGVyaXRlZF9mbGFncy5fZmxvYXRpbmcgPSB2OyB9CiAKLSAgICB2b2lkIHNldExlZnQoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fbGVmdCwgdikgfQotICAgIHZvaWQg
c2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fcmlnaHQsIHYp
IH0KLSAgICB2b2lkIHNldFRvcChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQu
bV90b3AsIHYpIH0KLSAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJv
dW5kLCBvZmZzZXQubV9ib3R0b20sIHYpIH0KKyAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0Lm1fbGVmdCwgdik7IH0KKyAgICB2b2lkIHNldFJpZ2h0
KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3JpZ2h0LCB2KTsgfQorICAg
IHZvaWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5tX3RvcCwg
dik7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBv
ZmZzZXQubV9ib3R0b20sIHYpOyB9CiAKLSAgICB2b2lkIHNldFdpZHRoKExlbmd0aCB2KSB7IFNF
VF9WQVIobV9ib3gsIG1fd2lkdGgsIHYpIH0KLSAgICB2b2lkIHNldEhlaWdodChMZW5ndGggdikg
eyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgdikgfQorICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3Ro
IHYpIHsgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEhlaWdodChM
ZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgdik7IH0KIAotICAgIHZvaWQgc2V0
TWluV2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9taW5XaWR0aCwgdikgfQotICAg
IHZvaWQgc2V0TWF4V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhXaWR0aCwg
dikgfQotICAgIHZvaWQgc2V0TWluSGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1f
bWluSGVpZ2h0LCB2KSB9Ci0gICAgdm9pZCBzZXRNYXhIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZB
UihtX2JveCwgbV9tYXhIZWlnaHQsIHYpIH0KKyAgICB2b2lkIHNldE1pbldpZHRoKExlbmd0aCB2
KSB7IFNFVF9WQVIobV9ib3gsIG1fbWluV2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRNYXhXaWR0
aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heFdpZHRoLCB2KTsgfQorICAgIHZvaWQg
c2V0TWluSGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWluSGVpZ2h0LCB2KTsg
fQorICAgIHZvaWQgc2V0TWF4SGVpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fbWF4
SGVpZ2h0LCB2KTsgfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIFZlY3Rv
cjxTdHlsZURhc2hib2FyZFJlZ2lvbj4gZGFzaGJvYXJkUmVnaW9ucygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rhc2hib2FyZFJlZ2lvbnM7IH0KQEAgLTk5NywzNCAr
OTk3LDM0IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCByZXNldEJvcmRlcigpIHsgcmVz
ZXRCb3JkZXJJbWFnZSgpOyByZXNldEJvcmRlclRvcCgpOyByZXNldEJvcmRlclJpZ2h0KCk7IHJl
c2V0Qm9yZGVyQm90dG9tKCk7IHJlc2V0Qm9yZGVyTGVmdCgpOyByZXNldEJvcmRlclJhZGl1cygp
OyB9Ci0gICAgdm9pZCByZXNldEJvcmRlclRvcCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
Lm1fdG9wLCBCb3JkZXJWYWx1ZSgpKSB9Ci0gICAgdm9pZCByZXNldEJvcmRlclJpZ2h0KCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodCwgQm9yZGVyVmFsdWUoKSkgfQotICAgIHZv
aWQgcmVzZXRCb3JkZXJCb3R0b20oKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRv
bSwgQm9yZGVyVmFsdWUoKSkgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJMZWZ0KCkgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0LCBCb3JkZXJWYWx1ZSgpKSB9Ci0gICAgdm9pZCByZXNl
dEJvcmRlckltYWdlKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9pbWFnZSwgTmluZVBp
ZWNlSW1hZ2UoKSkgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3AoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3RvcCwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVy
UmlnaHQoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0LCBCb3JkZXJWYWx1ZSgp
KTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b20oKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2JvdHRvbSwgQm9yZGVyVmFsdWUoKSk7IH0KKyAgICB2b2lkIHJlc2V0Qm9yZGVyTGVm
dCgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdCwgQm9yZGVyVmFsdWUoKSk7IH0K
KyAgICB2b2lkIHJlc2V0Qm9yZGVySW1hZ2UoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5t
X2ltYWdlLCBOaW5lUGllY2VJbWFnZSgpKTsgfQogICAgIHZvaWQgcmVzZXRCb3JkZXJSYWRpdXMo
KSB7IHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpOyByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVz
KCk7IHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cygpOyByZXNldEJvcmRlckJvdHRvbVJpZ2h0
UmFkaXVzKCk7IH0KLSAgICB2b2lkIHJlc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cygpIHsgU0VUX1ZB
UihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKSB9Ci0g
ICAgdm9pZCByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBi
b3JkZXIubV90b3BSaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKSB9Ci0gICAgdm9pZCByZXNl
dEJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2Jv
dHRvbUxlZnQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSkgfQotICAgIHZvaWQgcmVzZXRCb3JkZXJC
b3R0b21SaWdodFJhZGl1cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmln
aHQsIGluaXRpYWxCb3JkZXJSYWRpdXMoKSkgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJUb3BMZWZ0
UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BMZWZ0LCBpbml0aWFsQm9y
ZGVyUmFkaXVzKCkpOyB9CisgICAgdm9pZCByZXNldEJvcmRlclRvcFJpZ2h0UmFkaXVzKCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV90b3BSaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygp
KTsgfQorICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkgeyBTRVRfVkFSKHN1
cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkpOyB9Cisg
ICAgdm9pZCByZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV9ib3R0b21SaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1cygpKTsgfQogCi0gICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fY29sb3IsIHYpIH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9jb2xvciwgdik7IH0KIAotICAgIHZv
aWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGggbCkgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0aW9uLCBsKSB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5k
WVBvc2l0aW9uKExlbmd0aCBsKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQu
bV95UG9zaXRpb24sIGwpIH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplKEVGaWxsU2l6ZVR5
cGUgYikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZVR5cGUsIGIp
IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVuZ3RoKExlbmd0aFNpemUgbCkgeyBTRVRf
VkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1fc2l6ZUxlbmd0aCwgbCkgfQorICAgIHZv
aWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIobV9iYWNr
Z3JvdW5kLCBtX2JhY2tncm91bmQubV94UG9zaXRpb24sIGxlbmd0aCk7IH0KKyAgICB2b2lkIHNl
dEJhY2tncm91bmRZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3Vu
ZCwgbV9iYWNrZ3JvdW5kLm1feVBvc2l0aW9uLCBsZW5ndGgpOyB9CisgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kU2l6ZShFRmlsbFNpemVUeXBlIGIpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFj
a2dyb3VuZC5tX3NpemVUeXBlLCBiKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZFNpemVMZW5n
dGgoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV9z
aXplTGVuZ3RoLCBzKTsgfQogICAgIAotICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2UoY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1faW1hZ2UsIGIpIH0K
KyAgICB2b2lkIHNldEJvcmRlckltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2ltYWdlLCBiKTsgfQogICAgIHZvaWQgc2V0Qm9yZGVySW1h
Z2VTb3VyY2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiB2KSB7IHN1cnJvdW5kLmFjY2VzcygpLT5i
b3JkZXIubV9pbWFnZS5zZXRJbWFnZSh2KTsgfQogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VTbGlj
ZXMoTGVuZ3RoQm94IHNsaWNlcykgeyBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uu
c2V0SW1hZ2VTbGljZXMoc2xpY2VzKTsgfQogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChM
ZW5ndGhCb3ggc2xpY2VzKSB7IHN1cnJvdW5kLmFjY2VzcygpLT5ib3JkZXIubV9pbWFnZS5zZXRC
b3JkZXJTbGljZXMoc2xpY2VzKTsgfQogICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VPdXRzZXQoTGVu
Z3RoQm94IG91dHNldCkgeyBzdXJyb3VuZC5hY2Nlc3MoKS0+Ym9yZGVyLm1faW1hZ2Uuc2V0T3V0
c2V0KG91dHNldCk7IH0KIAotICAgIHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJhZGl1cyhMZW5ndGhT
aXplIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVmdCwgcykgfQotICAgIHZv
aWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBzKSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0
UmFkaXVzKExlbmd0aFNpemUgcykgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21M
ZWZ0LCBzKSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXpl
IHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIHMpIH0KKyAgICB2
b2lkIHNldEJvcmRlclRvcExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX3RvcExlZnQsIHMpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJh
ZGl1cyhMZW5ndGhTaXplIHMpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQs
IHMpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUgcykg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBzKTsgfQorICAgIHZvaWQg
c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBzKTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXJSYWRp
dXMoTGVuZ3RoU2l6ZSBzKQogICAgIHsKQEAgLTEwNDQsMzcgKzEwNDQsMzcgQEAgcHVibGljOgog
ICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0
JiBib3JkZXJSZWN0LAogICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRoLCBMYXlvdXRVbml0IGJv
dHRvbVdpZHRoLCBMYXlvdXRVbml0IGxlZnRXaWR0aCwgTGF5b3V0VW5pdCByaWdodFdpZHRoLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
IGNvbnN0OwogCi0gICAgdm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpIH0KLSAgICB2b2lkIHNldEJv
cmRlckxlZnRTdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIu
bV9sZWZ0Lm1fc3R5bGUsIHYpIH0KLSAgICB2b2lkIHNldEJvcmRlckxlZnRDb2xvcihjb25zdCBD
b2xvciYgdikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2xlZnQs
IHYpIH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3Jk
ZXJSaWdodFN0eWxlKEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5t
X3JpZ2h0Lm1fc3R5bGUsIHYpIH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0Q29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9yaWdo
dCwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIubV90b3AubV93aWR0aCwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVy
VG9wU3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9w
Lm1fc3R5bGUsIHYpIH0KLSAgICB2b2lkIHNldEJvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wLCB2KSB9Ci0g
ICAgdm9pZCBzZXRCb3JkZXJCb3R0b21XaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91
bmQsIGJvcmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0
b21TdHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0
b20ubV9zdHlsZSwgdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b20s
IHYpIH0KLQotICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VU
X1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3dpZHRoLCB2KSB9Ci0gICAgdm9pZCBzZXRP
dXRsaW5lU3R5bGVJc0F1dG8oT3V0bGluZUlzQXV0byBpc0F1dG8pIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fb3V0bGluZS5tX2lzQXV0bywgaXNBdXRvKSB9Ci0gICAgdm9pZCBzZXRPdXRsaW5l
U3R5bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5t
X3N0eWxlLCB2KSB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2KSB9CisgICAg
dm9pZCBzZXRCb3JkZXJMZWZ0V2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBi
b3JkZXIubV9sZWZ0Lm1fd2lkdGgsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJMZWZ0U3R5bGUo
RUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdC5tX3N0eWxl
LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9CT1JERVJWQUxVRV9DT0xPUihzdXJyb3VuZCwgYm9yZGVyLm1fbGVmdCwgdik7IH0KKyAgICB2
b2lkIHNldEJvcmRlclJpZ2h0V2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBi
b3JkZXIubV9yaWdodC5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRTdHls
ZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9yaWdodC5tX3N0
eWxlLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikg
eyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX3JpZ2h0LCB2KTsgfQor
ICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWduZWQgdikgeyBTRVRfVkFSKHN1cnJvdW5k
LCBib3JkZXIubV90b3AubV93aWR0aCwgdik7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFN0eWxl
KEVCb3JkZXJTdHlsZSB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcC5tX3N0eWxl
LCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0JPUkRFUlZBTFVFX0NPTE9SKHN1cnJvdW5kLCBib3JkZXIubV90b3AsIHYpOyB9CisgICAgdm9p
ZCBzZXRCb3JkZXJCb3R0b21XaWR0aCh1bnNpZ25lZCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJv
cmRlci5tX2JvdHRvbS5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tU3R5
bGUoRUJvcmRlclN0eWxlIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tLm1f
c3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYg
dikgeyBTRVRfQk9SREVSVkFMVUVfQ09MT1Ioc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbSwgdik7
IH0KKworICAgIHZvaWQgc2V0T3V0bGluZVdpZHRoKHVuc2lnbmVkIHNob3J0IHYpIHsgU0VUX1ZB
UihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX3dpZHRoLCB2KTsgfQorICAgIHZvaWQgc2V0T3V0
bGluZVN0eWxlSXNBdXRvKE91dGxpbmVJc0F1dG8gaXNBdXRvKSB7IFNFVF9WQVIobV9iYWNrZ3Jv
dW5kLCBtX291dGxpbmUubV9pc0F1dG8sIGlzQXV0byk7IH0KKyAgICB2b2lkIHNldE91dGxpbmVT
dHlsZShFQm9yZGVyU3R5bGUgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1f
c3R5bGUsIHYpOyB9CisgICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX0JPUkRFUlZBTFVFX0NPTE9SKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLCB2KTsgfQogCiAg
ICAgdm9pZCBzZXRPdmVyZmxvd1goRU92ZXJmbG93IHYpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl9v
dmVyZmxvd1ggPSB2OyB9CiAgICAgdm9pZCBzZXRPdmVyZmxvd1koRU92ZXJmbG93IHYpIHsgbm9u
aW5oZXJpdGVkX2ZsYWdzLl9vdmVyZmxvd1kgPSB2OyB9CiAgICAgdm9pZCBzZXRWaXNpYmlsaXR5
KEVWaXNpYmlsaXR5IHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl92aXNpYmlsaXR5ID0gdjsgfQogICAg
IHZvaWQgc2V0VmVydGljYWxBbGlnbihFVmVydGljYWxBbGlnbiB2KSB7IG5vbmluaGVyaXRlZF9m
bGFncy5fdmVydGljYWxfYWxpZ24gPSB2OyB9Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVu
Z3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVydGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1f
Ym94LCBtX3ZlcnRpY2FsQWxpZ24sIGxlbmd0aCkgfQorICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bkxlbmd0aChMZW5ndGggbGVuZ3RoKSB7IHNldFZlcnRpY2FsQWxpZ24oTEVOR1RIKTsgU0VUX1ZB
UihtX2JveCwgbV92ZXJ0aWNhbEFsaWduLCBsZW5ndGgpOyB9CiAKLSAgICB2b2lkIHNldEhhc0Ns
aXAoYm9vbCBiID0gdHJ1ZSkgeyBTRVRfVkFSKHZpc3VhbCwgaGFzQ2xpcCwgYikgfQotICAgIHZv
aWQgc2V0Q2xpcExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9sZWZ0LCB2
KSB9Ci0gICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUih2aXN1YWwsIGNs
aXAubV9yaWdodCwgdikgfQotICAgIHZvaWQgc2V0Q2xpcFRvcChMZW5ndGggdikgeyBTRVRfVkFS
KHZpc3VhbCwgY2xpcC5tX3RvcCwgdikgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGgg
dikgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2JvdHRvbSwgdikgfQorICAgIHZvaWQgc2V0SGFz
Q2xpcChib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQorICAg
IHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubV9sZWZ0
LCB2KTsgfQorICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIodmlzdWFs
LCBjbGlwLm1fcmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCB2KSB7IFNF
VF9WQVIodmlzdWFsLCBjbGlwLm1fdG9wLCB2KTsgfQorICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShM
ZW5ndGggdikgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5tX2JvdHRvbSwgdik7IH0KICAgICB2b2lk
IHNldENsaXAoTGVuZ3RoIHRvcCwgTGVuZ3RoIHJpZ2h0LCBMZW5ndGggYm90dG9tLCBMZW5ndGgg
bGVmdCk7Ci0gICAgdm9pZCBzZXRDbGlwKExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWws
IGNsaXAsIGJveCkgfQorICAgIHZvaWQgc2V0Q2xpcChMZW5ndGhCb3ggYm94KSB7IFNFVF9WQVIo
dmlzdWFsLCBjbGlwLCBib3gpOyB9CiAKICAgICB2b2lkIHNldFVuaWNvZGVCaWRpKEVVbmljb2Rl
QmlkaSBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGkgPSBiOyB9CiAKQEAgLTEw
ODgsMTMgKzEwODgsMTMgQEAgcHVibGljOgogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCiAg
ICAgdm9pZCBzZXRUZXh0QXV0b3NpemluZ011bHRpcGxpZXIoZmxvYXQgdikKICAgICB7Ci0gICAg
ICAgIFNFVF9WQVIodmlzdWFsLCBtX3RleHRBdXRvc2l6aW5nTXVsdGlwbGllciwgdikKKyAgICAg
ICAgU0VUX1ZBUih2aXN1YWwsIG1fdGV4dEF1dG9zaXppbmdNdWx0aXBsaWVyLCB2KTsKICAgICAg
ICAgc2V0Rm9udFNpemUoZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKTsKICAgICB9
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKLSAgICB2b2lkIHNl
dFRleHRJbmRlbnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50
LCB2KSB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50KExlbmd0aCB2KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIGluZGVudCwgdik7IH0KICAgICB2b2lkIHNldFRleHRBbGlnbihFVGV4dEFs
aWduIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduID0gdjsgfQogICAgIHZvaWQgc2V0
VGV4dFRyYW5zZm9ybShFVGV4dFRyYW5zZm9ybSB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF90
cmFuc2Zvcm0gPSB2OyB9CiAgICAgdm9pZCBhZGRUb1RleHREZWNvcmF0aW9uc0luRWZmZWN0KEVU
ZXh0RGVjb3JhdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5fdGV4dF9kZWNvcmF0aW9ucyB8PSB2
OyB9CkBAIC0xMTAyLDcgKzExMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0RGVjb3Jh
dGlvbihFVGV4dERlY29yYXRpb24gdikgeyBTRVRfVkFSKHZpc3VhbCwgdGV4dERlY29yYXRpb24s
IHYpOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICB2b2lkIHNldFRleHREZWNvcmF0aW9u
U3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fdGV4dERlY29yYXRpb25TdHlsZSwgdik7IH0KLSAgICB2b2lkIHNldFRleHRBbGlnbkxh
c3QoRVRleHRBbGlnbkxhc3QgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRB
bGlnbkxhc3QsIHYpIH0KKyAgICB2b2lkIHNldFRleHRBbGlnbkxhc3QoRVRleHRBbGlnbkxhc3Qg
dikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX3RleHRBbGlnbkxhc3QsIHYpOyB9CiAj
ZW5kaWYgLy8gQ1NTM19URVhUCiAgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2
KSB7IGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uID0gdjsgfQogICAgIHZvaWQgc2V0TGluZUhl
aWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCk7CkBAIC0xMTExLDE1ICsxMTExLDE1IEBA
IHB1YmxpYzoKICAgICBib29sIHNldEVmZmVjdGl2ZVpvb20oZmxvYXQpOwogCiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICB2b2lkIHNldEltYWdlT3JpZW50YXRpb24oSW1h
Z2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdl
T3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpIH0KKyAgICB2b2lkIHNldEltYWdlT3Jp
ZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbkVudW0gdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCBtX2ltYWdlT3JpZW50YXRpb24sIHN0YXRpY19jYXN0PGludD4odikpOyB9CiAjZW5kaWYK
IAotICAgIHZvaWQgc2V0SW1hZ2VSZW5kZXJpbmcoRUltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlbmRlcmluZywgdikgfQorICAgIHZvaWQgc2V0
SW1hZ2VSZW5kZXJpbmcoRUltYWdlUmVuZGVyaW5nIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9pbWFnZVJlbmRlcmluZywgdik7IH0KIAogI2lmIEVOQUJMRShDU1NfSU1BR0VfUkVT
T0xVVElPTikKLSAgICB2b2lkIHNldEltYWdlUmVzb2x1dGlvblNvdXJjZShJbWFnZVJlc29sdXRp
b25Tb3VyY2UgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlv
blNvdXJjZSwgdikgfQotICAgIHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChJbWFnZVJlc29s
dXRpb25TbmFwIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRp
b25TbmFwLCB2KSB9Ci0gICAgdm9pZCBzZXRJbWFnZVJlc29sdXRpb24oZmxvYXQgZikgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2ltYWdlUmVzb2x1dGlvbiwgZikgfQorICAgIHZvaWQg
c2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKEltYWdlUmVzb2x1dGlvblNvdXJjZSB2KSB7IFNFVF9W
QVIocmFyZUluaGVyaXRlZERhdGEsIG1faW1hZ2VSZXNvbHV0aW9uU291cmNlLCB2KTsgfQorICAg
IHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uU25hcChJbWFnZVJlc29sdXRpb25TbmFwIHYpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9pbWFnZVJlc29sdXRpb25TbmFwLCB2KTsgfQorICAg
IHZvaWQgc2V0SW1hZ2VSZXNvbHV0aW9uKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9pbWFnZVJlc29sdXRpb24sIGYpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0V2hp
dGVTcGFjZShFV2hpdGVTcGFjZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UgPSB2
OyB9CkBAIC0xMTUxLDExICsxMTUxLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWFza0lt
YWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9tYXNrLnNldEltYWdlKHYpOyB9CiAKLSAgICB2b2lkIHNldE1hc2tCb3hJbWFnZShj
b25zdCBOaW5lUGllY2VJbWFnZSYgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X21hc2tCb3hJbWFnZSwgYikgfQorICAgIHZvaWQgc2V0TWFza0JveEltYWdlKGNvbnN0IE5pbmVQ
aWVjZUltYWdlJiBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFza0JveElt
YWdlLCBiKTsgfQogICAgIHZvaWQgc2V0TWFza0JveEltYWdlU291cmNlKFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4gdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tYXNrQm94SW1h
Z2Uuc2V0SW1hZ2Uodik7IH0KLSAgICB2b2lkIHNldE1hc2tYUG9zaXRpb24oTGVuZ3RoIGwpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9tYXNrLm1feFBvc2l0aW9uLCBsKSB9Ci0g
ICAgdm9pZCBzZXRNYXNrWVBvc2l0aW9uKExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbWFzay5tX3lQb3NpdGlvbiwgbCkgfQotICAgIHZvaWQgc2V0TWFza1NpemUo
TGVuZ3RoU2l6ZSBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbWFzay5tX3Np
emVMZW5ndGgsIGwpIH0KKyAgICB2b2lkIHNldE1hc2tYUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV94UG9zaXRpb24sIGxlbmd0
aCk7IH0KKyAgICB2b2lkIHNldE1hc2tZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX21hc2subV95UG9zaXRpb24sIGxlbmd0aCk7IH0KKyAg
ICB2b2lkIHNldE1hc2tTaXplKExlbmd0aFNpemUgcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX21hc2subV9zaXplTGVuZ3RoLCBzKTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXJD
b2xsYXBzZShFQm9yZGVyQ29sbGFwc2UgY29sbGFwc2UpIHsgaW5oZXJpdGVkX2ZsYWdzLl9ib3Jk
ZXJfY29sbGFwc2UgPSBjb2xsYXBzZTsgfQogICAgIHZvaWQgc2V0SG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcoc2hvcnQpOwpAQCAtMTE3MSwyMCArMTE3MSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRMaXN0U3R5bGVJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+KTsKICAgICB2b2lkIHNldExp
c3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9mbGFncy5f
bGlzdF9zdHlsZV9wb3NpdGlvbiA9IHY7IH0KIAotICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNF
VF9WQVIoc3Vycm91bmQsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSkgfQotICAgIHZvaWQgc2V0
TWFyZ2luVG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5tX3RvcCwgdikg
fQotICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQs
IG1hcmdpbi5tX2JvdHRvbSwgdikgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggdikg
eyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9sZWZ0LCB2KSB9Ci0gICAgdm9pZCBzZXRNYXJn
aW5SaWdodChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4ubV9yaWdodCwgdikg
fQorICAgIHZvaWQgcmVzZXRNYXJnaW4oKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbiwgTGVu
Z3RoQm94KEZpeGVkKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblRvcChMZW5ndGggdikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBtYXJnaW4ubV90b3AsIHYpOyB9CisgICAgdm9pZCBzZXRNYXJnaW5Cb3R0
b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fYm90dG9tLCB2KTsgfQor
ICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJn
aW4ubV9sZWZ0LCB2KTsgfQorICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgbWFyZ2luLm1fcmlnaHQsIHYpOyB9CiAgICAgdm9pZCBzZXRNYXJnaW5T
dGFydChMZW5ndGgpOwogICAgIHZvaWQgc2V0TWFyZ2luRW5kKExlbmd0aCk7CiAKLSAgICB2b2lk
IHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgTGVuZ3RoQm94KEF1
dG8pKSB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm94KGNvbnN0IExlbmd0aEJveCYgYikgeyBTRVRf
VkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBiKSB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0
aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV90b3AsIHYpIH0KLSAgICB2b2lkIHNl
dFBhZGRpbmdCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX2Jv
dHRvbSwgdikgfQotICAgIHZvaWQgc2V0UGFkZGluZ0xlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgcGFkZGluZy5tX2xlZnQsIHYpIH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdodChM
ZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLm1fcmlnaHQsIHYpIH0KKyAgICB2
b2lkIHJlc2V0UGFkZGluZygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgTGVuZ3RoQm94
KEF1dG8pKTsgfQorICAgIHZvaWQgc2V0UGFkZGluZ0JveChjb25zdCBMZW5ndGhCb3gmIGIpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgYik7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdUb3Ao
TGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy5tX3RvcCwgdik7IH0KKyAgICB2
b2lkIHNldFBhZGRpbmdCb3R0b20oTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
Zy5tX2JvdHRvbSwgdik7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdMZWZ0KExlbmd0aCB2KSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9sZWZ0LCB2KTsgfQorICAgIHZvaWQgc2V0UGFkZGlu
Z1JpZ2h0KExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubV9yaWdodCwgdik7
IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29yKEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1
cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+LCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCA9IEludFBvaW50KCkpOwpAQCAtMTE5OCwxNCAr
MTE5OCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmludENvbG9yQWRqdXN0KFByaW50Q29s
b3JBZGp1c3QgdmFsdWUpIHsgaW5oZXJpdGVkX2ZsYWdzLm1fcHJpbnRDb2xvckFkanVzdCA9IHZh
bHVlOyB9CiAKICAgICBib29sIGhhc0F1dG9aSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2JveC0+
aGFzQXV0b1pJbmRleCgpOyB9Ci0gICAgdm9pZCBzZXRIYXNBdXRvWkluZGV4KCkgeyBTRVRfVkFS
KG1fYm94LCBtX2hhc0F1dG9aSW5kZXgsIHRydWUpOyBTRVRfVkFSKG1fYm94LCBtX3pJbmRleCwg
MCkgfQorICAgIHZvaWQgc2V0SGFzQXV0b1pJbmRleCgpIHsgU0VUX1ZBUihtX2JveCwgbV9oYXNB
dXRvWkluZGV4LCB0cnVlKTsgU0VUX1ZBUihtX2JveCwgbV96SW5kZXgsIDApOyB9CiAgICAgaW50
IHpJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94LT56SW5kZXgoKTsgfQotICAgIHZvaWQgc2V0
WkluZGV4KGludCB2KSB7IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgZmFsc2UpOyBT
RVRfVkFSKG1fYm94LCBtX3pJbmRleCwgdikgfQorICAgIHZvaWQgc2V0WkluZGV4KGludCB2KSB7
IFNFVF9WQVIobV9ib3gsIG1faGFzQXV0b1pJbmRleCwgZmFsc2UpOyBTRVRfVkFSKG1fYm94LCBt
X3pJbmRleCwgdik7IH0KIAotICAgIHZvaWQgc2V0SGFzQXV0b1dpZG93cygpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvV2lkb3dzLCB0cnVlKTsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgd2lkb3dzLCBpbml0aWFsV2lkb3dzKCkpIH0KKyAgICB2b2lkIHNldEhhc0F1
dG9XaWRvd3MoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b1dpZG93cywg
dHJ1ZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHdpZG93cywgaW5pdGlhbFdpZG93cygp
KTsgfQogICAgIHZvaWQgc2V0V2lkb3dzKHNob3J0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgbV9oYXNBdXRvV2lkb3dzLCBmYWxzZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHdpZG93cywgdyk7IH0KIAotICAgIHZvaWQgc2V0SGFzQXV0b09ycGhhbnMoKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIG1faGFzQXV0b09ycGhhbnMsIHRydWUpOyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCBvcnBoYW5zLCBpbml0aWFsT3JwaGFucygpKSB9CisgICAgdm9pZCBzZXRI
YXNBdXRvT3JwaGFucygpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3Jw
aGFucywgdHJ1ZSk7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG9ycGhhbnMsIGluaXRpYWxP
cnBoYW5zKCkpOyB9CiAgICAgdm9pZCBzZXRPcnBoYW5zKHNob3J0IG8pIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgbV9oYXNBdXRvT3JwaGFucywgZmFsc2UpOyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCBvcnBoYW5zLCBvKTsgfQogCiAgICAgLy8gRm9yIHZhbGlkIHZhbHVlcyBvZiBw
YWdlLWJyZWFrLWluc2lkZSBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvcGFnZS5odG1s
I3BhZ2UtYnJlYWstcHJvcHMKQEAgLTEyMTQsMTIgKzEyMTQsMTIgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UGFnZUJyZWFrQWZ0ZXIoRVBhZ2VCcmVhayBiKSB7IG5vbmluaGVyaXRlZF9mbGFncy5f
cGFnZV9icmVha19hZnRlciA9IGI7IH0KIAogICAgIC8vIENTUzMgU2V0dGVycwotICAgIHZvaWQg
c2V0T3V0bGluZU9mZnNldChpbnQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5l
Lm1fb2Zmc2V0LCB2KSB9CisgICAgdm9pZCBzZXRPdXRsaW5lT2Zmc2V0KGludCB2KSB7IFNFVF9W
QVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV9vZmZzZXQsIHYpOyB9CiAgICAgdm9pZCBzZXRU
ZXh0U2hhZG93KFBhc3NPd25QdHI8U2hhZG93RGF0YT4sIGJvb2wgYWRkID0gZmFsc2UpOwotICAg
IHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYykgfQotICAgIHZvaWQgc2V0VGV4dFN0cm9r
ZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZVdp
ZHRoLCB3KSB9Ci0gICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIGMpIH0KLSAgICB2b2lkIHNl
dENvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcGFjZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCBjb2xvclNwYWNlLCBzcGFjZSkgfQorICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0
IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwg
Yyk7IH0KKyAgICB2b2lkIHNldFRleHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VXaWR0aCwgdyk7IH0KKyAgICB2b2lkIHNldFRleHRG
aWxsQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4
dEZpbGxDb2xvciwgYyk7IH0KKyAgICB2b2lkIHNldENvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcGFj
ZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBjb2xvclNwYWNlLCBzcGFjZSk7IH0KICAg
ICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4oZiwg
MCwgMSk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG9wYWNpdHksIHYpOyB9CiAgICAg
dm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9hcHBlYXJhbmNlLCBhKTsgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2Yg
Ym94LWFsaWduIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtZmxleGJveC0y
MDA5MDcyMy8jYWxpZ25tZW50CkBAIC0xMjg3LDcgKzEyODcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX0JPUkRFUlZBTFVFX0NP
TE9SKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3J1bGUsIGMp
OyB9CiAgICAgdm9pZCBzZXRDb2x1bW5SdWxlU3R5bGUoRUJvcmRlclN0eWxlIGIpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9ydWxlLm1fc3R5
bGUsIGIpOyB9CiAgICAgdm9pZCBzZXRDb2x1bW5SdWxlV2lkdGgodW5zaWduZWQgc2hvcnQgdykg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3J1
bGUubV93aWR0aCwgdyk7IH0KLSAgICB2b2lkIHJlc2V0Q29sdW1uUnVsZSgpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbCwgbV9ydWxlLCBCb3JkZXJW
YWx1ZSgpKSB9CisgICAgdm9pZCByZXNldENvbHVtblJ1bGUoKSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fcnVsZSwgQm9yZGVyVmFsdWUoKSk7
IH0KICAgICB2b2lkIHNldENvbHVtblNwYW4oQ29sdW1uU3BhbiBjb2x1bW5TcGFuKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fY29sdW1uU3Bh
biwgY29sdW1uU3Bhbik7IH0KICAgICB2b2lkIHNldENvbHVtbkJyZWFrQmVmb3JlKEVQYWdlQnJl
YWsgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29s
LCBtX2JyZWFrQmVmb3JlLCBwKTsgfQogICAgIC8vIEZvciB2YWxpZCB2YWx1ZXMgb2YgY29sdW1u
LWJyZWFrLWluc2lkZSBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tdWx0aWNvbC8jYnJl
YWstYmVmb3JlLWJyZWFrLWFmdGVyLWJyZWFrLWluc2lkZQpAQCAtMTMwMyw3ICsxMzAzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9CiAg
ICAgdm9pZCBzZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBz
cGVhaywgcyk7IH0KICAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KLSAgICB2b2lk
IHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHRleHRFbXBoYXNpc0NvbG9yLCBjKSB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFz
aXNDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
RW1waGFzaXNDb2xvciwgYyk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVt
cGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRFbXBoYXNp
c0ZpbGwsIGZpbGwpOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNp
c01hcmsgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJr
LCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lz
Q3VzdG9tTWFyaywgbWFyayk7IH0KQEAgLTE2ODksMTYgKzE2ODksMTYgQEAgcHVibGljOgogI2Vu
ZGlmCiBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihjb25zdCBDb2xvciYp
OwotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoY29uc3Qg
Q29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0Jv
cmRlckxlZnRDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENv
bG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdikgfQotICAgIHZvaWQgc2V0
VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IsIHYpIH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpIH0KLSAg
ICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wsIG1fdmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEVt
cGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExp
bmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpOyB9CisgICAgdm9p
ZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KTsg
fQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdo
dENvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRl
clRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpOyB9CisgICAgdm9pZCBzZXRWaXNp
dGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1Rl
eHRFbXBoYXNpc0NvbG9yLCB2KTsgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENv
bG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvciwgdik7IH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0
ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KTsgfQogCiAgICAgdm9pZCBpbmhlcml0VW5pY29kZUJp
ZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnQpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl91
bmljb2RlQmlkaSA9IHBhcmVudC0+bm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaTsgfQog
ICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0
b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxl
ZnQpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>