<?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>187879</bug_id>
          
          <creation_ts>2018-07-20 21:23:57 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add verification for inline text runs.</short_desc>
          <delta_ts>2018-07-21 11:50:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1444018</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-07-20 21:23:57 -0700</bug_when>
    <thetext>against simple and complex runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444019</commentid>
    <comment_count>1</comment_count>
      <attachid>345499</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-07-20 21:26:01 -0700</bug_when>
    <thetext>Created attachment 345499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444020</commentid>
    <comment_count>2</comment_count>
      <attachid>345500</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-07-20 21:33:09 -0700</bug_when>
    <thetext>Created attachment 345500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444021</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-20 21:36:20 -0700</bug_when>
    <thetext>Attachment 345500 did not pass style-queue:


ERROR: Source/WebCore/layout/inlineformatting/InlineFormattingState.h:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444022</commentid>
    <comment_count>4</comment_count>
      <attachid>345501</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-07-20 21:37:58 -0700</bug_when>
    <thetext>Created attachment 345501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444023</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-07-20 21:39:22 -0700</bug_when>
    <thetext>Attachment 345501 did not pass style-queue:


ERROR: Source/WebCore/layout/inlineformatting/InlineFormattingState.h:50:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444024</commentid>
    <comment_count>6</comment_count>
      <attachid>345502</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-07-20 21:40:30 -0700</bug_when>
    <thetext>Created attachment 345502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444069</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-07-21 11:49:29 -0700</bug_when>
    <thetext>Committed r234085: &lt;https://trac.webkit.org/changeset/234085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444070</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-21 11:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/42467004&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345499</attachid>
            <date>2018-07-20 21:26:01 -0700</date>
            <delta_ts>2018-07-20 21:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>13455</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NzYzOTRjNDc0NS4uM2E2ZWMxZGU4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wNy0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIGxheW91dCBydW4gdmVyaWZpY2F0aW9uLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3ODc5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsYXlvdXQvVmVyaWZp
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdT
aW1wbGVMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
Om91dHB1dE1pc21hdGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9u
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojp2ZXJpZnlBbmRPdXRwdXRTdWJ0
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZv
cm1hdGlvbklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQgY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmFkZExheW91dFJ1bnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmxheW91dFJ1
bnMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpzaG93TGF5b3V0VHJlZSk6CisKIDIwMTgtMDctMjAgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBEbyBub3QgdXNl
IHZpcnR1YWwgbWV0aG9kcyB0byBjb25zdHJ1Y3QgZmxvYXRpbmcvZm9ybWF0dGluZyBzdGF0ZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCmluZGV4IDZiYWI1ODE0Y2FjLi5j
N2ViNzcwMzY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2lu
Y2x1ZGUgIkRpc3BsYXlCb3guaCIKKyNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
TGF5b3V0VHJlZUJ1aWxkZXIuaCIKQEAgLTM5LDcgKzQwLDc1IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdC
b3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29u
dGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlv
bklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENvbnRhaW5l
ciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCit7CisgICAgYXV0byogbGluZUxheW91dERhdGEgPSBi
bG9ja0Zsb3cuc2ltcGxlTGluZUxheW91dCgpOworICAgIGlmICghbGluZUxheW91dERhdGEpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGNvbnN0X2Nhc3Q8TGF5b3V0
Q29udGV4dCY+KGxheW91dENvbnRleHQpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlubGlu
ZUZvcm1hdHRpbmdSb290KTsKKyAgICBBU1NFUlQoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihp
bmxpbmVGb3JtYXR0aW5nU3RhdGUpKTsKKyAgICBhdXRvJiBsYXlvdXRSdW5zID0gZG93bmNhc3Q8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxheW91dFJ1bnMo
KTsKKworICAgIGlmIChsYXlvdXRSdW5zLnNpemUoKSAhPSBsaW5lTGF5b3V0RGF0YS0+cnVuQ291
bnQoKSkgeworICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nIG51bWJlciBvZiBydW5zOiBz
aW1wbGUgcnVucygiIDw8IGxpbmVMYXlvdXREYXRhLT5ydW5Db3VudCgpIDw8ICIpIGxheW91dCBy
dW5zKCIgPDwgbGF5b3V0UnVucy5zaXplKCkgPDwgIikiOworICAgICAgICBzdHJlYW0ubmV4dExp
bmUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYXV0byBtaXNtYXRjaGVk
ID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVMYXlvdXREYXRhLT5y
dW5Db3VudCgpOyArK2kpIHsKKyAgICAgICAgYXV0byYgc2ltcGxlUnVuID0gbGluZUxheW91dERh
dGEtPnJ1bkF0KGkpOworICAgICAgICBhdXRvJiBsYXlvdXRSdW4gPSBsYXlvdXRSdW5zW2ldOwor
CisgICAgICAgIGlmIChzaW1wbGVSdW4uc3RhcnQgPT0gbGF5b3V0UnVuLnN0YXJ0KCkgJiYgc2lt
cGxlUnVuLmVuZCA9PSBsYXlvdXRSdW4uZW5kKCkgJiYgc2ltcGxlUnVuLmxvZ2ljYWxMZWZ0ID09
IGxheW91dFJ1bi5sZWZ0KCkgJiYgc2ltcGxlUnVuLmxvZ2ljYWxSaWdodCA9PSBsYXlvdXRSdW4u
cmlnaHQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHN0cmVhbSA8PCAiTWlz
bWF0Y2hpbmc6IHNpbXBsZSBydW4oIiA8PCBzaW1wbGVSdW4uc3RhcnQgPDwgIiwgIiA8PCBzaW1w
bGVSdW4uZW5kIDw8ICIpICgiIDw8IHNpbXBsZVJ1bi5sb2dpY2FsTGVmdCA8PCAiLCAiIDw8IHNp
bXBsZVJ1bi5sb2dpY2FsUmlnaHQgPDwgIikgbGF5b3V0IHJ1bigiIDw8IGxheW91dFJ1bi5zdGFy
dCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLmVuZCgpIDw8ICIpICgiIDw8IGxheW91dFJ1bi5sZWZ0
KCkgPDwgIiwgIiA8PCBsYXlvdXRSdW4ucmlnaHQoKSA8PCAiKSI7CisgICAgICAgIHN0cmVhbS5u
ZXh0TGluZSgpOworICAgICAgICBtaXNtYXRjaGVkID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IG1pc21hdGNoZWQ7Cit9CisKK3N0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29tcGxleExp
bmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29u
dGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNv
bnN0IENvbnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCit7CisgICAgYXV0byYgaW5saW5l
Rm9ybWF0dGluZ1N0YXRlID0gY29uc3RfY2FzdDxMYXlvdXRDb250ZXh0Jj4obGF5b3V0Q29udGV4
dCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOworICAg
IEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkp
OworICAgIGF1dG8mIGxheW91dFJ1bnMgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+
KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkubGF5b3V0UnVucygpOworCisgICAgYXV0byBtaXNtYXRj
aGVkID0gZmFsc2U7CisgICAgdW5zaWduZWQgbGF5b3V0UnVuSW5kZXggPSAwOworICAgIHVuc2ln
bmVkIGlubGluZUluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8qIHJvb3RMaW5lID0gYmxvY2tGbG93
LmZpcnN0Um9vdEJveCgpOyByb290TGluZTsgcm9vdExpbmUgPSByb290TGluZS0+bmV4dFJvb3RC
b3goKSkgeworICAgICAgICBmb3IgKGF1dG8qIGxpbmVCb3ggPSByb290TGluZS0+Zmlyc3RDaGls
ZCgpOyBsaW5lQm94OyBsaW5lQm94ID0gbGluZUJveC0+bmV4dE9uTGluZSgpKSB7CisgICAgICAg
ICAgICBpZiAoIWlzPElubGluZVRleHRCb3g+KGxpbmVCb3gpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAobGF5b3V0UnVuSW5kZXggPj0gbGF5b3V0UnVucy5z
aXplKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogPHNwYW4+Zm9vYmFyPC9zcGFuPmZv
b2JhciBnZW5lcmF0ZXMgMiBpbmxpbmUgdGV4dCBib3hlcyB3aGlsZSB3ZSBvbmx5IGdlbmVyYXRl
IG9uZSBsYXlvdXQgcnVuICh3aGljaCBpcyBtdWNoIGJldHRlciwgc2luY2UgaXQgZW5hYmxlcyB1
cyB0byBkbyBrZXJuaW5nIGFjcm9zcyBpbmxpbmUgZWxlbWVudHMpLgorICAgICAgICAgICAgICAg
IHN0cmVhbSA8PCAiTWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IGxheW91dCBydW5zKCIgPDwg
bGF5b3V0UnVucy5zaXplKCkgPDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGlu
ZSgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBhdXRvJiBsYXlvdXRSdW4gPSBsYXlvdXRSdW5zW2xheW91dFJ1bkluZGV4XTsKKyAg
ICAgICAgICAgIGF1dG8mIGlubGluZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94Pigq
bGluZUJveCk7CisgICAgICAgICAgICBpZiAoaW5saW5lVGV4dEJveC5zdGFydCgpID09IGxheW91
dFJ1bi5zdGFydCgpICYmIGlubGluZVRleHRCb3guZW5kKCkgPT0gbGF5b3V0UnVuLmVuZCgpICYm
IGlubGluZVRleHRCb3gubG9naWNhbExlZnQoKSA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIGlubGlu
ZVRleHRCb3gubG9naWNhbFJpZ2h0KCkgPT0gbGF5b3V0UnVuLnJpZ2h0KCkpIHsKKyAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgaW5saW5lVGV4
dEJveC5zdGFydCgpIDw8ICIsICIgPDwgaW5saW5lVGV4dEJveC5lbmQoKSA8PCAiKSAoIiA8PCBp
bmxpbmVUZXh0Qm94LmxvZ2ljYWxMZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2lj
YWxSaWdodCgpIDw8ICIpIGxheW91dCBydW4oIiA8PCBsYXlvdXRSdW4uc3RhcnQoKSA8PCAiLCAi
IDw8IGxheW91dFJ1bi5lbmQoKSA8PCAiKSAoIiA8PCBsYXlvdXRSdW4ubGVmdCgpIDw8ICIsICIg
PDwgbGF5b3V0UnVuLnJpZ2h0KCkgPDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0
TGluZSgpOworICAgICAgICAgICAgICAgIG1pc21hdGNoZWQgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKytsYXlvdXRSdW5JbmRleDsKKyAgICAgICAgICAgICsraW5saW5lSW5k
ZXg7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1pc21hdGNoZWQ7Cit9CisKK3N0YXRp
YyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRT
dHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVy
Qm94JiByZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYm9vbCBmaXJzdE1p
c21hdGNoaW5nUmVjdCA9IHRydWU7CiAgICAgYXV0byBvdXRwdXRSZWN0ID0gWyZdIChjb25zdCBT
dHJpbmcmIHByZWZpeCwgY29uc3QgTGF5b3V0UmVjdCYgcmVuZGVyZXJSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBsYXlvdXRSZWN0KSB7CkBAIC05Miw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBvdXRw
dXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBMYQogCiBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKFRleHRTdHJlYW0m
IHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udGV4dCwgY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgYXV0byBtaXNtdGFjaGluZ0dl
b21ldHJ5ID0gb3V0cHV0TWlzbWF0Y2hpbmdCb3hJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwg
Y29udGV4dCwgcmVuZGVyZXIsIGxheW91dEJveCk7CisgICAgYXV0byBtaXNtdGFjaGluZ0dlb21l
dHJ5ID0gb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQoc3RyZWFt
LCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKIAogICAgIGlmICghaXM8Q29udGFpbmVy
PihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gbWlzbXRhY2hpbmdHZW9tZXRyeTsKQEAgLTEw
Nyw4ICsxNzYsMTQgQEAgc3RhdGljIGJvb2wgdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShUZXh0U3Ry
ZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dENvbnRleHQmIGNvbnQKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRyZWVHZW9tZXRy
eSA9IHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3duY2FzdDxSZW5k
ZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKLSAgICAgICAgbWlzbXRhY2hpbmdH
ZW9tZXRyeSB8PSBtaXNtYXRjaGluZ1N1YnRyZWVHZW9tZXRyeTsKKyAgICAgICAgaWYgKGlzPFJl
bmRlckJsb2NrRmxvdz4oKmNoaWxkUmVuZGVyZXIpICYmIGNoaWxkUmVuZGVyZXItPmNoaWxkcmVu
SW5saW5lKCkgJiYgY2hpbGRCb3gtPmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
KSkgeworICAgICAgICAgICAgYXV0byYgYmxvY2tGbG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tG
bG93PigqY2hpbGRSZW5kZXJlcik7CisgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9
IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkQm94KTsKKyAgICAgICAgICAgIG1pc210YWNoaW5n
R2VvbWV0cnkgfD0gYmxvY2tGbG93LmxpbmVMYXlvdXRQYXRoKCkgPT0gUmVuZGVyQmxvY2tGbG93
OjpTaW1wbGVMaW5lc1BhdGggPyBvdXRwdXRNaXNtYXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlv
bklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxvY2tGbG93LCBmb3JtYXR0aW5nUm9vdCkgOiBv
dXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChzdHJlYW0sIGNv
bnRleHQsIGJsb2NrRmxvdywgZm9ybWF0dGluZ1Jvb3QpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRyZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1
dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRl
cmVyKSwgKmNoaWxkQm94KTsKKyAgICAgICAgICAgIG1pc210YWNoaW5nR2VvbWV0cnkgfD0gbWlz
bWF0Y2hpbmdTdWJ0cmVlR2VvbWV0cnk7CisgICAgICAgIH0KIAogICAgICAgICBjaGlsZEJveCA9
IGNoaWxkQm94LT5uZXh0U2libGluZygpOwogICAgICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRS
ZW5kZXJlci0+bmV4dFNpYmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAppbmRleCAxOTI4ZmNiMWNkYi4uZTNmNmFhMjNmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb28K
IHsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdTdGF0ZSYpIGNvbnN0Cit2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9y
bWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFp
czxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTkwLDExICs5MCwxNCBA
QCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YQogICAgIGF1dG8gbGluZUxlZnQgPSBmb3JtYXR0aW5n
Um9vdERpc3BsYXlCb3guY29udGVudEJveExlZnQoKTsKICAgICBhdXRvIGxpbmVSaWdodCA9IGZv
cm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50Qm94UmlnaHQoKTsKIAotICAgIGF1dG8gdGV4
dFJ1bnMgPSB0ZXh0Q29udGVudFByb3ZpZGVyLnRleHRSdW5zKCk7CiAgICAgU2ltcGxlTGluZUJy
ZWFrZXI6OkxpbmVDb25zdHJhaW50TGlzdCBjb25zdHJhaW50czsKICAgICBjb25zdHJhaW50cy5h
cHBlbmQoeyB7IH0sIGxpbmVMZWZ0LCBsaW5lUmlnaHQgfSk7Ci0gICAgU2ltcGxlTGluZUJyZWFr
ZXIgc2ltcGxlTGluZUJyZWFrZXIodGV4dFJ1bnMsIHRleHRDb250ZW50UHJvdmlkZXIsIFdURk1v
dmUoY29uc3RyYWludHMpLCBmb3JtYXR0aW5nUm9vdC5zdHlsZSgpKTsKLSAgICBhdXRvIGxheW91
dFJ1bnMgPSBzaW1wbGVMaW5lQnJlYWtlci5ydW5zKCk7CisgICAgYXV0byB0ZXh0UnVuTGlzdCA9
IHRleHRDb250ZW50UHJvdmlkZXIudGV4dFJ1bnMoKTsKKyAgICBTaW1wbGVMaW5lQnJlYWtlciBz
aW1wbGVMaW5lQnJlYWtlcih0ZXh0UnVuTGlzdCwgdGV4dENvbnRlbnRQcm92aWRlciwgV1RGTW92
ZShjb25zdHJhaW50cyksIGZvcm1hdHRpbmdSb290LnN0eWxlKCkpOworCisgICAgLy8gU2luY2Ug
d2UgZG9uJ3QgeWV0IGhhdmUgYSBkaXNwbGF5IHRyZWUgY29udGV4dCBmb3IgaW5saW5lIGJveGVz
LCBsZXQncyBqdXN0IGNhY2hlIHRoZSBydW5zIG9uIHRoZSBzdGF0ZSBzbyB0aGF0IHRoZXkgY2Fu
IGJlIHZlcmlmaWVkIGFnYWluc3QgdGhlIHNsbC9pbmxpbmUgdHJlZSBydW5zIGxhdGVyLgorICAg
IEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkp
OworICAgIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0
YXRlKS5hZGRMYXlvdXRSdW5zKHNpbXBsZUxpbmVCcmVha2VyLnJ1bnMoKSk7CiAKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4g
aW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBsYXlvdXQgY29udGV4dCgiIDw8ICZsYXlvdXRD
b250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggOTk3ZDMzY2Y2OGUuLmE0YjgyNDJjODc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRl
LmgiCisjaW5jbHVkZSAiUnVucy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNiArNDEsMTMgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGlu
Z1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9y
bWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRlPiYmLCBjb25zdCBMYXlvdXRDb250ZXh0Jik7
CiAgICAgdmlydHVhbCB+SW5saW5lRm9ybWF0dGluZ1N0YXRlKCk7CisKKyAgICAvLyBUaGlzIGlz
IGp1c3QgdGVtcG9yYXJ5IHVudGlsIGFmdGVyIHdlIGNvbnN0cnVjdGVkIGEgZGlzcGxheSB0cmVl
IGNvbnRleHQgZm9yIGlubGluZXMuCisgICAgdm9pZCBhZGRMYXlvdXRSdW5zKFZlY3RvcjxMYXlv
dXRSdW4+JiYgbGF5b3V0UnVucykgeyBtX2xheW91dFJ1bnMgPSBXVEZNb3ZlKGxheW91dFJ1bnMp
OyB9CisgICAgY29uc3QgVmVjdG9yPExheW91dFJ1bj4mIGxheW91dFJ1bnMoKSBjb25zdCB7IHJl
dHVybiBtX2xheW91dFJ1bnM7IH0KKworcHJpdmF0ZToKKyAgICAgICBWZWN0b3I8TGF5b3V0UnVu
PiBtX2xheW91dFJ1bnM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggZDMzMmFkM2Q0MTUuLjcw
MTBhMTY2Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBUcmVlQnVp
bGRlcjo6Y3JlYXRlU3ViVHJlZShjb25zdCBSZW5kZXJFbGVtZW50JiByb290UmVuZGVyZXIsIENv
bnRhaW5lciYgcm8KIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLXN0YXRpYyB2b2lk
IG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBjb25zdCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gsIHVuc2lnbmVkIGRlcHRoKQorc3RhdGlj
IHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlv
dXRCb3gsIGNvbnN0IERpc3BsYXk6OkJveCogZGlzcGxheUJveCwgdW5zaWduZWQgZGVwdGgpCiB7
CiAgICAgdW5zaWduZWQgcHJpbnRlZENoYXJhY3RlcnMgPSAwOwogICAgIHdoaWxlICgrK3ByaW50
ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICogMikKQEAgLTEzNCw3ICsxMzQsOCBAQCBzdGF0aWMgdm9p
ZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgRGlzcAogICAgICAgICBzdHJlYW0gPDwgImJsb2NrIGNvbnRhaW5lciI7CiAgICAg
fSBlbHNlCiAgICAgICAgIHN0cmVhbSA8PCAiYm94IjsKLSAgICBzdHJlYW0gPDwgIiBhdCBbIiA8
PCBkaXNwbGF5Qm94LmxlZnQoKSA8PCAiICIgPDwgZGlzcGxheUJveC50b3AoKSA8PCAiXSBzaXpl
IFsiIDw8IGRpc3BsYXlCb3gud2lkdGgoKSA8PCAiICIgPDwgZGlzcGxheUJveC5oZWlnaHQoKSA8
PCAiXSI7CisgICAgaWYgKGRpc3BsYXlCb3gpCisgICAgICAgIHN0cmVhbSA8PCAiIGF0IFsiIDw8
IGRpc3BsYXlCb3gtPmxlZnQoKSA8PCAiICIgPDwgZGlzcGxheUJveC0+dG9wKCkgPDwgIl0gc2l6
ZSBbIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8ICIgIiA8PCBkaXNwbGF5Qm94LT5oZWlnaHQo
KSA8PCAiXSI7CiAgICAgc3RyZWFtIDw8ICIgb2JqZWN0IFsiIDw8ICZsYXlvdXRCb3ggPDwgIl0i
OwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CkBAIC0xNDMsNyArMTQ0LDcgQEAgc3RhdGljIHZv
aWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IERpc3AKIHN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBDb250YWlu
ZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQogewogICAgIGZvciAoYXV0byYgY2hp
bGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWluZXIpKSB7Ci0gICAgICAgIG91dHB1
dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNoaWxkKSwgZGVwdGgpOworICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBj
aGlsZCwgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgp
OwogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihjaGlsZCkpCiAgICAgICAgICAgICBvdXRwdXRM
YXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgZG93bmNhc3Q8Q29udGFpbmVyPihjaGls
ZCksIGRlcHRoICsgMSk7CiAgICAgfQpAQCAtMTUyLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIG91
dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0
cmVhbSYgc3RyCiB2b2lkIFRyZWVCdWlsZGVyOjpzaG93TGF5b3V0VHJlZShjb25zdCBMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBDb250YWluZXImIGxheW91dEJveCkKIHsKICAg
ICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBU
ZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwotICAgIG91dHB1dExheW91dEJv
eChzdHJlYW0sIGxheW91dEJveCwgKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3gpLCAwKTsKKyAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBsYXlvdXRCb3gs
IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLCAwKTsKICAg
ICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsK
ICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgpKTsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345500</attachid>
            <date>2018-07-20 21:33:09 -0700</date>
            <delta_ts>2018-07-20 21:37:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>13479</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NzYzOTRjNDc0NS4uMDYzYmM2ZmE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wNy0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIHZlcmlmaWNhdGlvbiBmb3IgaW5saW5lIHRleHQgcnVu
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1p
c21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJ
bmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6dmVyaWZ5QW5k
T3V0cHV0U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNo
aW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRMYXlv
dXRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpsYXlvdXRSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dFRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUpOgorCiAyMDE4
LTA3LTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10g
RG8gbm90IHVzZSB2aXJ0dWFsIG1ldGhvZHMgdG8gY29uc3RydWN0IGZsb2F0aW5nL2Zvcm1hdHRp
bmcgc3RhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA2YmFi
NTgxNGNhYy4uZTIxMWE3ZGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9W
ZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgog
I2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCkBAIC0zOSw3ICs0MCw3MyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBib29sIG91dHB1dE1p
c21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb25z
dCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1dG8qIGxpbmVMYXlv
dXREYXRhID0gYmxvY2tGbG93LnNpbXBsZUxpbmVMYXlvdXQoKTsKKyAgICBpZiAoIWxpbmVMYXlv
dXREYXRhKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBjb25zdF9j
YXN0PExheW91dENvbnRleHQmPihsYXlvdXRDb250ZXh0KS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CisgICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKSk7CisgICAgYXV0byYgbGF5b3V0UnVucyA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5s
YXlvdXRSdW5zKCk7CisKKyAgICBpZiAobGF5b3V0UnVucy5zaXplKCkgIT0gbGluZUxheW91dERh
dGEtPnJ1bkNvdW50KCkpIHsKKyAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZyBudW1iZXIg
b2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSA8PCAi
KSBsYXlvdXQgcnVucygiIDw8IGxheW91dFJ1bnMuc2l6ZSgpIDw8ICIpIjsKKyAgICAgICAgc3Ry
ZWFtLm5leHRMaW5lKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGF1dG8g
bWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lTGF5
b3V0RGF0YS0+cnVuQ291bnQoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHNpbXBsZVJ1biA9IGxp
bmVMYXlvdXREYXRhLT5ydW5BdChpKTsKKyAgICAgICAgYXV0byYgbGF5b3V0UnVuID0gbGF5b3V0
UnVuc1tpXTsKKworICAgICAgICBpZiAoc2ltcGxlUnVuLnN0YXJ0ID09IGxheW91dFJ1bi5zdGFy
dCgpICYmIHNpbXBsZVJ1bi5lbmQgPT0gbGF5b3V0UnVuLmVuZCgpICYmIHNpbXBsZVJ1bi5sb2dp
Y2FsTGVmdCA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPT0g
bGF5b3V0UnVuLnJpZ2h0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzdHJl
YW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIGxheW91dCBydW4oIiA8PCBsYXlv
dXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8PCAiKSAoIiA8PCBsYXlv
dXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkgPDwgIikiOworICAgICAg
ICBzdHJlYW0ubmV4dExpbmUoKTsKKyAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CisgICAgfQor
ICAgIHJldHVybiBtaXNtYXRjaGVkOworfQorCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGlu
Z0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxv
Y2tGbG93LCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1
dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGNvbnN0X2Nhc3Q8TGF5b3V0Q29udGV4dCY+KGxh
eW91dENvbnRleHQpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdS
b290KTsKKyAgICBBU1NFUlQoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0
aW5nU3RhdGUpKTsKKyAgICBhdXRvJiBsYXlvdXRSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxheW91dFJ1bnMoKTsKKworICAgIGF1
dG8gbWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxheW91dFJ1bkluZGV4ID0gMDsK
KyAgICBmb3IgKGF1dG8qIHJvb3RMaW5lID0gYmxvY2tGbG93LmZpcnN0Um9vdEJveCgpOyByb290
TGluZTsgcm9vdExpbmUgPSByb290TGluZS0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmb3Ig
KGF1dG8qIGxpbmVCb3ggPSByb290TGluZS0+Zmlyc3RDaGlsZCgpOyBsaW5lQm94OyBsaW5lQm94
ID0gbGluZUJveC0+bmV4dE9uTGluZSgpKSB7CisgICAgICAgICAgICBpZiAoIWlzPElubGluZVRl
eHRCb3g+KGxpbmVCb3gpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpZiAobGF5b3V0UnVuSW5kZXggPj0gbGF5b3V0UnVucy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogPHNwYW4+Zm9vYmFyPC9zcGFuPmZvb2JhciBnZW5lcmF0ZXMgMiBpbmxp
bmUgdGV4dCBib3hlcyB3aGlsZSB3ZSBvbmx5IGdlbmVyYXRlIG9uZSBsYXlvdXQgcnVuICh3aGlj
aCBpcyBtdWNoIGJldHRlciwgc2luY2UgaXQgZW5hYmxlcyB1cyB0byBkbyBrZXJuaW5nIGFjcm9z
cyBpbmxpbmUgZWxlbWVudHMpLgorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hp
bmcgbnVtYmVyIG9mIHJ1bnM6IGxheW91dCBydW5zKCIgPDwgbGF5b3V0UnVucy5zaXplKCkgPDwg
IikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvJiBsYXlvdXRS
dW4gPSBsYXlvdXRSdW5zW2xheW91dFJ1bkluZGV4XTsKKyAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbGluZUJveCk7CisgICAgICAgICAg
ICBpZiAoaW5saW5lVGV4dEJveC5zdGFydCgpID09IGxheW91dFJ1bi5zdGFydCgpICYmIGlubGlu
ZVRleHRCb3guZW5kKCkgPT0gbGF5b3V0UnVuLmVuZCgpICYmIGlubGluZVRleHRCb3gubG9naWNh
bExlZnQoKSA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIGlubGluZVRleHRCb3gubG9naWNhbFJpZ2h0
KCkgPT0gbGF5b3V0UnVuLnJpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIk1p
c21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgaW5saW5lVGV4dEJveC5zdGFydCgpIDw8ICIsICIg
PDwgaW5saW5lVGV4dEJveC5lbmQoKSA8PCAiKSAoIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxM
ZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxSaWdodCgpIDw8ICIpIGxheW91
dCBydW4oIiA8PCBsYXlvdXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8
PCAiKSAoIiA8PCBsYXlvdXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkg
PDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAg
ICAgIG1pc21hdGNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsYXlv
dXRSdW5JbmRleDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWlzbWF0Y2hlZDsKK30K
Kworc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVk
ZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBib29s
IGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gdHJ1ZTsKICAgICBhdXRvIG91dHB1dFJlY3QgPSBbJl0g
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGxheW91dFJlY3QpIHsKQEAgLTkyLDcgKzE1OSw3IEBAIHN0YXRpYyBi
b29sIG91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExhCiAKIHN0YXRpYyBib29sIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIG1pc210
YWNoaW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQo
c3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIG1pc210YWNo
aW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRl
ZChzdHJlYW0sIGNvbnRleHQsIHJlbmRlcmVyLCBsYXlvdXRCb3gpOwogCiAgICAgaWYgKCFpczxD
b250YWluZXI+KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiBtaXNtdGFjaGluZ0dlb21ldHJ5
OwpAQCAtMTA3LDggKzE3NCwxNSBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVl
KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udAogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pc21hdGNoaW5nU3VidHJl
ZUdlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShzdHJlYW0sIGNvbnRleHQsIGRvd25j
YXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hpbGRCb3gpOwotICAgICAgICBtaXNt
dGFjaGluZ0dlb21ldHJ5IHw9IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5OworICAgICAgICBp
ZiAoaXM8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcikgJiYgY2hpbGRCb3gtPmVzdGFi
bGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGNo
aWxkUmVuZGVyZXItPmNoaWxkcmVuSW5saW5lKCkpOworICAgICAgICAgICAgYXV0byYgYmxvY2tG
bG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcik7CisgICAgICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkQm94
KTsKKyAgICAgICAgICAgIG1pc210YWNoaW5nR2VvbWV0cnkgfD0gYmxvY2tGbG93LmxpbmVMYXlv
dXRQYXRoKCkgPT0gUmVuZGVyQmxvY2tGbG93OjpTaW1wbGVMaW5lc1BhdGggPyBvdXRwdXRNaXNt
YXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxv
Y2tGbG93LCBmb3JtYXR0aW5nUm9vdCkgOiBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5m
b3JtYXRpb25JZk5lZWRlZChzdHJlYW0sIGNvbnRleHQsIGJsb2NrRmxvdywgZm9ybWF0dGluZ1Jv
b3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRy
ZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKKyAgICAgICAgICAg
IG1pc210YWNoaW5nR2VvbWV0cnkgfD0gbWlzbWF0Y2hpbmdTdWJ0cmVlR2VvbWV0cnk7CisgICAg
ICAgIH0KIAogICAgICAgICBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZygpOwogICAg
ICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRSZW5kZXJlci0+bmV4dFNpYmxpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAxOTI4ZmNiMWNkYi4uZTNmNmFhMjNm
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb28KIHsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdT
dGF0ZSYpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkwLDExICs5MCwxNCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YQogICAg
IGF1dG8gbGluZUxlZnQgPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveExlZnQo
KTsKICAgICBhdXRvIGxpbmVSaWdodCA9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50
Qm94UmlnaHQoKTsKIAotICAgIGF1dG8gdGV4dFJ1bnMgPSB0ZXh0Q29udGVudFByb3ZpZGVyLnRl
eHRSdW5zKCk7CiAgICAgU2ltcGxlTGluZUJyZWFrZXI6OkxpbmVDb25zdHJhaW50TGlzdCBjb25z
dHJhaW50czsKICAgICBjb25zdHJhaW50cy5hcHBlbmQoeyB7IH0sIGxpbmVMZWZ0LCBsaW5lUmln
aHQgfSk7Ci0gICAgU2ltcGxlTGluZUJyZWFrZXIgc2ltcGxlTGluZUJyZWFrZXIodGV4dFJ1bnMs
IHRleHRDb250ZW50UHJvdmlkZXIsIFdURk1vdmUoY29uc3RyYWludHMpLCBmb3JtYXR0aW5nUm9v
dC5zdHlsZSgpKTsKLSAgICBhdXRvIGxheW91dFJ1bnMgPSBzaW1wbGVMaW5lQnJlYWtlci5ydW5z
KCk7CisgICAgYXV0byB0ZXh0UnVuTGlzdCA9IHRleHRDb250ZW50UHJvdmlkZXIudGV4dFJ1bnMo
KTsKKyAgICBTaW1wbGVMaW5lQnJlYWtlciBzaW1wbGVMaW5lQnJlYWtlcih0ZXh0UnVuTGlzdCwg
dGV4dENvbnRlbnRQcm92aWRlciwgV1RGTW92ZShjb25zdHJhaW50cyksIGZvcm1hdHRpbmdSb290
LnN0eWxlKCkpOworCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgeWV0IGhhdmUgYSBkaXNwbGF5IHRy
ZWUgY29udGV4dCBmb3IgaW5saW5lIGJveGVzLCBsZXQncyBqdXN0IGNhY2hlIHRoZSBydW5zIG9u
IHRoZSBzdGF0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHZlcmlmaWVkIGFnYWluc3QgdGhlIHNsbC9p
bmxpbmUgdHJlZSBydW5zIGxhdGVyLgorICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOworICAgIGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5hZGRMYXlvdXRSdW5zKHNpbXBsZUxpbmVC
cmVha2VyLnJ1bnMoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBs
YXlvdXQgY29udGV4dCgiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgi
IDw8ICZyb290KCkgPDwgIikiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
OTk3ZDMzY2Y2OGUuLmUzOTM5NTcwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
CiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiUnVucy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNiArNDEs
MTMgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0
ZSB7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRl
PiYmLCBjb25zdCBMYXlvdXRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5saW5lRm9ybWF0dGlu
Z1N0YXRlKCk7CisKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeS4gV2UgbmVlZCB0byBjb25zdHJ1
Y3QgYSBkaXNwbGF5IHRyZWUgY29udGV4dCBmb3IgaW5saW5lcy4KKyAgICB2b2lkIGFkZExheW91
dFJ1bnMoVmVjdG9yPExheW91dFJ1bj4mJiBsYXlvdXRSdW5zKSB7IG1fbGF5b3V0UnVucyA9IFdU
Rk1vdmUobGF5b3V0UnVucyk7IH0KKyAgICBjb25zdCBWZWN0b3I8TGF5b3V0UnVuPiYgbGF5b3V0
UnVucygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UnVuczsgfQorCitwcml2YXRlOgorICAgICAg
IFZlY3RvcjxMYXlvdXRSdW4+IG1fbGF5b3V0UnVuczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRl
eCBkMzMyYWQzZDQxNS4uZTYyZjNmNmQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTExOCw3ICsxMTgs
NyBAQCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQm
IHJvb3RSZW5kZXJlciwgQ29udGFpbmVyJiBybwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQotc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3BsYXk6OkJveCYgZGlzcGxheUJveCwgdW5zaWdu
ZWQgZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFt
LCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6Qm94KiBkaXNwbGF5Qm94LCB1
bnNpZ25lZCBkZXB0aCkKIHsKICAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAg
ICAgd2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQpAQCAtMTM0LDcgKzEz
NCw5IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgICAgIHN0cmVhbSA8PCAiYmxvY2sg
Y29udGFpbmVyIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICJib3giOwotICAgIHN0
cmVhbSA8PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gubGVmdCgpIDw8ICIgIiA8PCBkaXNwbGF5Qm94
LnRvcCgpIDw8ICJdIHNpemUgWyIgPDwgZGlzcGxheUJveC53aWR0aCgpIDw8ICIgIiA8PCBkaXNw
bGF5Qm94LmhlaWdodCgpIDw8ICJdIjsKKyAgICAvLyBGSVhNRTogSW5saW5lIHRleHQgcnVucyBk
b24ndCBjcmVhdGUgZGlzcGxheSBib3hlcyB5ZXQuCisgICAgaWYgKGRpc3BsYXlCb3gpCisgICAg
ICAgIHN0cmVhbSA8PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gtPmxlZnQoKSA8PCAiICIgPDwgZGlz
cGxheUJveC0+dG9wKCkgPDwgIl0gc2l6ZSBbIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8ICIg
IiA8PCBkaXNwbGF5Qm94LT5oZWlnaHQoKSA8PCAiXSI7CiAgICAgc3RyZWFtIDw8ICIgb2JqZWN0
IFsiIDw8ICZsYXlvdXRCb3ggPDwgIl0iOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CkBAIC0x
NDMsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0
cmVhbSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3AKIHN0YXRpYyB2b2lkIG91dHB1
dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0cmVh
bSYgc3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRo
KQogewogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250
YWluZXIpKSB7Ci0gICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOworICAgICAgICBv
dXRwdXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOwogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihjaGls
ZCkpCiAgICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwg
ZG93bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CiAgICAgfQpAQCAtMTUyLDcg
KzE1NCw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYgc3RyCiB2b2lkIFRyZWVCdWlsZGVyOjpzaG93
TGF5b3V0VHJlZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBDb250
YWluZXImIGxheW91dEJveCkKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpM
aW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJl
Y3QpOwotICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGxheW91dEJveCwgKmxheW91dENvbnRl
eHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLCAwKTsKKyAgICBvdXRwdXRMYXlv
dXRCb3goc3RyZWFtLCBsYXlvdXRCb3gsIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91
dEJveChsYXlvdXRCb3gpLCAwKTsKICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQs
IHN0cmVhbSwgbGF5b3V0Qm94LCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJl
bGVhc2UoKS51dGY4KCkuZGF0YSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345501</attachid>
            <date>2018-07-20 21:37:58 -0700</date>
            <delta_ts>2018-07-20 21:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>13473</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NzYzOTRjNDc0NS4uMDYzYmM2ZmE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wNy0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIHZlcmlmaWNhdGlvbiBmb3IgaW5saW5lIHRleHQgcnVu
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1p
c21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJ
bmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6dmVyaWZ5QW5k
T3V0cHV0U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNo
aW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRMYXlv
dXRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpsYXlvdXRSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dFRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUpOgorCiAyMDE4
LTA3LTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10g
RG8gbm90IHVzZSB2aXJ0dWFsIG1ldGhvZHMgdG8gY29uc3RydWN0IGZsb2F0aW5nL2Zvcm1hdHRp
bmcgc3RhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA2YmFi
NTgxNGNhYy4uZTIxMWE3ZGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9W
ZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgog
I2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCkBAIC0zOSw3ICs0MCw3MyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBib29sIG91dHB1dE1p
c21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb25z
dCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1dG8qIGxpbmVMYXlv
dXREYXRhID0gYmxvY2tGbG93LnNpbXBsZUxpbmVMYXlvdXQoKTsKKyAgICBpZiAoIWxpbmVMYXlv
dXREYXRhKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBjb25zdF9j
YXN0PExheW91dENvbnRleHQmPihsYXlvdXRDb250ZXh0KS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CisgICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKSk7CisgICAgYXV0byYgbGF5b3V0UnVucyA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5s
YXlvdXRSdW5zKCk7CisKKyAgICBpZiAobGF5b3V0UnVucy5zaXplKCkgIT0gbGluZUxheW91dERh
dGEtPnJ1bkNvdW50KCkpIHsKKyAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZyBudW1iZXIg
b2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSA8PCAi
KSBsYXlvdXQgcnVucygiIDw8IGxheW91dFJ1bnMuc2l6ZSgpIDw8ICIpIjsKKyAgICAgICAgc3Ry
ZWFtLm5leHRMaW5lKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGF1dG8g
bWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lTGF5
b3V0RGF0YS0+cnVuQ291bnQoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHNpbXBsZVJ1biA9IGxp
bmVMYXlvdXREYXRhLT5ydW5BdChpKTsKKyAgICAgICAgYXV0byYgbGF5b3V0UnVuID0gbGF5b3V0
UnVuc1tpXTsKKworICAgICAgICBpZiAoc2ltcGxlUnVuLnN0YXJ0ID09IGxheW91dFJ1bi5zdGFy
dCgpICYmIHNpbXBsZVJ1bi5lbmQgPT0gbGF5b3V0UnVuLmVuZCgpICYmIHNpbXBsZVJ1bi5sb2dp
Y2FsTGVmdCA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPT0g
bGF5b3V0UnVuLnJpZ2h0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzdHJl
YW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIGxheW91dCBydW4oIiA8PCBsYXlv
dXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8PCAiKSAoIiA8PCBsYXlv
dXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkgPDwgIikiOworICAgICAg
ICBzdHJlYW0ubmV4dExpbmUoKTsKKyAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CisgICAgfQor
ICAgIHJldHVybiBtaXNtYXRjaGVkOworfQorCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGlu
Z0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxv
Y2tGbG93LCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1
dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGNvbnN0X2Nhc3Q8TGF5b3V0Q29udGV4dCY+KGxh
eW91dENvbnRleHQpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdS
b290KTsKKyAgICBBU1NFUlQoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0
aW5nU3RhdGUpKTsKKyAgICBhdXRvJiBsYXlvdXRSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxheW91dFJ1bnMoKTsKKworICAgIGF1
dG8gbWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxheW91dFJ1bkluZGV4ID0gMDsK
KyAgICBmb3IgKGF1dG8qIHJvb3RMaW5lID0gYmxvY2tGbG93LmZpcnN0Um9vdEJveCgpOyByb290
TGluZTsgcm9vdExpbmUgPSByb290TGluZS0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmb3Ig
KGF1dG8qIGxpbmVCb3ggPSByb290TGluZS0+Zmlyc3RDaGlsZCgpOyBsaW5lQm94OyBsaW5lQm94
ID0gbGluZUJveC0+bmV4dE9uTGluZSgpKSB7CisgICAgICAgICAgICBpZiAoIWlzPElubGluZVRl
eHRCb3g+KGxpbmVCb3gpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpZiAobGF5b3V0UnVuSW5kZXggPj0gbGF5b3V0UnVucy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogPHNwYW4+Zm9vYmFyPC9zcGFuPmZvb2JhciBnZW5lcmF0ZXMgMiBpbmxp
bmUgdGV4dCBib3hlcyB3aGlsZSB3ZSBvbmx5IGdlbmVyYXRlIG9uZSBsYXlvdXQgcnVuICh3aGlj
aCBpcyBtdWNoIGJldHRlciwgc2luY2UgaXQgZW5hYmxlcyB1cyB0byBkbyBrZXJuaW5nIGFjcm9z
cyBpbmxpbmUgZWxlbWVudHMpLgorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hp
bmcgbnVtYmVyIG9mIHJ1bnM6IGxheW91dCBydW5zKCIgPDwgbGF5b3V0UnVucy5zaXplKCkgPDwg
IikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvJiBsYXlvdXRS
dW4gPSBsYXlvdXRSdW5zW2xheW91dFJ1bkluZGV4XTsKKyAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbGluZUJveCk7CisgICAgICAgICAg
ICBpZiAoaW5saW5lVGV4dEJveC5zdGFydCgpID09IGxheW91dFJ1bi5zdGFydCgpICYmIGlubGlu
ZVRleHRCb3guZW5kKCkgPT0gbGF5b3V0UnVuLmVuZCgpICYmIGlubGluZVRleHRCb3gubG9naWNh
bExlZnQoKSA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIGlubGluZVRleHRCb3gubG9naWNhbFJpZ2h0
KCkgPT0gbGF5b3V0UnVuLnJpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIk1p
c21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgaW5saW5lVGV4dEJveC5zdGFydCgpIDw8ICIsICIg
PDwgaW5saW5lVGV4dEJveC5lbmQoKSA8PCAiKSAoIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxM
ZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxSaWdodCgpIDw8ICIpIGxheW91
dCBydW4oIiA8PCBsYXlvdXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8
PCAiKSAoIiA8PCBsYXlvdXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkg
PDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAg
ICAgIG1pc21hdGNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsYXlv
dXRSdW5JbmRleDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWlzbWF0Y2hlZDsKK30K
Kworc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVk
ZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBib29s
IGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gdHJ1ZTsKICAgICBhdXRvIG91dHB1dFJlY3QgPSBbJl0g
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGxheW91dFJlY3QpIHsKQEAgLTkyLDcgKzE1OSw3IEBAIHN0YXRpYyBi
b29sIG91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExhCiAKIHN0YXRpYyBib29sIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIG1pc210
YWNoaW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQo
c3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIG1pc210YWNo
aW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRl
ZChzdHJlYW0sIGNvbnRleHQsIHJlbmRlcmVyLCBsYXlvdXRCb3gpOwogCiAgICAgaWYgKCFpczxD
b250YWluZXI+KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiBtaXNtdGFjaGluZ0dlb21ldHJ5
OwpAQCAtMTA3LDggKzE3NCwxNSBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVl
KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udAogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pc21hdGNoaW5nU3VidHJl
ZUdlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShzdHJlYW0sIGNvbnRleHQsIGRvd25j
YXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hpbGRCb3gpOwotICAgICAgICBtaXNt
dGFjaGluZ0dlb21ldHJ5IHw9IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5OworICAgICAgICBp
ZiAoaXM8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcikgJiYgY2hpbGRCb3gtPmVzdGFi
bGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGNo
aWxkUmVuZGVyZXItPmNoaWxkcmVuSW5saW5lKCkpOworICAgICAgICAgICAgYXV0byYgYmxvY2tG
bG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcik7CisgICAgICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkQm94
KTsKKyAgICAgICAgICAgIG1pc210YWNoaW5nR2VvbWV0cnkgfD0gYmxvY2tGbG93LmxpbmVMYXlv
dXRQYXRoKCkgPT0gUmVuZGVyQmxvY2tGbG93OjpTaW1wbGVMaW5lc1BhdGggPyBvdXRwdXRNaXNt
YXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxv
Y2tGbG93LCBmb3JtYXR0aW5nUm9vdCkgOiBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5m
b3JtYXRpb25JZk5lZWRlZChzdHJlYW0sIGNvbnRleHQsIGJsb2NrRmxvdywgZm9ybWF0dGluZ1Jv
b3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRy
ZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKKyAgICAgICAgICAg
IG1pc210YWNoaW5nR2VvbWV0cnkgfD0gbWlzbWF0Y2hpbmdTdWJ0cmVlR2VvbWV0cnk7CisgICAg
ICAgIH0KIAogICAgICAgICBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZygpOwogICAg
ICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRSZW5kZXJlci0+bmV4dFNpYmxpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAxOTI4ZmNiMWNkYi4uZTNmNmFhMjNm
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb28KIHsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdT
dGF0ZSYpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkwLDExICs5MCwxNCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YQogICAg
IGF1dG8gbGluZUxlZnQgPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveExlZnQo
KTsKICAgICBhdXRvIGxpbmVSaWdodCA9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50
Qm94UmlnaHQoKTsKIAotICAgIGF1dG8gdGV4dFJ1bnMgPSB0ZXh0Q29udGVudFByb3ZpZGVyLnRl
eHRSdW5zKCk7CiAgICAgU2ltcGxlTGluZUJyZWFrZXI6OkxpbmVDb25zdHJhaW50TGlzdCBjb25z
dHJhaW50czsKICAgICBjb25zdHJhaW50cy5hcHBlbmQoeyB7IH0sIGxpbmVMZWZ0LCBsaW5lUmln
aHQgfSk7Ci0gICAgU2ltcGxlTGluZUJyZWFrZXIgc2ltcGxlTGluZUJyZWFrZXIodGV4dFJ1bnMs
IHRleHRDb250ZW50UHJvdmlkZXIsIFdURk1vdmUoY29uc3RyYWludHMpLCBmb3JtYXR0aW5nUm9v
dC5zdHlsZSgpKTsKLSAgICBhdXRvIGxheW91dFJ1bnMgPSBzaW1wbGVMaW5lQnJlYWtlci5ydW5z
KCk7CisgICAgYXV0byB0ZXh0UnVuTGlzdCA9IHRleHRDb250ZW50UHJvdmlkZXIudGV4dFJ1bnMo
KTsKKyAgICBTaW1wbGVMaW5lQnJlYWtlciBzaW1wbGVMaW5lQnJlYWtlcih0ZXh0UnVuTGlzdCwg
dGV4dENvbnRlbnRQcm92aWRlciwgV1RGTW92ZShjb25zdHJhaW50cyksIGZvcm1hdHRpbmdSb290
LnN0eWxlKCkpOworCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgeWV0IGhhdmUgYSBkaXNwbGF5IHRy
ZWUgY29udGV4dCBmb3IgaW5saW5lIGJveGVzLCBsZXQncyBqdXN0IGNhY2hlIHRoZSBydW5zIG9u
IHRoZSBzdGF0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHZlcmlmaWVkIGFnYWluc3QgdGhlIHNsbC9p
bmxpbmUgdHJlZSBydW5zIGxhdGVyLgorICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOworICAgIGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5hZGRMYXlvdXRSdW5zKHNpbXBsZUxpbmVC
cmVha2VyLnJ1bnMoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBs
YXlvdXQgY29udGV4dCgiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgi
IDw8ICZyb290KCkgPDwgIikiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
OTk3ZDMzY2Y2OGUuLmRjYjUxNGJjNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
CiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiUnVucy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNiArNDEs
MTMgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0
ZSB7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRl
PiYmLCBjb25zdCBMYXlvdXRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5saW5lRm9ybWF0dGlu
Z1N0YXRlKCk7CisKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeS4gV2UgbmVlZCB0byBjb25zdHJ1
Y3QgYSBkaXNwbGF5IHRyZWUgY29udGV4dCBmb3IgaW5saW5lcy4KKyAgICB2b2lkIGFkZExheW91
dFJ1bnMoVmVjdG9yPExheW91dFJ1bj4mJiBsYXlvdXRSdW5zKSB7IG1fbGF5b3V0UnVucyA9IFdU
Rk1vdmUobGF5b3V0UnVucyk7IH0KKyAgICBjb25zdCBWZWN0b3I8TGF5b3V0UnVuPiYgbGF5b3V0
UnVucygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UnVuczsgfQorCitwcml2YXRlOgorCVZlY3Rv
cjxMYXlvdXRSdW4+IG1fbGF5b3V0UnVuczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBkMzMy
YWQzZDQxNS4uZTYyZjNmNmQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2
b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJvb3RS
ZW5kZXJlciwgQ29udGFpbmVyJiBybwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQot
c3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IERpc3BsYXk6OkJveCYgZGlzcGxheUJveCwgdW5zaWduZWQgZGVw
dGgpCitzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6Qm94KiBkaXNwbGF5Qm94LCB1bnNpZ25l
ZCBkZXB0aCkKIHsKICAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgd2hp
bGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQpAQCAtMTM0LDcgKzEzNCw5IEBA
IHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgICAgIHN0cmVhbSA8PCAiYmxvY2sgY29udGFp
bmVyIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICJib3giOwotICAgIHN0cmVhbSA8
PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gubGVmdCgpIDw8ICIgIiA8PCBkaXNwbGF5Qm94LnRvcCgp
IDw8ICJdIHNpemUgWyIgPDwgZGlzcGxheUJveC53aWR0aCgpIDw8ICIgIiA8PCBkaXNwbGF5Qm94
LmhlaWdodCgpIDw8ICJdIjsKKyAgICAvLyBGSVhNRTogSW5saW5lIHRleHQgcnVucyBkb24ndCBj
cmVhdGUgZGlzcGxheSBib3hlcyB5ZXQuCisgICAgaWYgKGRpc3BsYXlCb3gpCisgICAgICAgIHN0
cmVhbSA8PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gtPmxlZnQoKSA8PCAiICIgPDwgZGlzcGxheUJv
eC0+dG9wKCkgPDwgIl0gc2l6ZSBbIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8ICIgIiA8PCBk
aXNwbGF5Qm94LT5oZWlnaHQoKSA8PCAiXSI7CiAgICAgc3RyZWFtIDw8ICIgb2JqZWN0IFsiIDw8
ICZsYXlvdXRCb3ggPDwgIl0iOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CkBAIC0xNDMsNyAr
MTQ1LDcgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwg
Y29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3AKIHN0YXRpYyB2b2lkIG91dHB1dExheW91
dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYgc3Ry
ZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQogewog
ICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWluZXIp
KSB7Ci0gICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOworICAgICAgICBvdXRwdXRM
YXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGNoaWxkKSwgZGVwdGgpOwogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihjaGlsZCkpCiAg
ICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgZG93bmNh
c3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CiAgICAgfQpAQCAtMTUyLDcgKzE1NCw3
IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYgc3RyCiB2b2lkIFRyZWVCdWlsZGVyOjpzaG93TGF5b3V0
VHJlZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBDb250YWluZXIm
IGxheW91dEJveCkKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9k
ZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwot
ICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGxheW91dEJveCwgKmxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLCAwKTsKKyAgICBvdXRwdXRMYXlvdXRCb3go
c3RyZWFtLCBsYXlvdXRCb3gsIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChs
YXlvdXRCb3gpLCAwKTsKICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVh
bSwgbGF5b3V0Qm94LCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2Uo
KS51dGY4KCkuZGF0YSgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345502</attachid>
            <date>2018-07-20 21:40:30 -0700</date>
            <delta_ts>2018-07-21 11:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>13476</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NzYzOTRjNDc0NS4uMDYzYmM2ZmE1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0wNy0yMCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIHZlcmlmaWNhdGlvbiBmb3IgaW5saW5lIHRleHQgcnVu
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Nzg3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1p
c21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJ
bmZvcm1hdGlvbklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6dmVyaWZ5QW5k
T3V0cHV0U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNo
aW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRMYXlv
dXRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRl
OjpsYXlvdXRSdW5zIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJv
eCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dFRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6c2hvd0xheW91dFRyZWUpOgorCiAyMDE4
LTA3LTIwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10g
RG8gbm90IHVzZSB2aXJ0dWFsIG1ldGhvZHMgdG8gY29uc3RydWN0IGZsb2F0aW5nL2Zvcm1hdHRp
bmcgc3RhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAppbmRleCA2YmFi
NTgxNGNhYy4uZTIxMWE3ZGU3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9W
ZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24u
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAKICNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgog
I2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCkBAIC0zOSw3ICs0MCw3MyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBib29sIG91dHB1dE1p
c21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxvY2tGbG93LCBjb25z
dCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1dG8qIGxpbmVMYXlv
dXREYXRhID0gYmxvY2tGbG93LnNpbXBsZUxpbmVMYXlvdXQoKTsKKyAgICBpZiAoIWxpbmVMYXlv
dXREYXRhKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBjb25zdF9j
YXN0PExheW91dENvbnRleHQmPihsYXlvdXRDb250ZXh0KS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdT
dGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CisgICAgQVNTRVJUKGlzPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKSk7CisgICAgYXV0byYgbGF5b3V0UnVucyA9
IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5s
YXlvdXRSdW5zKCk7CisKKyAgICBpZiAobGF5b3V0UnVucy5zaXplKCkgIT0gbGluZUxheW91dERh
dGEtPnJ1bkNvdW50KCkpIHsKKyAgICAgICAgc3RyZWFtIDw8ICJNaXNtYXRjaGluZyBudW1iZXIg
b2YgcnVuczogc2ltcGxlIHJ1bnMoIiA8PCBsaW5lTGF5b3V0RGF0YS0+cnVuQ291bnQoKSA8PCAi
KSBsYXlvdXQgcnVucygiIDw8IGxheW91dFJ1bnMuc2l6ZSgpIDw8ICIpIjsKKyAgICAgICAgc3Ry
ZWFtLm5leHRMaW5lKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGF1dG8g
bWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lTGF5
b3V0RGF0YS0+cnVuQ291bnQoKTsgKytpKSB7CisgICAgICAgIGF1dG8mIHNpbXBsZVJ1biA9IGxp
bmVMYXlvdXREYXRhLT5ydW5BdChpKTsKKyAgICAgICAgYXV0byYgbGF5b3V0UnVuID0gbGF5b3V0
UnVuc1tpXTsKKworICAgICAgICBpZiAoc2ltcGxlUnVuLnN0YXJ0ID09IGxheW91dFJ1bi5zdGFy
dCgpICYmIHNpbXBsZVJ1bi5lbmQgPT0gbGF5b3V0UnVuLmVuZCgpICYmIHNpbXBsZVJ1bi5sb2dp
Y2FsTGVmdCA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIHNpbXBsZVJ1bi5sb2dpY2FsUmlnaHQgPT0g
bGF5b3V0UnVuLnJpZ2h0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzdHJl
YW0gPDwgIk1pc21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgc2ltcGxlUnVuLnN0YXJ0IDw8ICIs
ICIgPDwgc2ltcGxlUnVuLmVuZCA8PCAiKSAoIiA8PCBzaW1wbGVSdW4ubG9naWNhbExlZnQgPDwg
IiwgIiA8PCBzaW1wbGVSdW4ubG9naWNhbFJpZ2h0IDw8ICIpIGxheW91dCBydW4oIiA8PCBsYXlv
dXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8PCAiKSAoIiA8PCBsYXlv
dXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkgPDwgIikiOworICAgICAg
ICBzdHJlYW0ubmV4dExpbmUoKTsKKyAgICAgICAgbWlzbWF0Y2hlZCA9IHRydWU7CisgICAgfQor
ICAgIHJldHVybiBtaXNtYXRjaGVkOworfQorCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGlu
Z0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgYmxv
Y2tGbG93LCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290KQoreworICAgIGF1
dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGNvbnN0X2Nhc3Q8TGF5b3V0Q29udGV4dCY+KGxh
eW91dENvbnRleHQpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdS
b290KTsKKyAgICBBU1NFUlQoaXM8SW5saW5lRm9ybWF0dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0
aW5nU3RhdGUpKTsKKyAgICBhdXRvJiBsYXlvdXRSdW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0
dGluZ1N0YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLmxheW91dFJ1bnMoKTsKKworICAgIGF1
dG8gbWlzbWF0Y2hlZCA9IGZhbHNlOworICAgIHVuc2lnbmVkIGxheW91dFJ1bkluZGV4ID0gMDsK
KyAgICBmb3IgKGF1dG8qIHJvb3RMaW5lID0gYmxvY2tGbG93LmZpcnN0Um9vdEJveCgpOyByb290
TGluZTsgcm9vdExpbmUgPSByb290TGluZS0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBmb3Ig
KGF1dG8qIGxpbmVCb3ggPSByb290TGluZS0+Zmlyc3RDaGlsZCgpOyBsaW5lQm94OyBsaW5lQm94
ID0gbGluZUJveC0+bmV4dE9uTGluZSgpKSB7CisgICAgICAgICAgICBpZiAoIWlzPElubGluZVRl
eHRCb3g+KGxpbmVCb3gpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICBpZiAobGF5b3V0UnVuSW5kZXggPj0gbGF5b3V0UnVucy5zaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogPHNwYW4+Zm9vYmFyPC9zcGFuPmZvb2JhciBnZW5lcmF0ZXMgMiBpbmxp
bmUgdGV4dCBib3hlcyB3aGlsZSB3ZSBvbmx5IGdlbmVyYXRlIG9uZSBsYXlvdXQgcnVuICh3aGlj
aCBpcyBtdWNoIGJldHRlciwgc2luY2UgaXQgZW5hYmxlcyB1cyB0byBkbyBrZXJuaW5nIGFjcm9z
cyBpbmxpbmUgZWxlbWVudHMpLgorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiTWlzbWF0Y2hp
bmcgbnVtYmVyIG9mIHJ1bnM6IGxheW91dCBydW5zKCIgPDwgbGF5b3V0UnVucy5zaXplKCkgPDwg
IikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvJiBsYXlvdXRS
dW4gPSBsYXlvdXRSdW5zW2xheW91dFJ1bkluZGV4XTsKKyAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PigqbGluZUJveCk7CisgICAgICAgICAg
ICBpZiAoaW5saW5lVGV4dEJveC5zdGFydCgpID09IGxheW91dFJ1bi5zdGFydCgpICYmIGlubGlu
ZVRleHRCb3guZW5kKCkgPT0gbGF5b3V0UnVuLmVuZCgpICYmIGlubGluZVRleHRCb3gubG9naWNh
bExlZnQoKSA9PSBsYXlvdXRSdW4ubGVmdCgpICYmIGlubGluZVRleHRCb3gubG9naWNhbFJpZ2h0
KCkgPT0gbGF5b3V0UnVuLnJpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIk1p
c21hdGNoaW5nOiBzaW1wbGUgcnVuKCIgPDwgaW5saW5lVGV4dEJveC5zdGFydCgpIDw8ICIsICIg
PDwgaW5saW5lVGV4dEJveC5lbmQoKSA8PCAiKSAoIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxM
ZWZ0KCkgPDwgIiwgIiA8PCBpbmxpbmVUZXh0Qm94LmxvZ2ljYWxSaWdodCgpIDw8ICIpIGxheW91
dCBydW4oIiA8PCBsYXlvdXRSdW4uc3RhcnQoKSA8PCAiLCAiIDw8IGxheW91dFJ1bi5lbmQoKSA8
PCAiKSAoIiA8PCBsYXlvdXRSdW4ubGVmdCgpIDw8ICIsICIgPDwgbGF5b3V0UnVuLnJpZ2h0KCkg
PDwgIikiOworICAgICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgpOworICAgICAgICAgICAg
ICAgIG1pc21hdGNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsYXlv
dXRSdW5JbmRleDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbWlzbWF0Y2hlZDsKK30K
Kworc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVk
ZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBib29s
IGZpcnN0TWlzbWF0Y2hpbmdSZWN0ID0gdHJ1ZTsKICAgICBhdXRvIG91dHB1dFJlY3QgPSBbJl0g
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBjb25zdCBMYXlvdXRSZWN0JiByZW5kZXJlclJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGxheW91dFJlY3QpIHsKQEAgLTkyLDcgKzE1OSw3IEBAIHN0YXRpYyBi
b29sIG91dHB1dE1pc21hdGNoaW5nQm94SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBz
dHJlYW0sIGNvbnN0IExhCiAKIHN0YXRpYyBib29sIHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIG1pc210
YWNoaW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0JveEluZm9ybWF0aW9uSWZOZWVkZWQo
c3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIG1pc210YWNo
aW5nR2VvbWV0cnkgPSBvdXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRl
ZChzdHJlYW0sIGNvbnRleHQsIHJlbmRlcmVyLCBsYXlvdXRCb3gpOwogCiAgICAgaWYgKCFpczxD
b250YWluZXI+KGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiBtaXNtdGFjaGluZ0dlb21ldHJ5
OwpAQCAtMTA3LDggKzE3NCwxNSBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVl
KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0Q29udGV4dCYgY29udAogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIG1pc21hdGNoaW5nU3VidHJl
ZUdlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShzdHJlYW0sIGNvbnRleHQsIGRvd25j
YXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hpbGRCb3gpOwotICAgICAgICBtaXNt
dGFjaGluZ0dlb21ldHJ5IHw9IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5OworICAgICAgICBp
ZiAoaXM8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcikgJiYgY2hpbGRCb3gtPmVzdGFi
bGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGNo
aWxkUmVuZGVyZXItPmNoaWxkcmVuSW5saW5lKCkpOworICAgICAgICAgICAgYXV0byYgYmxvY2tG
bG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcik7CisgICAgICAg
ICAgICBhdXRvJiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkQm94
KTsKKyAgICAgICAgICAgIG1pc210YWNoaW5nR2VvbWV0cnkgfD0gYmxvY2tGbG93LmxpbmVMYXlv
dXRQYXRoKCkgPT0gUmVuZGVyQmxvY2tGbG93OjpTaW1wbGVMaW5lc1BhdGggPyBvdXRwdXRNaXNt
YXRjaGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxv
Y2tGbG93LCBmb3JtYXR0aW5nUm9vdCkgOiBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5m
b3JtYXRpb25JZk5lZWRlZChzdHJlYW0sIGNvbnRleHQsIGJsb2NrRmxvdywgZm9ybWF0dGluZ1Jv
b3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBtaXNtYXRjaGluZ1N1YnRy
ZWVHZW9tZXRyeSA9IHZlcmlmeUFuZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCBkb3du
Y2FzdDxSZW5kZXJCb3g+KCpjaGlsZFJlbmRlcmVyKSwgKmNoaWxkQm94KTsKKyAgICAgICAgICAg
IG1pc210YWNoaW5nR2VvbWV0cnkgfD0gbWlzbWF0Y2hpbmdTdWJ0cmVlR2VvbWV0cnk7CisgICAg
ICAgIH0KIAogICAgICAgICBjaGlsZEJveCA9IGNoaWxkQm94LT5uZXh0U2libGluZygpOwogICAg
ICAgICBjaGlsZFJlbmRlcmVyID0gY2hpbGRSZW5kZXJlci0+bmV4dFNpYmxpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAxOTI4ZmNiMWNkYi4uZTNmNmFhMjNm
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb28KIHsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIEZvcm1hdHRpbmdT
dGF0ZSYpIGNvbnN0Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YXRlJiBpbmxpbmVGb3JtYXR0aW5n
U3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxDb250YWluZXI+KHJvb3QoKSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTkwLDExICs5MCwxNCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgRm9ybWF0dGluZ1N0YQogICAg
IGF1dG8gbGluZUxlZnQgPSBmb3JtYXR0aW5nUm9vdERpc3BsYXlCb3guY29udGVudEJveExlZnQo
KTsKICAgICBhdXRvIGxpbmVSaWdodCA9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50
Qm94UmlnaHQoKTsKIAotICAgIGF1dG8gdGV4dFJ1bnMgPSB0ZXh0Q29udGVudFByb3ZpZGVyLnRl
eHRSdW5zKCk7CiAgICAgU2ltcGxlTGluZUJyZWFrZXI6OkxpbmVDb25zdHJhaW50TGlzdCBjb25z
dHJhaW50czsKICAgICBjb25zdHJhaW50cy5hcHBlbmQoeyB7IH0sIGxpbmVMZWZ0LCBsaW5lUmln
aHQgfSk7Ci0gICAgU2ltcGxlTGluZUJyZWFrZXIgc2ltcGxlTGluZUJyZWFrZXIodGV4dFJ1bnMs
IHRleHRDb250ZW50UHJvdmlkZXIsIFdURk1vdmUoY29uc3RyYWludHMpLCBmb3JtYXR0aW5nUm9v
dC5zdHlsZSgpKTsKLSAgICBhdXRvIGxheW91dFJ1bnMgPSBzaW1wbGVMaW5lQnJlYWtlci5ydW5z
KCk7CisgICAgYXV0byB0ZXh0UnVuTGlzdCA9IHRleHRDb250ZW50UHJvdmlkZXIudGV4dFJ1bnMo
KTsKKyAgICBTaW1wbGVMaW5lQnJlYWtlciBzaW1wbGVMaW5lQnJlYWtlcih0ZXh0UnVuTGlzdCwg
dGV4dENvbnRlbnRQcm92aWRlciwgV1RGTW92ZShjb25zdHJhaW50cyksIGZvcm1hdHRpbmdSb290
LnN0eWxlKCkpOworCisgICAgLy8gU2luY2Ugd2UgZG9uJ3QgeWV0IGhhdmUgYSBkaXNwbGF5IHRy
ZWUgY29udGV4dCBmb3IgaW5saW5lIGJveGVzLCBsZXQncyBqdXN0IGNhY2hlIHRoZSBydW5zIG9u
IHRoZSBzdGF0ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIHZlcmlmaWVkIGFnYWluc3QgdGhlIHNsbC9p
bmxpbmUgdHJlZSBydW5zIGxhdGVyLgorICAgIEFTU0VSVChpczxJbmxpbmVGb3JtYXR0aW5nU3Rh
dGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSkpOworICAgIGRvd25jYXN0PElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oaW5saW5lRm9ybWF0dGluZ1N0YXRlKS5hZGRMYXlvdXRSdW5zKHNpbXBsZUxpbmVC
cmVha2VyLnJ1bnMoKSk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBs
YXlvdXQgY29udGV4dCgiIDw8ICZsYXlvdXRDb250ZXh0IDw8ICIpIGZvcm1hdHRpbmcgcm9vdCgi
IDw8ICZyb290KCkgPDwgIikiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXgg
OTk3ZDMzY2Y2OGUuLmVmMjYyNzcwYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
CiAjaW5jbHVkZSAiRm9ybWF0dGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiUnVucy5oIgogI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsNiArNDEs
MTMgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0
ZSB7CiBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlKFJlZjxGbG9hdGluZ1N0YXRl
PiYmLCBjb25zdCBMYXlvdXRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5saW5lRm9ybWF0dGlu
Z1N0YXRlKCk7CisKKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeS4gV2UgbmVlZCB0byBjb25zdHJ1
Y3QgYSBkaXNwbGF5IHRyZWUgY29udGV4dCBmb3IgaW5saW5lcy4KKyAgICB2b2lkIGFkZExheW91
dFJ1bnMoVmVjdG9yPExheW91dFJ1bj4mJiBsYXlvdXRSdW5zKSB7IG1fbGF5b3V0UnVucyA9IFdU
Rk1vdmUobGF5b3V0UnVucyk7IH0KKyAgICBjb25zdCBWZWN0b3I8TGF5b3V0UnVuPiYgbGF5b3V0
UnVucygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0UnVuczsgfQorCitwcml2YXRlOgorICAgIFZl
Y3RvcjxMYXlvdXRSdW4+IG1fbGF5b3V0UnVuczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCBk
MzMyYWQzZDQxNS4uZTYyZjNmNmQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTExOCw3ICsxMTgsNyBA
QCB2b2lkIFRyZWVCdWlsZGVyOjpjcmVhdGVTdWJUcmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJv
b3RSZW5kZXJlciwgQ29udGFpbmVyJiBybwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5H
KQotc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3BsYXk6OkJveCYgZGlzcGxheUJveCwgdW5zaWduZWQg
ZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6Qm94KiBkaXNwbGF5Qm94LCB1bnNp
Z25lZCBkZXB0aCkKIHsKICAgICB1bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAg
d2hpbGUgKCsrcHJpbnRlZENoYXJhY3RlcnMgPD0gZGVwdGggKiAyKQpAQCAtMTM0LDcgKzEzNCw5
IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgICAgIHN0cmVhbSA8PCAiYmxvY2sgY29u
dGFpbmVyIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICJib3giOwotICAgIHN0cmVh
bSA8PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gubGVmdCgpIDw8ICIgIiA8PCBkaXNwbGF5Qm94LnRv
cCgpIDw8ICJdIHNpemUgWyIgPDwgZGlzcGxheUJveC53aWR0aCgpIDw8ICIgIiA8PCBkaXNwbGF5
Qm94LmhlaWdodCgpIDw8ICJdIjsKKyAgICAvLyBGSVhNRTogSW5saW5lIHRleHQgcnVucyBkb24n
dCBjcmVhdGUgZGlzcGxheSBib3hlcyB5ZXQuCisgICAgaWYgKGRpc3BsYXlCb3gpCisgICAgICAg
IHN0cmVhbSA8PCAiIGF0IFsiIDw8IGRpc3BsYXlCb3gtPmxlZnQoKSA8PCAiICIgPDwgZGlzcGxh
eUJveC0+dG9wKCkgPDwgIl0gc2l6ZSBbIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8ICIgIiA8
PCBkaXNwbGF5Qm94LT5oZWlnaHQoKSA8PCAiXSI7CiAgICAgc3RyZWFtIDw8ICIgb2JqZWN0IFsi
IDw8ICZsYXlvdXRCb3ggPDwgIl0iOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CkBAIC0xNDMs
NyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVh
bSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IERpc3AKIHN0YXRpYyB2b2lkIG91dHB1dExh
eW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBDb250YWluZXImIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQog
ewogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWlu
ZXIpKSB7Ci0gICAgICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGNoaWxkLCAqbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSwgZGVwdGgpOworICAgICAgICBvdXRw
dXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNoaWxkKSwgZGVwdGgpOwogICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihjaGlsZCkp
CiAgICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0cmVhbSwgZG93
bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CiAgICAgfQpAQCAtMTUyLDcgKzE1
NCw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0Q29udGV4dCYg
bGF5b3V0Q29udGV4dCwgVGV4dFN0cmVhbSYgc3RyCiB2b2lkIFRyZWVCdWlsZGVyOjpzaG93TGF5
b3V0VHJlZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBDb250YWlu
ZXImIGxheW91dEJveCkKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5l
TW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3Qp
OwotICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGxheW91dEJveCwgKmxheW91dENvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpLCAwKTsKKyAgICBvdXRwdXRMYXlvdXRC
b3goc3RyZWFtLCBsYXlvdXRCb3gsIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3gpLCAwKTsKICAgICBvdXRwdXRMYXlvdXRUcmVlKGxheW91dENvbnRleHQsIHN0
cmVhbSwgbGF5b3V0Qm94LCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVh
c2UoKS51dGY4KCkuZGF0YSgpKTsKIH0K
</data>
<flag name="review"
          id="363458"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>