<?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>25109</bug_id>
          
          <creation_ts>2009-04-08 22:28:30 -0700</creation_ts>
          <short_desc>Eliminate CompositeAnimationPrivate</short_desc>
          <delta_ts>2009-04-09 09:30:37 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116992</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 22:28:30 -0700</bug_when>
    <thetext>CompositeAnimationPrivate, in the CSS animation code, really doesn&apos;t provide any useful layering, and should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116995</commentid>
    <comment_count>1</comment_count>
      <attachid>29359</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-08 22:52:04 -0700</bug_when>
    <thetext>Created attachment 29359
Patch, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117039</commentid>
    <comment_count>2</comment_count>
      <attachid>29359</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-09 08:53:43 -0700</bug_when>
    <thetext>Comment on attachment 29359
Patch, changelog

&gt; +    m_compAnim-&gt;animationControllerPriv()-&gt;removeFromStyleAvailableWaitList(this);
&gt; +    m_compAnim-&gt;animationControllerPriv()-&gt;removeFromStartTimeResponseWaitList(this);

The function name animationControllerPriv() is both long and abbreviated. And I find it ugly. Can you give it a shorter name without abbreviations? Or I guess you could use our standard name for such things, impl(), which I also find ugly.

Aside from this new function that needs a better name, r=me

There are quite a few things here that aren&apos;t using standard WebKit style, using &quot;get&quot; for example for simple getters, whereas we use nouns for getters and &quot;get&quot; only for getters that use out arguments. And this design with the private object that you get to explicitly is also pretty awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117040</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-09 09:08:42 -0700</bug_when>
    <thetext>I&apos;d like to do the rename of getAnimatedStyle() (to computeAnimtedStyle() perhaps) in another patch, because that rename should extend outside of AnimationController.

I renamed animationControllerPriv() to just animationController(). I know that the normal term is just animation(), but that&apos;s very confusing in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117042</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-04-09 09:30:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/42360</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29359</attachid>
            <date>2009-04-08 22:52:04 -0700</date>
            <delta_ts>2009-04-09 08:53:43 -0700</delta_ts>
            <desc>Patch, changelog</desc>
            <filename>25109_patch.txt</filename>
            <type>text/plain</type>
            <size>25311</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDMxM2RkOC4uNjVhOTM4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NCBAQAogMjAwOS0wNC0wOCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTEwOQorCisgICAgICAgIEVsaW1pbmF0ZSBDb21wb3NpdGVBbmltYXRpb25Q
cml2YXRlLCB3aGljaCB3YXMgYSBuZWVkbGVzcyBsZXZlbAorICAgICAgICBvZiBhYnN0cmFjdGlv
bi4gQWxzbyByZW1vdmUgdGhlIG1ldGhvZHMgbGlrZSBhZGRUb1N0eWxlQXZhaWxhYmxlV2FpdExp
c3QoKQorICAgICAgICB0aGF0IHNpbXBseSB0dXJuIGFyb3VuZCBhbmQgY2FsbCB0aGUgYW5pbWF0
aW9uIGNvbnRyb2xsZXIuCisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6On5BbmltYXRpb25CYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZSk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21w
b3NpdGVBbmltYXRpb246On5Db21wb3NpdGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBvc2l0ZUFuaW1hdGlvbjo6Z2V0QW5pbWF0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVBbmltYXRpb246OnNldEFuaW1hdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OndpbGxOZWVkU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVBbmltYXRpb246OmdldEFuaW1hdGlvbkZvclByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6Y2xlYW51cEZpbmlzaGVkQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnN1c3BlbmRBbmltYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246Om92ZXJyaWRlSW1wbGljaXRB
bmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1l
T3ZlcnJpZGRlbkltcGxpY2l0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3Np
dGVBbmltYXRpb246OmlzQW5pbWF0aW5nUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zaXRlQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wb3NpdGVBbmltYXRpb246OnBhdXNlVHJhbnNpdGlvbkF0VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyk6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OmFuaW1hdGlvbkNvbnRyb2xsZXJQcml2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6aXNTdXNwZW5kZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjpoYXNBbmltYXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6Q29tcG9zaXRlQW5pbWF0aW9uKToKKworMjAw
OS0wNC0wOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKwogICAgICAg
ICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2gKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUxMDYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCmluZGV4IGU1MDBmZTQuLjMwYjRhZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNTgxLDggKzU4MSw4IEBAIEFuaW1hdGlvbkJhc2U6
OkFuaW1hdGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uKiB0cmFuc2l0aW9uLCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyCiAKIEFuaW1hdGlvbkJhc2U6On5BbmltYXRpb25CYXNlKCkKIHsKLSAgICBtX2Nv
bXBBbmltLT5yZW1vdmVGcm9tU3R5bGVBdmFpbGFibGVXYWl0TGlzdCh0aGlzKTsKLSAgICBtX2Nv
bXBBbmltLT5yZW1vdmVGcm9tU3RhcnRUaW1lUmVzcG9uc2VXYWl0TGlzdCh0aGlzKTsKKyAgICBt
X2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyUHJpdigpLT5yZW1vdmVGcm9tU3R5bGVBdmFp
bGFibGVXYWl0TGlzdCh0aGlzKTsKKyAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVy
UHJpdigpLT5yZW1vdmVGcm9tU3RhcnRUaW1lUmVzcG9uc2VXYWl0TGlzdCh0aGlzKTsKIH0KIAog
Ym9vbCBBbmltYXRpb25CYXNlOjpwcm9wZXJ0aWVzRXF1YWwoaW50IHByb3AsIGNvbnN0IFJlbmRl
clN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYikKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lk
IEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBpbnB1dCwg
ZG91YmxlIHBhcmFtKQogICAgIC8vIElmIHdlIGdldCBBbmltYXRpb25TdGF0ZUlucHV0UmVzdGFy
dEFuaW1hdGlvbiB0aGVuIHdlIGZvcmNlIGEgbmV3IGFuaW1hdGlvbiwgcmVnYXJkbGVzcyBvZiBz
dGF0ZS4KICAgICBpZiAoaW5wdXQgPT0gQW5pbWF0aW9uU3RhdGVJbnB1dE1ha2VOZXcpIHsKICAg
ICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFuaW1hdGlvblN0YXRlU3RhcnRXYWl0U3R5bGVBdmFp
bGFibGUpCi0gICAgICAgICAgICBtX2NvbXBBbmltLT5yZW1vdmVGcm9tU3R5bGVBdmFpbGFibGVX
YWl0TGlzdCh0aGlzKTsKKyAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2KCktPnJlbW92ZUZyb21TdHlsZUF2YWlsYWJsZVdhaXRMaXN0KHRoaXMpOwogICAgICAg
ICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0YXRlTmV3OwogICAgICAgICBtX3N0YXJ0VGltZSA9
IDA7CiAgICAgICAgIG1fcGF1c2VUaW1lID0gLTE7CkBAIC02ODgsNyArNjg4LDcgQEAgdm9pZCBB
bmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRv
dWJsZSBwYXJhbSkKIAogICAgIGlmIChpbnB1dCA9PSBBbmltYXRpb25TdGF0ZUlucHV0UmVzdGFy
dEFuaW1hdGlvbikgewogICAgICAgICBpZiAobV9hbmltU3RhdGUgPT0gQW5pbWF0aW9uU3RhdGVT
dGFydFdhaXRTdHlsZUF2YWlsYWJsZSkKLSAgICAgICAgICAgIG1fY29tcEFuaW0tPnJlbW92ZUZy
b21TdHlsZUF2YWlsYWJsZVdhaXRMaXN0KHRoaXMpOworICAgICAgICAgICAgbV9jb21wQW5pbS0+
YW5pbWF0aW9uQ29udHJvbGxlclByaXYoKS0+cmVtb3ZlRnJvbVN0eWxlQXZhaWxhYmxlV2FpdExp
c3QodGhpcyk7CiAgICAgICAgIG1fYW5pbVN0YXRlID0gQW5pbWF0aW9uU3RhdGVOZXc7CiAgICAg
ICAgIG1fc3RhcnRUaW1lID0gMDsKICAgICAgICAgbV9wYXVzZVRpbWUgPSAtMTsKQEAgLTcwMyw3
ICs3MDMsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3Rh
dGVJbnB1dCBpbnB1dCwgZG91YmxlIHBhcmFtKQogCiAgICAgaWYgKGlucHV0ID09IEFuaW1hdGlv
blN0YXRlSW5wdXRFbmRBbmltYXRpb24pIHsKICAgICAgICAgaWYgKG1fYW5pbVN0YXRlID09IEFu
aW1hdGlvblN0YXRlU3RhcnRXYWl0U3R5bGVBdmFpbGFibGUpCi0gICAgICAgICAgICBtX2NvbXBB
bmltLT5yZW1vdmVGcm9tU3R5bGVBdmFpbGFibGVXYWl0TGlzdCh0aGlzKTsKKyAgICAgICAgICAg
IG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXJQcml2KCktPnJlbW92ZUZyb21TdHlsZUF2
YWlsYWJsZVdhaXRMaXN0KHRoaXMpOwogICAgICAgICBtX2FuaW1TdGF0ZSA9IEFuaW1hdGlvblN0
YXRlRG9uZTsKICAgICAgICAgZW5kQW5pbWF0aW9uKHRydWUpOwogICAgICAgICByZXR1cm47CkBA
IC03NDMsNyArNzQzLDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUo
QW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyYW0gPj0gMCk7CiAgICAgICAgICAgICAgICAgLy8gU3RhcnQgdGltZXIgaGFzIGZpcmVk
LCB0ZWxsIHRoZSBhbmltYXRpb24gdG8gc3RhcnQgYW5kIHdhaXQgZm9yIGl0IHRvIHJlc3BvbmQg
d2l0aCBzdGFydCB0aW1lCiAgICAgICAgICAgICAgICAgbV9hbmltU3RhdGUgPSBBbmltYXRpb25T
dGF0ZVN0YXJ0V2FpdFN0eWxlQXZhaWxhYmxlOwotICAgICAgICAgICAgICAgIG1fY29tcEFuaW0t
PmFkZFRvU3R5bGVBdmFpbGFibGVXYWl0TGlzdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2Nv
bXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyUHJpdigpLT5hZGRUb1N0eWxlQXZhaWxhYmxlV2Fp
dExpc3QodGhpcyk7CiAKICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgcmVuZGVyIHNvIHdl
IGNhbiBzdGFydCB0aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQpA
QCAtNzc2LDcgKzc3Niw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5l
KEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBib29sIHN0YXJ0ZWQgPSBzdGFydEFuaW1h
dGlvbigwKTsKLSAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5hZGRUb1N0YXJ0VGltZVJlc3Bv
bnNlV2FpdExpc3QodGhpcywgc3RhcnRlZCk7CisgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+
YW5pbWF0aW9uQ29udHJvbGxlclByaXYoKS0+YWRkVG9TdGFydFRpbWVSZXNwb25zZVdhaXRMaXN0
KHRoaXMsIHN0YXJ0ZWQpOwogICAgICAgICAgICAgICAgIG1fZmFsbGJhY2tBbmltYXRpbmcgPSAh
c3RhcnRlZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtODkyLDcgKzg5
Miw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlu
cHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgICAgICAgICAgbV9mYWxsYmFja0FuaW1h
dGluZyA9IHRydWU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGJvb2wg
c3RhcnRlZCA9IHN0YXJ0QW5pbWF0aW9uKDApOwotICAgICAgICAgICAgICAgIG1fY29tcEFuaW0t
PmFkZFRvU3RhcnRUaW1lUmVzcG9uc2VXYWl0TGlzdCh0aGlzLCBzdGFydGVkKTsKKyAgICAgICAg
ICAgICAgICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyUHJpdigpLT5hZGRUb1N0YXJ0
VGltZVJlc3BvbnNlV2FpdExpc3QodGhpcywgc3RhcnRlZCk7CiAgICAgICAgICAgICAgICAgbV9m
YWxsYmFja0FuaW1hdGluZyA9ICFzdGFydGVkOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
aCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCmluZGV4IDgyNjYzMDIu
LjIyYzc1ZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVGltaW5nRnVuY3Rpb247CiAKIGNs
YXNzIEFuaW1hdGlvbkJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRpb25CYXNlPiB7Ci0g
ICAgZnJpZW5kIGNsYXNzIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU7CisgICAgZnJpZW5kIGNs
YXNzIENvbXBvc2l0ZUFuaW1hdGlvbjsKIAogcHVibGljOgogICAgIEFuaW1hdGlvbkJhc2UoY29u
c3QgQW5pbWF0aW9uKiB0cmFuc2l0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDb21wb3Np
dGVBbmltYXRpb24qIGNvbXBBbmltKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9z
aXRlQW5pbWF0aW9uLmNwcAppbmRleCA2NWRjYmI2Li44NmI2MDdlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBAIC0zOCw3OCArMzgsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRl
IHsKLXB1YmxpYzoKLSAgICBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlKEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlKiBhbmltYXRpb25Db250cm9sbGVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNv
bXBvc2l0ZUFuaW1hdGlvbikKLSAgICAgICAgOiBtX2lzU3VzcGVuZGVkKGZhbHNlKQotICAgICAg
ICAsIG1fYW5pbWF0aW9uQ29udHJvbGxlcihhbmltYXRpb25Db250cm9sbGVyKQotICAgICAgICAs
IG1fY29tcG9zaXRlQW5pbWF0aW9uKGNvbXBvc2l0ZUFuaW1hdGlvbikKLSAgICAgICAgLCBtX251
bVN0eWxlQXZhaWxhYmxlV2FpdGVycygwKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgfkNvbXBv
c2l0ZUFuaW1hdGlvblByaXZhdGUoKTsKLQotICAgIHZvaWQgY2xlYXJSZW5kZXJlcigpOwotCi0g
ICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZShSZW5kZXJPYmplY3QqLCBSZW5kZXJT
dHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpOwotICAgIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGdldEFuaW1hdGVkU3R5bGUoKTsKLQotICAgIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlKiBhbmltYXRpb25Db250cm9sbGVyUHJpdigpIGNvbnN0IHsgcmV0dXJu
IG1fYW5pbWF0aW9uQ29udHJvbGxlcjsgfQotCi0gICAgdm9pZCBzZXRBbmltYXRpbmcoYm9vbCk7
Ci0gICAgZG91YmxlIHdpbGxOZWVkU2VydmljZSgpIGNvbnN0OwotICAgIAotICAgIFBhc3NSZWZQ
dHI8S2V5ZnJhbWVBbmltYXRpb24+IGdldEFuaW1hdGlvbkZvclByb3BlcnR5KGludCBwcm9wZXJ0
eSk7Ci0KLSAgICB2b2lkIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0Kik7
Ci0KLSAgICB2b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7Ci0gICAgdm9pZCByZXN1bWVBbmltYXRp
b25zKCk7Ci0gICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5k
ZWQ7IH0KLQotICAgIHZvaWQgb3ZlcnJpZGVJbXBsaWNpdEFuaW1hdGlvbnMoaW50IHByb3BlcnR5
KTsKLSAgICB2b2lkIHJlc3VtZU92ZXJyaWRkZW5JbXBsaWNpdEFuaW1hdGlvbnMoaW50IHByb3Bl
cnR5KTsKLQotICAgIGJvb2wgaGFzQW5pbWF0aW9ucygpIGNvbnN0ICB7IHJldHVybiAhbV90cmFu
c2l0aW9ucy5pc0VtcHR5KCkgfHwgIW1fa2V5ZnJhbWVBbmltYXRpb25zLmlzRW1wdHkoKTsgfQot
Ci0gICAgYm9vbCBpc0FuaW1hdGluZ1Byb3BlcnR5KGludCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5p
bmdOb3cpIGNvbnN0OwotCi0gICAgdm9pZCBhZGRUb1N0eWxlQXZhaWxhYmxlV2FpdExpc3QoQW5p
bWF0aW9uQmFzZSopOwotICAgIHZvaWQgcmVtb3ZlRnJvbVN0eWxlQXZhaWxhYmxlV2FpdExpc3Qo
QW5pbWF0aW9uQmFzZSopOwotCi0gICAgdm9pZCBhZGRUb1N0YXJ0VGltZVJlc3BvbnNlV2FpdExp
c3QoQW5pbWF0aW9uQmFzZSosIGJvb2wgd2lsbEdldFJlc3BvbnNlKTsKLSAgICB2b2lkIHJlbW92
ZUZyb21TdGFydFRpbWVSZXNwb25zZVdhaXRMaXN0KEFuaW1hdGlvbkJhc2UqKTsKLQotICAgIGJv
b2wgcGF1c2VBbmltYXRpb25BdFRpbWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUg
dCk7Ci0gICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoaW50IHByb3BlcnR5LCBkb3VibGUg
dCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3Q7Ci0KLXBy
b3RlY3RlZDoKLSAgICB2b2lkIHVwZGF0ZVRyYW5zaXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7Ci0gICAgdm9p
ZCB1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKLQotcHJpdmF0ZToKLSAgICB0
eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8SW1wbGljaXRBbmltYXRpb24+ID4gQ1NTUHJvcGVy
dHlUcmFuc2l0aW9uc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4gPiAgQW5pbWF0aW9uTmFtZU1hcDsKLQotICAgIENT
U1Byb3BlcnR5VHJhbnNpdGlvbnNNYXAgbV90cmFuc2l0aW9uczsKLSAgICBBbmltYXRpb25OYW1l
TWFwIG1fa2V5ZnJhbWVBbmltYXRpb25zOwotICAgIFZlY3RvcjxBdG9taWNTdHJpbmdJbXBsKj4g
bV9rZXlmcmFtZUFuaW1hdGlvbk9yZGVyTWFwOwotICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKLSAg
ICBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSogbV9hbmltYXRpb25Db250cm9sbGVyOwotICAg
IENvbXBvc2l0ZUFuaW1hdGlvbiogbV9jb21wb3NpdGVBbmltYXRpb247Ci0gICAgdW5zaWduZWQg
bV9udW1TdHlsZUF2YWlsYWJsZVdhaXRlcnM7Ci19OwotCi1Db21wb3NpdGVBbmltYXRpb25Qcml2
YXRlOjp+Q29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZSgpCitDb21wb3NpdGVBbmltYXRpb246On5D
b21wb3NpdGVBbmltYXRpb24oKQogewogICAgIC8vIFRvc3MgdGhlIHJlZnMgdG8gYWxsIGFuaW1h
dGlvbnMKICAgICBtX3RyYW5zaXRpb25zLmNsZWFyKCk7CiAgICAgbV9rZXlmcmFtZUFuaW1hdGlv
bnMuY2xlYXIoKTsKIH0KIAotdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpjbGVhclJl
bmRlcmVyKCkKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhclJlbmRlcmVyKCkKIHsKICAg
ICBpZiAoIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIENsZWFyIHRoZSBy
ZW5kZXJlcnMgZnJvbSBhbGwgcnVubmluZyBhbmltYXRpb25zLCBpbiBjYXNlIHdlIGFyZSBpbiB0
aGUgbWlkZGxlIG9mCkBAIC0xMjksNyArNjUsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvblBy
aXZhdGU6OmNsZWFyUmVuZGVyZXIoKQogICAgIH0KIH0KIAotdm9pZCBDb21wb3NpdGVBbmltYXRp
b25Qcml2YXRlOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCit2b2lkIENv
bXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKQog
ewogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbW9kaWZpZWRDdXJyZW50U3R5bGU7CiAgICAgCkBA
IC0yMDQsNyArMTQwLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjp1cGRhdGVU
cmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXIKICAgICAgICAgICAgIC8v
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ3ODc+CiAgICAgICAg
ICAgICBpZiAoIWVxdWFsICYmIGlzQWN0aXZlVHJhbnNpdGlvbikgewogICAgICAgICAgICAgICAg
IC8vIEFkZCB0aGUgbmV3IHRyYW5zaXRpb24KLSAgICAgICAgICAgICAgICBtX3RyYW5zaXRpb25z
LnNldChwcm9wLCBJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKGNvbnN0X2Nhc3Q8QW5pbWF0aW9u
Kj4oYW5pbSksIHByb3AsIHJlbmRlcmVyLCBtX2NvbXBvc2l0ZUFuaW1hdGlvbiwgbW9kaWZpZWRD
dXJyZW50U3R5bGUgPyBtb2RpZmllZEN1cnJlbnRTdHlsZS5nZXQoKSA6IGZyb21TdHlsZSkpOwor
ICAgICAgICAgICAgICAgIG1fdHJhbnNpdGlvbnMuc2V0KHByb3AsIEltcGxpY2l0QW5pbWF0aW9u
OjpjcmVhdGUoY29uc3RfY2FzdDxBbmltYXRpb24qPihhbmltKSwgcHJvcCwgcmVuZGVyZXIsIHRo
aXMsIG1vZGlmaWVkQ3VycmVudFN0eWxlID8gbW9kaWZpZWRDdXJyZW50U3R5bGUuZ2V0KCkgOiBm
cm9tU3R5bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
V2Ugb25seSBuZWVkIG9uZSBwYXNzIGZvciB0aGUgc2luZ2xlIHByb3AgY2FzZQpAQCAtMjE0LDcg
KzE1MCw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6dXBkYXRlVHJhbnNpdGlv
bnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyCiAgICAgfQogfQogCi12b2lkIENvbXBv
c2l0ZUFuaW1hdGlvblByaXZhdGU6OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFy
Z2V0U3R5bGUpCit2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRp
b25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJl
bmRlclN0eWxlKiB0YXJnZXRTdHlsZSkKIHsKICAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIHdlIGRv
bid0IGhhdmUgYW55IGFuaW1hdGlvbnMsIGFuZCBkaWRuJ3QgaGF2ZSBhbnkgYmVmb3JlCiAgICAg
aWYgKG1fa2V5ZnJhbWVBbmltYXRpb25zLmlzRW1wdHkoKSAmJiAhdGFyZ2V0U3R5bGUtPmhhc0Fu
aW1hdGlvbnMoKSkKQEAgLTI1NSw3ICsxOTEsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvblBy
aXZhdGU6OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLAog
ICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0QW5pbWF0aW9uKGFuaW0pOwogICAgICAg
ICAgICAgICAgIGtleWZyYW1lQW5pbS0+c2V0SW5kZXgoaSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKChhbmltLT5kdXJhdGlvbigpIHx8IGFuaW0tPmRlbGF5KCkpICYmIGFuaW0tPml0ZXJhdGlv
bkNvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBrZXlmcmFtZUFuaW0gPSBLZXlmcmFtZUFuaW1h
dGlvbjo6Y3JlYXRlKGNvbnN0X2Nhc3Q8QW5pbWF0aW9uKj4oYW5pbSksIHJlbmRlcmVyLCBpLCBt
X2NvbXBvc2l0ZUFuaW1hdGlvbiwgY3VycmVudFN0eWxlID8gY3VycmVudFN0eWxlIDogdGFyZ2V0
U3R5bGUpOworICAgICAgICAgICAgICAgIGtleWZyYW1lQW5pbSA9IEtleWZyYW1lQW5pbWF0aW9u
OjpjcmVhdGUoY29uc3RfY2FzdDxBbmltYXRpb24qPihhbmltKSwgcmVuZGVyZXIsIGksIHRoaXMs
IGN1cnJlbnRTdHlsZSA/IGN1cnJlbnRTdHlsZSA6IHRhcmdldFN0eWxlKTsKICAgICAgICAgICAg
ICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5zZXQoa2V5ZnJhbWVBbmltLT5uYW1lKCkuaW1wbCgp
LCBrZXlmcmFtZUFuaW0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC0yNzksNyAr
MjE1LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjp1cGRhdGVLZXlmcmFtZUFu
aW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwKICAgICAgICAgbV9rZXlmcmFtZUFuaW1h
dGlvbnMucmVtb3ZlKGFuaW1zVG9CZVJlbW92ZWRbal0pOwogfQogCi1QYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjphbmltYXRlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRT
dHlsZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogdGFyZ2V0U3R5bGUpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByZXN1bHRT
dHlsZTsKIApAQCAtMjk2LDcgKzIzMiw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBv
c2l0ZUFuaW1hdGlvblByaXZhdGU6OmFuaW1hdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBt
X3RyYW5zaXRpb25zLmVuZCgpOwogICAgICAgICAgICAgZm9yIChDU1NQcm9wZXJ0eVRyYW5zaXRp
b25zTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fdHJhbnNpdGlvbnMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgaWYgKEltcGxpY2l0QW5pbWF0aW9uKiBhbmlt
ID0gaXQtPnNlY29uZC5nZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgYW5pbS0+YW5pbWF0ZSht
X2NvbXBvc2l0ZUFuaW1hdGlvbiwgcmVuZGVyZXIsIGN1cnJlbnRTdHlsZSwgdGFyZ2V0U3R5bGUs
IHJlc3VsdFN0eWxlKTsKKyAgICAgICAgICAgICAgICAgICAgYW5pbS0+YW5pbWF0ZSh0aGlzLCBy
ZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJnZXRTdHlsZSwgcmVzdWx0U3R5bGUpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzA2LDcgKzI0Miw3IEBAIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OmFuaW1hdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlCiAgICAgZm9yIChWZWN0b3I8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fa2V5ZnJhbWVBbmltYXRpb25PcmRlck1hcC5iZWdpbigpOyBpdCAhPSBt
X2tleWZyYW1lQW5pbWF0aW9uT3JkZXJNYXAuZW5kKCk7ICsraXQpIHsKICAgICAgICAgUmVmUHRy
PEtleWZyYW1lQW5pbWF0aW9uPiBrZXlmcmFtZUFuaW0gPSBtX2tleWZyYW1lQW5pbWF0aW9ucy5n
ZXQoKml0KTsKICAgICAgICAgaWYgKGtleWZyYW1lQW5pbSkKLSAgICAgICAgICAgIGtleWZyYW1l
QW5pbS0+YW5pbWF0ZShtX2NvbXBvc2l0ZUFuaW1hdGlvbiwgcmVuZGVyZXIsIGN1cnJlbnRTdHls
ZSwgdGFyZ2V0U3R5bGUsIHJlc3VsdFN0eWxlKTsKKyAgICAgICAgICAgIGtleWZyYW1lQW5pbS0+
YW5pbWF0ZSh0aGlzLCByZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJnZXRTdHlsZSwgcmVzdWx0
U3R5bGUpOwogICAgIH0KIAogICAgIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMocmVuZGVyZXIp
OwpAQCAtMzE0LDcgKzI1MCw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFu
aW1hdGlvblByaXZhdGU6OmFuaW1hdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgcmV0dXJu
IHJlc3VsdFN0eWxlID8gcmVzdWx0U3R5bGUucmVsZWFzZSgpIDogdGFyZ2V0U3R5bGU7CiB9CiAK
LVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OmdldEFu
aW1hdGVkU3R5bGUoKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9u
OjpnZXRBbmltYXRlZFN0eWxlKCkgY29uc3QKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJl
c3VsdFN0eWxlOwogICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fdHJhbnNpdGlvbnMuZW5kKCk7CkBAIC0zMzMsNyArMjY5LDcgQEAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHls
ZSgpCiB9CiAKIC8vICJhbmltYXRpbmciIG1lYW5zIHRoYXQgc29tZXRoaW5nIGlzIHJ1bm5pbmcg
dGhhdCByZXF1aXJlcyB0aGUgdGltZXIgdG8ga2VlcCBmaXJpbmcKLXZvaWQgQ29tcG9zaXRlQW5p
bWF0aW9uUHJpdmF0ZTo6c2V0QW5pbWF0aW5nKGJvb2wgYW5pbWF0aW5nKQordm9pZCBDb21wb3Np
dGVBbmltYXRpb246OnNldEFuaW1hdGluZyhib29sIGFuaW1hdGluZykKIHsKICAgICBpZiAoIW1f
dHJhbnNpdGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNN
YXA6OmNvbnN0X2l0ZXJhdG9yIHRyYW5zaXRpb25zRW5kID0gbV90cmFuc2l0aW9ucy5lbmQoKTsK
QEAgLTM1MSw3ICsyODcsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OnNldEFu
aW1hdGluZyhib29sIGFuaW1hdGluZykKICAgICB9CiB9CiAKLWRvdWJsZSBDb21wb3NpdGVBbmlt
YXRpb25Qcml2YXRlOjp3aWxsTmVlZFNlcnZpY2UoKSBjb25zdAorZG91YmxlIENvbXBvc2l0ZUFu
aW1hdGlvbjo6d2lsbE5lZWRTZXJ2aWNlKCkgY29uc3QKIHsKICAgICAvLyBSZXR1cm5zIHRoZSB0
aW1lIGF0IHdoaWNoIG5leHQgc2VydmljZSBpcyByZXF1aXJlZC4gLTEgbWVhbnMgbm8gc2Vydmlj
ZSBpcyByZXF1aXJlZC4gMCBtZWFucyAKICAgICAvLyBzZXJ2aWNlIGlzIHJlcXVpcmVkIG5vdywg
YW5kID4gMCBtZWFucyBzZXJ2aWNlIGlzIHJlcXVpcmVkIHRoYXQgbWFueSBzZWNvbmRzIGluIHRo
ZSBmdXR1cmUuCkBAIC0zODMsNyArMzE5LDcgQEAgZG91YmxlIENvbXBvc2l0ZUFuaW1hdGlvblBy
aXZhdGU6OndpbGxOZWVkU2VydmljZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1pblQ7CiB9CiAKLVBh
c3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+IENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6Omdl
dEFuaW1hdGlvbkZvclByb3BlcnR5KGludCBwcm9wZXJ0eSkKK1Bhc3NSZWZQdHI8S2V5ZnJhbWVB
bmltYXRpb24+IENvbXBvc2l0ZUFuaW1hdGlvbjo6Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkoaW50
IHByb3BlcnR5KSBjb25zdAogewogICAgIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4gcmV0dmFs
OwogICAgIApAQCAtNDAxLDcgKzMzNyw3IEBAIFBhc3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+
IENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OmdldEFuaW1hdGlvbkZvclByb3BlcnR5CiAgICAg
cmV0dXJuIHJldHZhbDsKIH0KIAotdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpjbGVh
bnVwRmluaXNoZWRBbmltYXRpb25zKFJlbmRlck9iamVjdCopCit2b2lkIENvbXBvc2l0ZUFuaW1h
dGlvbjo6Y2xlYW51cEZpbmlzaGVkQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqKQogewogICAgIGlm
IChpc1N1c3BlbmRlZCgpKQogICAgICAgICByZXR1cm47CkBAIC00NDUsNyArMzgxLDcgQEAgdm9p
ZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpjbGVhbnVwRmluaXNoZWRBbmltYXRpb25zKFJl
bmRlck9iamVjdCopCiAgICAgfQogfQogCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6
OnN1c3BlbmRBbmltYXRpb25zKCkKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5p
bWF0aW9ucygpCiB7CiAgICAgaWYgKG1faXNTdXNwZW5kZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTQ2OSw3ICs0MDUsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OnN1c3BlbmRB
bmltYXRpb25zKCkKICAgICB9CiB9CiAKLXZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6
cmVzdW1lQW5pbWF0aW9ucygpCit2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lQW5pbWF0
aW9ucygpCiB7CiAgICAgaWYgKCFtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CkBAIC00
OTUsNyArNDMxLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpyZXN1bWVBbmlt
YXRpb25zKCkKICAgICB9CiB9CiAKLXZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6b3Zl
cnJpZGVJbXBsaWNpdEFuaW1hdGlvbnMoaW50IHByb3BlcnR5KQordm9pZCBDb21wb3NpdGVBbmlt
YXRpb246Om92ZXJyaWRlSW1wbGljaXRBbmltYXRpb25zKGludCBwcm9wZXJ0eSkKIHsKICAgICBD
U1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3RyYW5zaXRp
b25zLmVuZCgpOwogICAgIGlmICghbV90cmFuc2l0aW9ucy5pc0VtcHR5KCkpIHsKQEAgLTUwNyw3
ICs0NDMsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6Om92ZXJyaWRlSW1wbGlj
aXRBbmltYXRpb25zKGludCBwcm9wZXJ0eSkKICAgICB9CiB9CiAKLXZvaWQgQ29tcG9zaXRlQW5p
bWF0aW9uUHJpdmF0ZTo6cmVzdW1lT3ZlcnJpZGRlbkltcGxpY2l0QW5pbWF0aW9ucyhpbnQgcHJv
cGVydHkpCit2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1lT3ZlcnJpZGRlbkltcGxpY2l0
QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpCiB7CiAgICAgaWYgKCFtX3RyYW5zaXRpb25zLmlzRW1w
dHkoKSkgewogICAgICAgICBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtX3RyYW5zaXRpb25zLmVuZCgpOwpAQCAtNTE5LDcgKzQ1NSw3IEBAIHZvaWQgQ29t
cG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6cmVzdW1lT3ZlcnJpZGRlbkltcGxpY2l0QW5pbWF0aW9u
cyhpbnQgcHJvcGVydHkpCiAgICAgfQogfQogCi1ib29sIENvbXBvc2l0ZUFuaW1hdGlvblByaXZh
dGU6OmlzQW5pbWF0aW5nUHJvcGVydHkoaW50IHByb3BlcnR5LCBib29sIGlzUnVubmluZ05vdykg
Y29uc3QKK2Jvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjppc0FuaW1hdGluZ1Byb3BlcnR5KGludCBw
cm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2tleWZyYW1l
QW5pbWF0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgQW5pbWF0aW9uTmFtZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fa2V5ZnJhbWVBbmltYXRpb25zLmVuZCgpOwpAQCAt
NTQxLDI3ICs0NzcsNyBAQCBib29sIENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OmlzQW5pbWF0
aW5nUHJvcGVydHkoaW50IHByb3BlcnR5LCBib29sIGlzUnVubmluZwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjphZGRUb1N0eWxlQXZhaWxh
YmxlV2FpdExpc3QoQW5pbWF0aW9uQmFzZSogYW5pbWF0aW9uKQotewotICAgIG1fYW5pbWF0aW9u
Q29udHJvbGxlci0+YWRkVG9TdHlsZUF2YWlsYWJsZVdhaXRMaXN0KGFuaW1hdGlvbik7Ci19Ci0K
LXZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0ZTo6cmVtb3ZlRnJvbVN0eWxlQXZhaWxhYmxl
V2FpdExpc3QoQW5pbWF0aW9uQmFzZSogYW5pbWF0aW9uKQotewotICAgIG1fYW5pbWF0aW9uQ29u
dHJvbGxlci0+cmVtb3ZlRnJvbVN0eWxlQXZhaWxhYmxlV2FpdExpc3QoYW5pbWF0aW9uKTsKLX0K
LQotdm9pZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjphZGRUb1N0YXJ0VGltZVJlc3BvbnNl
V2FpdExpc3QoQW5pbWF0aW9uQmFzZSogYW5pbWF0aW9uLCBib29sIHdpbGxHZXRSZXNwb25zZSkK
LXsKLSAgICBtX2FuaW1hdGlvbkNvbnRyb2xsZXItPmFkZFRvU3RhcnRUaW1lUmVzcG9uc2VXYWl0
TGlzdChhbmltYXRpb24sIHdpbGxHZXRSZXNwb25zZSk7Ci19Ci0KLXZvaWQgQ29tcG9zaXRlQW5p
bWF0aW9uUHJpdmF0ZTo6cmVtb3ZlRnJvbVN0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QoQW5pbWF0
aW9uQmFzZSogYW5pbWF0aW9uKQotewotICAgIG1fYW5pbWF0aW9uQ29udHJvbGxlci0+cmVtb3Zl
RnJvbVN0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QoYW5pbWF0aW9uKTsKLX0KLQotYm9vbCBDb21w
b3NpdGVBbmltYXRpb25Qcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGRvdWJsZSB0KQorYm9vbCBDb21wb3NpdGVBbmltYXRpb246OnBhdXNlQW5p
bWF0aW9uQXRUaW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpCiB7CiAgICAg
aWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01NzksNyArNDk1LDcgQEAgYm9v
bCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ29tcG9z
aXRlQW5pbWF0aW9uUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKGludCBwcm9wZXJ0eSwg
ZG91YmxlIHQpCitib29sIENvbXBvc2l0ZUFuaW1hdGlvbjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1l
KGludCBwcm9wZXJ0eSwgZG91YmxlIHQpCiB7CiAgICAgaWYgKChwcm9wZXJ0eSA8IGZpcnN0Q1NT
UHJvcGVydHkpIHx8IChwcm9wZXJ0eSA+PSBmaXJzdENTU1Byb3BlcnR5ICsgbnVtQ1NTUHJvcGVy
dGllcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU5Niw3ICs1MTIsNyBAQCBib29sIENv
bXBvc2l0ZUFuaW1hdGlvblByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShpbnQgcHJvcGVy
dHksIGRvdWJsZSB0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdW5zaWduZWQgQ29tcG9zaXRl
QW5pbWF0aW9uUHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKK3Vuc2ln
bmVkIENvbXBvc2l0ZUFuaW1hdGlvbjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgCkBAIC02MjEsMTE5ICs1MzcsNCBAQCB1
bnNpZ25lZCBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoKSBjb25zdAogICAgIHJldHVybiBjb3VudDsKIH0KIAotQ29tcG9zaXRlQW5pbWF0aW9uOjpD
b21wb3NpdGVBbmltYXRpb24oQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUqIGFuaW1hdGlvbkNv
bnRyb2xsZXIpCi0gICAgOiBtX2RhdGEobmV3IENvbXBvc2l0ZUFuaW1hdGlvblByaXZhdGUoYW5p
bWF0aW9uQ29udHJvbGxlciwgdGhpcykpCi17Ci19Ci0KLUNvbXBvc2l0ZUFuaW1hdGlvbjo6fkNv
bXBvc2l0ZUFuaW1hdGlvbigpCi17Ci0gICAgZGVsZXRlIG1fZGF0YTsKLX0KLQotQW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGUqIENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0aW9uQ29udHJvbGxl
clByaXYoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEtPmFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2KCk7IAotfQotCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6Y2xlYXJSZW5kZXJlcigpCi17
Ci0gICAgbV9kYXRhLT5jbGVhclJlbmRlcmVyKCk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5pbWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBS
ZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCi17Ci0g
ICAgcmV0dXJuIG1fZGF0YS0+YW5pbWF0ZShyZW5kZXJlciwgY3VycmVudFN0eWxlLCB0YXJnZXRT
dHlsZSk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6
Z2V0QW5pbWF0ZWRTdHlsZSgpCi17Ci0gICAgcmV0dXJuIG1fZGF0YS0+Z2V0QW5pbWF0ZWRTdHls
ZSgpOwotfQotCi1kb3VibGUgQ29tcG9zaXRlQW5pbWF0aW9uOjp3aWxsTmVlZFNlcnZpY2UoKSBj
b25zdAotewotICAgIHJldHVybiBtX2RhdGEtPndpbGxOZWVkU2VydmljZSgpOwotfQotCi12b2lk
IENvbXBvc2l0ZUFuaW1hdGlvbjo6YWRkVG9TdHlsZUF2YWlsYWJsZVdhaXRMaXN0KEFuaW1hdGlv
bkJhc2UqIGFuaW1hdGlvbikKLXsKLSAgICBtX2RhdGEtPmFkZFRvU3R5bGVBdmFpbGFibGVXYWl0
TGlzdChhbmltYXRpb24pOwotfQotCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVtb3ZlRnJv
bVN0eWxlQXZhaWxhYmxlV2FpdExpc3QoQW5pbWF0aW9uQmFzZSogYW5pbWF0aW9uKQotewotICAg
IG1fZGF0YS0+cmVtb3ZlRnJvbVN0eWxlQXZhaWxhYmxlV2FpdExpc3QoYW5pbWF0aW9uKTsKLX0K
LQotdm9pZCBDb21wb3NpdGVBbmltYXRpb246OmFkZFRvU3RhcnRUaW1lUmVzcG9uc2VXYWl0TGlz
dChBbmltYXRpb25CYXNlKiBhbmltYXRpb24sIGJvb2wgd2lsbEdldFJlc3BvbnNlKQotewotICAg
IG1fZGF0YS0+YWRkVG9TdGFydFRpbWVSZXNwb25zZVdhaXRMaXN0KGFuaW1hdGlvbiwgd2lsbEdl
dFJlc3BvbnNlKTsKLX0KLQotdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnJlbW92ZUZyb21TdGFy
dFRpbWVSZXNwb25zZVdhaXRMaXN0KEFuaW1hdGlvbkJhc2UqIGFuaW1hdGlvbikKLXsKLSAgICBt
X2RhdGEtPnJlbW92ZUZyb21TdGFydFRpbWVSZXNwb25zZVdhaXRMaXN0KGFuaW1hdGlvbik7Ci19
Ci0KLXZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjpzdXNwZW5kQW5pbWF0aW9ucygpCi17Ci0gICAg
bV9kYXRhLT5zdXNwZW5kQW5pbWF0aW9ucygpOwotfQotCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlv
bjo6cmVzdW1lQW5pbWF0aW9ucygpCi17Ci0gICAgbV9kYXRhLT5yZXN1bWVBbmltYXRpb25zKCk7
Ci19Ci0KLWJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjppc1N1c3BlbmRlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fZGF0YS0+aXNTdXNwZW5kZWQoKTsKLX0KLQotYm9vbCBDb21wb3NpdGVBbmlt
YXRpb246Omhhc0FuaW1hdGlvbnMoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEtPmhhc0Fu
aW1hdGlvbnMoKTsKLX0KLQotdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnNldEFuaW1hdGluZyhi
b29sIGIpCi17Ci0gICAgbV9kYXRhLT5zZXRBbmltYXRpbmcoYik7Ci19Ci0KLWJvb2wgQ29tcG9z
aXRlQW5pbWF0aW9uOjppc0FuaW1hdGluZ1Byb3BlcnR5KGludCBwcm9wZXJ0eSwgYm9vbCBpc1J1
bm5pbmdOb3cpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+aXNBbmltYXRpbmdQcm9wZXJ0
eShwcm9wZXJ0eSwgaXNSdW5uaW5nTm93KTsKLX0KLQotUGFzc1JlZlB0cjxLZXlmcmFtZUFuaW1h
dGlvbj4gQ29tcG9zaXRlQW5pbWF0aW9uOjpnZXRBbmltYXRpb25Gb3JQcm9wZXJ0eShpbnQgcHJv
cGVydHkpCi17Ci0gICAgcmV0dXJuIG1fZGF0YS0+Z2V0QW5pbWF0aW9uRm9yUHJvcGVydHkocHJv
cGVydHkpOwotfQotCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6b3ZlcnJpZGVJbXBsaWNpdEFu
aW1hdGlvbnMoaW50IHByb3BlcnR5KQotewotICAgIG1fZGF0YS0+b3ZlcnJpZGVJbXBsaWNpdEFu
aW1hdGlvbnMocHJvcGVydHkpOwotfQotCi12b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6cmVzdW1l
T3ZlcnJpZGRlbkltcGxpY2l0QW5pbWF0aW9ucyhpbnQgcHJvcGVydHkpCi17Ci0gICAgbV9kYXRh
LT5yZXN1bWVPdmVycmlkZGVuSW1wbGljaXRBbmltYXRpb25zKHByb3BlcnR5KTsKLX0KLQotYm9v
bCBDb21wb3NpdGVBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uQXRUaW1lKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgZG91YmxlIHQpCi17Ci0gICAgcmV0dXJuIG1fZGF0YS0+cGF1c2VBbmltYXRp
b25BdFRpbWUobmFtZSwgdCk7Ci19Ci0KLWJvb2wgQ29tcG9zaXRlQW5pbWF0aW9uOjpwYXVzZVRy
YW5zaXRpb25BdFRpbWUoaW50IHByb3BlcnR5LCBkb3VibGUgdCkKLXsKLSAgICByZXR1cm4gbV9k
YXRhLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUocHJvcGVydHksIHQpOwotfQotCi11bnNpZ25lZCBD
b21wb3NpdGVBbmltYXRpb246Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fZGF0YS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29t
cG9zaXRlQW5pbWF0aW9uLmggYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1h
dGlvbi5oCmluZGV4IGI1ODU3YWEuLjFiOTQ1NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9Db21wb3NpdGVBbmltYXRpb24uaApAQCAtMzEsMTYgKzMxLDE1IEBACiAKICNpbmNsdWRlICJB
dG9taWNTdHJpbmcuaCIKIAorI2luY2x1ZGUgIkltcGxpY2l0QW5pbWF0aW9uLmgiCisjaW5jbHVk
ZSAiS2V5ZnJhbWVBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFu
aW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOwotY2xhc3MgQ29tcG9zaXRlQW5pbWF0aW9uUHJpdmF0
ZTsKLWNsYXNzIEFuaW1hdGlvbkJhc2U7CiBjbGFzcyBBbmltYXRpb25Db250cm9sbGVyOwotY2xh
c3MgS2V5ZnJhbWVBbmltYXRpb247CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIApAQCAtNTgsMjggKzU3LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUmVuZGVy
ZXIoKTsKIAogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGUoUmVuZGVyT2JqZWN0
KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsK
LSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRBbmltYXRlZFN0eWxlKCk7CisgICAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgZG91
YmxlIHdpbGxOZWVkU2VydmljZSgpIGNvbnN0OwogICAgIAotICAgIEFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlKiBhbmltYXRpb25Db250cm9sbGVyUHJpdigpIGNvbnN0OwotCi0gICAgdm9pZCBh
ZGRUb1N0eWxlQXZhaWxhYmxlV2FpdExpc3QoQW5pbWF0aW9uQmFzZSopOwotICAgIHZvaWQgcmVt
b3ZlRnJvbVN0eWxlQXZhaWxhYmxlV2FpdExpc3QoQW5pbWF0aW9uQmFzZSopOwotCi0gICAgdm9p
ZCBhZGRUb1N0YXJ0VGltZVJlc3BvbnNlV2FpdExpc3QoQW5pbWF0aW9uQmFzZSosIGJvb2wgd2ls
bEdldFJlc3BvbnNlKTsKLSAgICB2b2lkIHJlbW92ZUZyb21TdGFydFRpbWVSZXNwb25zZVdhaXRM
aXN0KEFuaW1hdGlvbkJhc2UqKTsKKyAgICBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSogYW5p
bWF0aW9uQ29udHJvbGxlclByaXYoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbkNvbnRyb2xs
ZXI7IH0KIAogICAgIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFu
aW1hdGlvbnMoKTsKLSAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc1N1
c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdXNwZW5kZWQ7IH0KICAgICAKLSAgICBib29s
IGhhc0FuaW1hdGlvbnMoKSBjb25zdDsKKyAgICBib29sIGhhc0FuaW1hdGlvbnMoKSBjb25zdCAg
eyByZXR1cm4gIW1fdHJhbnNpdGlvbnMuaXNFbXB0eSgpIHx8ICFtX2tleWZyYW1lQW5pbWF0aW9u
cy5pc0VtcHR5KCk7IH0KIAogICAgIHZvaWQgc2V0QW5pbWF0aW5nKGJvb2wpOwogICAgIGJvb2wg
aXNBbmltYXRpbmdQcm9wZXJ0eShpbnQgcHJvcGVydHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25z
dDsKICAgICAKLSAgICBQYXNzUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBnZXRBbmltYXRpb25G
b3JQcm9wZXJ0eShpbnQgcHJvcGVydHkpOworICAgIFBhc3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRp
b24+IGdldEFuaW1hdGlvbkZvclByb3BlcnR5KGludCBwcm9wZXJ0eSkgY29uc3Q7CisKKyAgICB2
b2lkIGNsZWFudXBGaW5pc2hlZEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0Kik7CiAKICAgICB2b2lk
IG92ZXJyaWRlSW1wbGljaXRBbmltYXRpb25zKGludCBwcm9wZXJ0eSk7CiAgICAgdm9pZCByZXN1
bWVPdmVycmlkZGVuSW1wbGljaXRBbmltYXRpb25zKGludCBwcm9wZXJ0eSk7CkBAIC04OSw5ICs4
NCwyNSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ29tcG9zaXRlQW5pbWF0aW9uKEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlKiBhbmltYXRpb25Db250cm9sbGVyKTsKKyAgICBDb21wb3NpdGVBbmltYXRp
b24oQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUqIGFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAg
ICAgIDogbV9hbmltYXRpb25Db250cm9sbGVyKGFuaW1hdGlvbkNvbnRyb2xsZXIpCisgICAgICAg
ICwgbV9udW1TdHlsZUF2YWlsYWJsZVdhaXRlcnMoMCkKKyAgICAgICAgLCBtX2lzU3VzcGVuZGVk
KGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVRyYW5zaXRpb25zKFJlbmRl
ck9iamVjdCosIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRT
dHlsZSk7CisgICAgdm9pZCB1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0Kiwg
UmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKICAg
ICAKLSAgICBDb21wb3NpdGVBbmltYXRpb25Qcml2YXRlKiBtX2RhdGE7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGludCwgUmVmUHRyPEltcGxpY2l0QW5pbWF0aW9uPiA+IENTU1Byb3BlcnR5VHJhbnNp
dGlvbnNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBSZWZQdHI8
S2V5ZnJhbWVBbmltYXRpb24+ID4gIEFuaW1hdGlvbk5hbWVNYXA7CisKKyAgICBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZSogbV9hbmltYXRpb25Db250cm9sbGVyOworICAgIENTU1Byb3BlcnR5
VHJhbnNpdGlvbnNNYXAgbV90cmFuc2l0aW9uczsKKyAgICBBbmltYXRpb25OYW1lTWFwIG1fa2V5
ZnJhbWVBbmltYXRpb25zOworICAgIFZlY3RvcjxBdG9taWNTdHJpbmdJbXBsKj4gbV9rZXlmcmFt
ZUFuaW1hdGlvbk9yZGVyTWFwOworICAgIHVuc2lnbmVkIG1fbnVtU3R5bGVBdmFpbGFibGVXYWl0
ZXJzOworICAgIGJvb2wgbV9pc1N1c3BlbmRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUK
</data>
<flag name="review"
          id="14593"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>