From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1F33C677F1 for ; Thu, 23 Feb 2023 11:24:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233891AbjBWLYQ (ORCPT ); Thu, 23 Feb 2023 06:24:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56242 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233101AbjBWLYQ (ORCPT ); Thu, 23 Feb 2023 06:24:16 -0500 Received: from mg.richtek.com (mg.richtek.com [220.130.44.152]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CFD45E055; Thu, 23 Feb 2023 03:24:10 -0800 (PST) X-MailGates: (flag:4,DYNAMIC,BADHELO,RELAY,NOHOST:PASS)(compute_score:DE LIVER,40,3) Received: from 192.168.10.46 by mg.richtek.com with MailGates ESMTP Server V5.0(14969:0:AUTH_RELAY) (envelope-from ); Thu, 23 Feb 2023 19:23:38 +0800 (CST) Received: from ex4.rt.l (192.168.10.47) by ex3.rt.l (192.168.10.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Thu, 23 Feb 2023 19:23:38 +0800 Received: from linuxcarl2.richtek.com (192.168.10.154) by ex4.rt.l (192.168.10.45) with Microsoft SMTP Server id 15.2.1118.20 via Frontend Transport; Thu, 23 Feb 2023 19:23:38 +0800 From: ChiaEn Wu To: , , , , , , CC: , , , , , , , , ChiaEn Wu Subject: [PATCH v17 RESEND 0/3] Add MediaTek MT6370 PMIC support Date: Thu, 23 Feb 2023 19:23:06 +0800 Message-ID: X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org This patch series add MediaTek MT6370 LED indicator and flashlight support. The MT6370 is a highly-integrated smart power management IC, which includes a single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C & Power Delivery (PD) controller, dual Flash LED current sources, a RGB LED driver, a backlight WLED driver, a display bias driver and a general LDO for portable devices. First, in this series of patches, - 'dt-binding: mfd' and 'mfd driver' have been applied by Lee in v7. https://lore.kernel.org/all/YvJdpq0MWNPQZw5c@google.com/ https://lore.kernel.org/all/YvJdxEpC2cB58Bq9@google.com/ - 'tcpci driver' has been applied by Greg in v8. https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/commit/?h=usb-next&id=c2a8ea5997fdfeb43eda259d5533234c3cae05d7 - 'dt-binding: backlight' and 'backlight driver' have been applied by Lee in v9. https://lore.kernel.org/all/YxYSDSlnOELL2mPF@google.com/ https://lore.kernel.org/all/YxYS7%2FdZI69lMXeh@google.com/ - 'dt-binding: charger', 'charger driver' and 'linear_range.h' patch have been applied by Sebastian in v11. https://lore.kernel.org/all/20220920160857.6qfi66gtmgwesq7g@mercury.elektranox.org/ https://lore.kernel.org/all/20220920161218.dkkfvfomrruebahi@mercury.elektranox.org/ https://lore.kernel.org/all/20220920161238.dswtmyon462324dm@mercury.elektranox.org/ - 'dt-binding: leds: LED Indicator' and 'dt-binding: leds: LED Flash' have been applied by Rob in v12. https://lore.kernel.org/all/166480917702.2250974.12439864185418442009.robh@kernel.org/ - 'ADC driver' has been applied by Jonathan in v14. https://lore.kernel.org/all/20221015162217.41c4c112@jic23-huawei/ Second, the LED RGB driver is based on Andy's patch which moves led_init_default_state_get() to the global header. https://lore.kernel.org/all/20220805154907.32263-3-andriy.shevchenko@linux.intel.com/ In addition, we made some changes for MT6370 LED Flash Kconfig (see v17 section of the change log below). Thank you, ChiaEn Wu --- Change in v17: - In Patch 1/2 (MT6370 LED Indicator): - Update the year of Copyright from 2022 to 2023 - In Patch 2/2 (MT6370 Flash): - Update the year of Copyright from 2022 to 2023 - In Patch 3/3 (Document of MT6370 LED Indicator): - Add MT6370 RGB LED document for describing how the pattern works, each timing period, and the pattern diagram. Change in v16: - In Patch 1/2 (MT6370 LED Indicator): - Remove blank line in the head text. - Move 'pwm_duty' to descrease the size of struct mt6370_pdata. - Move the field 'F_RGB_EN' write out from if/else in 'mt6370_isnk_brightness_set'. - Remove 'dev' in struct mt6370_priv. - Remove the proprety reading for 'linux,default-trigger', led core already did it. - Change the module license from 'GPL v2' to 'GPL' In the head text, already deslcred SPDX license as 'GPL-2.0-only'. - In Patch 2/2 (MT6370 Flash): - Remove blank line in the head text. - For enum, declared the first element as 0 - Remove unusd default state and state define. - For mt6370_priv, 'dev' member only be used once. Remove it. - Refine assign operator for '?:', no need to use brackets for the judgement. - Refine '_mt6370_flash_brightness_set' function for else case. - Modify 'struct led_flash_setting *setting' to 'struct led_flash_setting *s'. This can reduce line count. - Remove the revert logic in 'mt6370_strobe_set' function. No need to do it. - Remove mutex usage in timeout_set and fault_get. Regmap lock already protect it. - Add default label for switch case in fault_get. - Directly assign fwnode as the parameter for 'mt6370_led_register' and 'mt6370_init_flash_config'. - Due to struct mt6370_priv 'dev' member removed, pass 'dev' as the input parameter for 'mt6370_init_flash_config'. - For some if judgement, remove 'num > MT6370_MAX_LEDS'. There's no need to check it. The below code already protect it. - Group mt6360 and mt6370 in Makefile. - SPDX already declared as 'GPL v2-only', change MODULE_LICENSE to 'GPL'. - Add one more author for ChiYuan Huang. Change in v15: - In Patch 2/2 (MT6370 Flash): - Remove 'depends on LEDS_CLASS_FLASH || !LEDS_CLASS_FLASH' in Kconfig Change in v14: - In Patch 3/3 (MT6370 Flash): - Remove unused 'depend on OF' in Kconfig Change in v13: - In Patch 1/5 (dt-bindings: MT6370 LED Indicator): - Remove 'allOf' property - Add '$ref' and 'unevaluatedProperties: false' in 'multi-led' Change in v12: - In Patch 5/5 (MT6370 Flash): - Rename all 'led_flash_setting *s' --> 'led_flash_setting *setting' - Rename 'max_uA' --> 'max_ua' in mt6370_init_flash_properties() Change in v11: - In Patch 1/8 (dt-bindings: MT6370 Charger): - Add more detailed description of irqs. - Adujust the order of irqs Change in v10: - In Patch 6/8 (MT6370 Charger): - Add a feature (disable input current limit) in 'mt6370_chg_init_setting()' - Add the header file for using 'devm_work_autocancel()' and 'devm_delayed_work_autocancel() - Rename 'pwr_rdy' to 'opposite_pwr_rdy' in 'mt6370_chg_pwr_rdy_check()' - Rename enum elements ('MT6370_ATTACH_STAT_ATTACH_BC12_NOT_DONE' --> 'MT6370_ATTACH_STAT_ATTACH_WAIT_FOR_BC12') - Revise the assignment value of 'val.intval' in 'mt6370_chg_pwr_rdy_check()' to make the code easy to read. - Revise the initialization of bc12_work (INIT_WORK() --> using devm_work_autocancel()) and mivr_dwork (INIT_DELAYED_WORK + devm_add_action_or_reset() --> devm_delayed_work_autocancel()) - In Patch 8/8 (MT6370 LED Flashlight): - Add the revert code when '__mt6370_flash_brightness_set()' return failed. - Revise type of 'led_no' (u32 -> u8) - Revise type of 'default_state' (u32 -> enum led_default_state) - Revise the return value of '_mt6370_flash_brightness_set()' - Remove the useless function 'mt6370_init_common_properties()' - Use 'led_init_default_state_get()' to init 'led->default_state' Changes in v9: - In Patch 05/10: - Revise LINEAR_RANGE() and LINEAR_RANGE_IDX() - In Patch 07/10: - Fix wrong 'F_IINLMTSEL' setting in 'mt6370_chg_init_setting()' - Revise the usage of LINEAR_RANGE_IDX() - In Patch 09/10: - Revise the format of the comments. - In Patch 10/10: - Revise the format of the comments. Changes in v8: - In Patch 06/12: - Add linear_range_idx macro for declaring the linear_range struct simply. - In Patch 09/12: - Remove MT6370_CHG_LINEAR_RANGE() macro, and change to use LINEAR_RANGE_IDX() macro - In Patch 10/12: - Add include header file - Remove useless 'enum mt6370_state' because of using 'enum led_default_state' - Revise the calculation of 'val' in 'mt6370_gen_breath_pattern()' - Replace the medthod of getting default-state by using led_init_default_state_get() - In Patch 11/12: - Add missing 'dependency config' in Kconfig - Revise all multi-line comments - In Patch 12/12: - Add missing header file - Remove useledd header file - Revise the comment of 'mt6370_check_vendor_info()' Changes in v7: - In Patch 05/13: - Add the second compatible string for 'mt6372' - Add 'mediatek,bled-exponential-mode-enable' property for enable the exponential mode of backlight brightness - Add validation for the maximum value of 'default-brightness' and 'max-brightness' - In Patch 07/13: - Move '#define MT6370_REG_MAXADDR' to the next line of '#define MT6370_REG_CHG_MASK1' - Rename 'MT6370_REG_ADDRLEN' to 'MT6370_MAX_ADDRLEN' - In Patch 08/13: - Revise 'devm_add_action_or_reset(dev, ...)' to one line - Revise 'return regmap_update_bits(...)' with using positive conditional - In Patch 09/13: - Add AICR(100mA ~ 350mA), ICHG(100mA ~ 800mA) macros - Remove 400mA AICR and 900mA ICHG macros - Revise using 'if-else' to 'switch-case' in mt6370_adc_read_scale() where the adc channel is ibus or ibat - In Patch 10/13: - Revise the method to enable/disable irq - Revise all 'if (ret < 0)' to 'if (ret)' after using mt6370_chg_field_set/get() - Revise all 'OTG' text again - In Patch 11/13: - Add the comment for the union of 'struct mt6370_led' - Revise the wrong description of 'Authors' - Revise some typos (e.g. led --> LED) - Revise 'if (!fwnode_property_read_string())' to 'ret = fwnode_property_read_string()' - Replace 'memcpy(...)' with 'put_unaligned_be24()' in mt6370_gen_breath_pattern() - Replace all 'LED_OFF' with 0 - Remove the redundant assignment in mt6370_mc_pattern_clear() - In Patch 12/13: - Fix the indentation. - For the well defined macro, the parenthesis is needed for input parameters. - Replace some dev_warn to dev_info in 'init_flash_properties'. - Add sentinel comment for the terminator entry of of_device_id. - Use priv->fled_torch_used directly. - Delete 0 in {}. - Use _uA instead of _UA in definition. - Refine the description. - Use usleep_range instead of udelay. - Rename config to LEDS_MT6370_FLASH. - Add missing ">" in copyright. - Change the Kconfig order - In Patch 13/13: - Add support 'exponential mode' property parsing - Add 'return dev_err_probe()' after 'if (IS_ERR(priv->enable_gpio))' - Add 'mt6372' compatible string - Revise Kconfig help text - Revise update()/get() for supporting 16384 steps (MT6372) - Revise all shift usages form using 'ffs() and fls()' to defining the _SHIFT macros. - Revise 'brightness ? 1 : 0' to '!!brightness' in gpiod_set_value() Changes in v6: - In Patch 03/13: - Add 'reg' property of led of multi-led to prevent checking error. - In Patch 08/13: - Convert tcpci as device resource managed with 'devm_add_action_or_reset' api. - Refine remvoe callback. - Refine the commit text from 'this commit add' to 'add'. - In Patch 09/13: - Using 'struct device *dev = &pdev->dev' in probe() - Revise the sixth parameter of regmap_read_poll_timeout() by Replacing '1000' with 'MILLI' - Revise the units of three macros - MT6370_AICR_400MA --> MT6370_AICR_400_mA - MT6370_ICHG_500MA --> MT6370_ICHG_500_mA - MT6370_ICHG_900MA --> MT6370_ICHG_900_mA - In patch 10/13: - Remove the varable (*psy_desc) of struct mt6370_priv - Remove the deprecated usb type (POWER_SUPPLY_TYPE_USB_CDP and POWER_SUPPLY_TYPE_USB_DCP) - Remove useless remove() - Revise all units from mini- to micro- - Revise get/set power_supply_prop (change to directly return get/set regmap_field) - Revise probe() and use devm_add_action_or_reset() for handling of the workqueue/delayed_work/mutex - Revise mt6370_chg_psy_desc - Add '.name = "mt6370-charger"' - Use 'static const' - In patch 11/13: - Remove the 'ko' from mt6370 led Kconfig description. - Add both authors for Alice and ChiYuan. - Use pdata to distinguish the code from mt6370/71 to mt6372. - Instead of 'state' define, use the 'state' enum. - Fix the typo for 'MT6372_PMW_DUTY'. - For pwm_duty define, replace with bit macro - 1. - Refine all the labels from 'out' to 'out_unlock'. - Use struct 'dev' variable and 'dev_err_probe' to optimize the LOC. - Revise for the array initialization from {0} to {}. - Move into rgb folder and rename file name to 'leds-mt6370-rgb'. - Refine the 'comma' usage in struct/enum. - In patch 12/13: - Use 'GENMASK' instead of 'BIT'. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine the return of _mt6370_flash_brightness_set function. - Refine the descriptions. - Use mt6370_clamp() instead of clamp_align(). - Use device resource managed API for v4l2 flash_release. Changes in v5: - In patch 07/13: - Add the comma in the last REGMAP_IRQ_REG_LINE(), DEFINE_RES_IRQ_NAMED() and MFD_CELL_RES() - Add the prefix in the first parameter of all mfd_cell - Move enum and struct mt6370_info to mt6370.h - Remove struct device *dev in struct mt6370_info - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 08/13: - Add comma for the last index of mt6370_reg_init. - Use dev_err_probe to decrease LOC. - Use 'dev' variable to make probe function more clean. - Refine kconfig text. - Remove both 'else' in set_vbus callback. - Remove comma for of_device_id if the assigned member is only one. - In patch 09/13: - Replace using snprintf() with sysfs_emit() in mt6370_adc_read_label() - Remove macro ADC_CONV_TIME_US - Revise all variable ordering - Revise the description of Kconfig help text - Revise MODULE_DESCRIPTION() - In patch 10/13: - Replace unsigned int type of pwr_rdy with bool in mt6370_chg_set_online() - Remove redundant 'else' in mt6370_chg_field_get() - Revise 'if-else' in mt6370_chg_field_set() - Revise 'if' condition in mt6370_chg_enable_irq() - Revise all text 'otg' --> 'OTG' - Revise MT6370_MIVR_IBUS_TH_100_MA --> MT6370_MIVR_IBUS_TH_100_mA - Revise the description of Kconfig help text - In patch 12/13: - Refine the coding style. - Use "dev" instead of "&pdev->dev". - In patch 13/13: - Add missed - Add struct device *dev in probe() to make code cleaning - Remove useless including header file , - Remove useless variable uasage in mt6370_init_backlight_properties() - Remove redundant checking enable_gpio in mt6370_bl_update_status() - Remove redundant parentheses in mt6370_bl_get_brightness() - Revise the description of Kconfig help text - Revise the calculation of hys_th_steps Changes in v4: - In patch 02/13: - Add minItems of "io-channel-names" - Replace text "Mediatek" with "MediaTek" - In patch 06/13: - Roll back all "$ref: " to v2 patch style (using "/schemas/...") - In patch 07/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first break and then return" with "return directly" in "mt6370_check_vendor_info()" - Add module name related description in Kconfig helptext - Add Copyright in the source code - Add header file "mt6370.h" for all "#define IRQ" - Adjust Makefile order of MT6370 - Refine "bank_idx" and "bank_addr" in "mt6375_regmap_read()" / "mt6375_regmap_write()" - Refine redundant "else if" in "mt6370_regmap_read()" - In patch 08/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace "first ret=regulator_(dis/en)able and then return" with "return directly" in "mt6370_tcpc_set_vbus()" - Replace header file with - Add Copyright in the source code - Add module name related description in Kconfig helptext - Remove header file - Refine all probe error by using dev_err_probe() - In patch 09/13: - Replace text "Mediatek" with "MediaTek" - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Add Copyright in the source code - Add module name related description in Kconfig - Add unit suffix of macro "ADC_CONV_POLLING_TIME" - Add new macro "ADC_CONV_TIME_MS" - Adjust the position of include file - Adjust the postions between and - Fix some incorrect characters - In patch 10/13: - Replace text "Mediatek" with "MediaTek" in Kconfig and MODULE_DESCRIPTION() - Replace "mt6370_chg_val_to_reg" and "mt6370_chg_reg_to_val" with "linear_range" API - Replace "first break and then return" with "return directly" in all cases of get/set power_supply_property - Replace all "first dev_err() and then return" with "return dev_err_probe()" - Replace all "return IS_ERR(priv->rdev) ? PTR_ERR(priv->rdev) : 0" with "PTR_ERR_OR_ZERO()" - Replace "priv->dev->of_node" with "dev_of_node()" - Add Copyright in the source code - Add module name related description in Kconfig helptext - Add proper unit of "MT6370_MIVR_IBUS_TH" - Add error check in "mt6370_chg_get_status" - Remove including header file - Remove redundant comma of every enum terminator line - Remove unwanted blank lines - Remove the useless label (toggle_cfo_exit:) - Remove using atomic - Remove using of_match_ptr() - Fix some incorrect characters - Fix updating wrong bits when using ena_gpiod of OTG regulator - Adjust the probe order in probe() - In patch 11/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Replace text "const" with "constant" in Kconfig - Add Copyright in the source code - In patch 12/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - In patch 13/13: - Replace text "Mediatek" with "MediaTek" in Kconfig - Add Copyright in the source code - Revise the comment of "PWM HYS STEPS" Changes in v3: - Remove ADC ABI file, which is added in v2 Patch 7 - In patch 02/14: - Add items and remove maxItems of io-channels - Add io-channel-names and describe each item - Add "unevaluatedProperties: false" in "usb-otg-vbus-regulator" - Rename "enable-gpio" to "enable-gpios" in "usb-otg-vbus-regulator" - In patch 03/14: - Use leds-class-multicolor.yaml instead of common.yaml. - Split multi-led and led node. - Add subdevice "led" in "multi-led". - In patch 04/14: - Remove the description of enum. - In patch 05/14: - Rename "mediatek,bled-pwm-hys-input-threshold-steps" to "mediatek,bled-pwm-hys-input-th-steps" - Refine "bled-pwm-hys-input-th-steps", "bled-ovp-microvolt", "bled-ocp-microamp" enum values - In patch 06/14: - Use " in entire patchset - Refine ADC description - Rename "enable-gpio" to "enable-gpios" in "regualtor" - In patch 07/14: - Refine Kconfig help text - Refine error message of unknown vendor ID in mt6370_check_vendor_info() - Refine return value handling of mt6370_regmap_read() - Refine all probe error by using dev_err_probe() - Refine "bank_idx" and "bank_addr" in mt6370_regmap_read() and mt6370_regmap_write() - Add "#define VENID*" and drop the comments in mt6370_check_vendor_info() - Drop "MFD" in MODULE_DESCRIPTION() - In patch 09/14: - Refine Kconfig help text - In patch 10/14: - Refine Kconfig help text - Refine all channel value in read_scale() a. current: uA --> mA b. voltage: uV --> mV c. temperature: degrees Celsius --> milli degrees Celsius - Add "default:" condition of switch statement in read_scale() and read_raw() - Add error message for reading ADC register failed - Add the comment for adc_lock - Add header file for struct of_device_id - Replace "adc" text with "ADC" in all of the error messages - In patch 12/14: - Refine the grammer of the Kconfig. - Change reg mode to the const current mode. - In patch 14/14: - Refine bool properties parsing (pwm-enable, ovp-shutdown, ocp-shutdown) in DT parsing function - Refine u32 and u8 properties parsing (pwm-hys-input-th-steps, ovp-microvolt, ocp-microamp), from using register value to using actual value - Refine error string of "channle-use" parsing failed - Refine Kconfig help text Changes in v2: - In patch 01/15: - Add "unevaluatedProperties: false". - Delete "DT bindings". - Refine the description to fit in 80 columns. - Skip the connector description. - In patch 02/15: - Refine items description of interrupt-name - Rename "usb-otg-vbus" to "usb-otg-vbus-regulator" - Add constraint properties for ADC - In patch 03/15: - Skip not useful description of "^(multi-)?led@[0-3]$" and reg. - Due to the dependency, remove the mention of mfd document directory. - Delete Soft-start property. In design aspect, we think soft-restart should always be enabled, our new chip has deleted the related setting register , also, we don’t allow user adjust this parameter in this chip. - Refine the commit message. - In patch 04/15: - Skip not useful description of "^led@[0-1]$" and reg. - Add apace after '#'. - Refine the commit message. - In patch 05/15: - Remove "binding documentation" in subject title - Refine description of mt6370 backlight binding document - Refine properties name(bled-pwm-hys-input-bit, bled-ovp-microvolt, bled-ocp-microamp) and their description - In patch 06/15: - Refine ADC and Regulator descriptions - Refine include header usage in example - Refine node name to generic node name("pmic@34") - Refine led example indentation - Refine license of mediatek,mt6370_adc.h - Rename the dts example from IRQ define to number. - Remove mediatek,mt6370.h - In patch 07/15: - Add ABI documentation for mt6370 non-standard ADC sysfs interfaces. - In patch 08/15: - Add all IRQ define into mt6370.c. - Refine include header usage - In patch 09/15: - No changes. - In patch 10/15: - Use 'gpiod_get_from_of_node' to replace 'fwnode_gpiod_get_index'. - In patch 11/15: - Refine Kconfig mt6370 help text - Refine mask&shift to FIELD_PREP() - Refine mutex lock name ("lock" -> "adc_lock") - Refine mt6370_adc_read_scale() - Refine mt6370_adc_read_offset() - Refine mt6370_channel_labels[] by using enum to index chan spec - Refine MT6370_ADC_CHAN() - Refine indio_dev->name - Remove useless include header files - In patch 12/15: - Refine mt6370_chg_otg_rdesc.of_match ("mt6370,otg-vbus" -> "usb-otg-vbus-regulator") to match DT binding - In patch 13/15: - Refine Kconfig description. - Remove include "linux/of.h" and use "linux/mod_devicetable.h". - Place a comma for the last element of the const unsigned int array. - Add a comment line for the mutex 'lock'. - In probe function, use 'dev_err_probe' in some judgement to reduce the LOC. - Refine include header usage. BIT/GENMASK -> linux/bits.h FIELD_GET -> linux/bitfield.h - In patch 14/15: - Add blank line. - Replace container_of() with to_mt6370_led() . - Refine description of ramping. - Refine the mt6370_init_common_properties function. - Refine the probe return. - In patch 15/15: - Refine MT6370 help text in Kconfig - Refine DT Parse function - Remove useless enum - Add comment for 6372 backward compatible in bl_update_status() and check_vendor_info() - Using dev_err_probe(); insteads dev_err()&return; in the probe() ChiYuan Huang (3): leds: rgb: mt6370: Add MediaTek MT6370 current sink type LED Indicator support leds: flash: mt6370: Add MediaTek MT6370 flashlight support docs: leds: Add MT6370 RGB LED pattern document Documentation/leds/leds-mt6370-rgb.rst | 64 ++ drivers/leds/flash/Kconfig | 13 + drivers/leds/flash/Makefile | 1 + drivers/leds/flash/leds-mt6370-flash.c | 596 +++++++++++++++++++ drivers/leds/rgb/Kconfig | 13 + drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-mt6370-rgb.c | 1009 ++++++++++++++++++++++++++++++++ 7 files changed, 1697 insertions(+) create mode 100644 Documentation/leds/leds-mt6370-rgb.rst create mode 100644 drivers/leds/flash/leds-mt6370-flash.c create mode 100644 drivers/leds/rgb/leds-mt6370-rgb.c -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 22ECAC61DA4 for ; Thu, 23 Feb 2023 11:25:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:CC :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=yBtZbJ+m5Mv6S7e0LbYEcvUcN/0YtZEPXLzg2lXq06Q=; b=MM5KIXbrW36h2j gOC5/mbyhc+0Vm5QG0vEiO4NgXG4QD0LcCA6LqABBCVKvaDLUqZjXYIuVGW3NggebVjGsSNpX6lRP F4t+589Ak5oAv+PN91K7owG+vq6R8XH7goIlGM98lWIm9gxhLl9Pat39X+qXTfJYNp901peOP3z+e 2yt/RM3FPylgISyrCvtUwOlm+cCvg7B6rRQ/5O3JoK4gaTqxTMlIDIiCD1hYugm99lLUmP+NB+19M 0wWkXrcjsPqjKcCuktFLYImP/pX3mpD+rWaZDZLrb+ur74ZegQQteKo0n48VQ4ltnluPVLEspZjDs 2TxHJLnqP5fdsaGoqaTg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV9iO-00G8bO-C2; Thu, 23 Feb 2023 11:24:44 +0000 Received: from mg.richtek.com ([220.130.44.152]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pV9hz-00G8Ob-NI; Thu, 23 Feb 2023 11:24:26 +0000 X-MailGates: (flag:4,DYNAMIC,BADHELO,RELAY,NOHOST:PASS)(compute_score:DE LIVER,40,3) Received: from 192.168.10.46 by mg.richtek.com with MailGates ESMTP Server V5.0(14969:0:AUTH_RELAY) (envelope-from ); Thu, 23 Feb 2023 19:23:38 +0800 (CST) Received: from ex4.rt.l (192.168.10.47) by ex3.rt.l (192.168.10.46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.20; Thu, 23 Feb 2023 19:23:38 +0800 Received: from linuxcarl2.richtek.com (192.168.10.154) by ex4.rt.l (192.168.10.45) with Microsoft SMTP Server id 15.2.1118.20 via Frontend Transport; Thu, 23 Feb 2023 19:23:38 +0800 From: ChiaEn Wu To: , , , , , , CC: , , , , , , , , ChiaEn Wu Subject: [PATCH v17 RESEND 0/3] Add MediaTek MT6370 PMIC support Date: Thu, 23 Feb 2023 19:23:06 +0800 Message-ID: X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230223_032420_440610_55C337E4 X-CRM114-Status: GOOD ( 23.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBwYXRjaCBzZXJpZXMgYWRkIE1lZGlhVGVrIE1UNjM3MCBMRUQgaW5kaWNhdG9yIGFuZCBm bGFzaGxpZ2h0IHN1cHBvcnQuClRoZSBNVDYzNzAgaXMgYSBoaWdobHktaW50ZWdyYXRlZCBzbWFy dCBwb3dlciBtYW5hZ2VtZW50IElDLCB3aGljaCBpbmNsdWRlcwphIHNpbmdsZSBjZWxsIExpLUlv bi9MaS1Qb2x5bWVyIHN3aXRjaGluZyBiYXR0ZXJ5IGNoYXJnZXIsIGEKVVNCIFR5cGUtQyAmIFBv d2VyIERlbGl2ZXJ5IChQRCkgY29udHJvbGxlciwgZHVhbCBGbGFzaCBMRUQgY3VycmVudApzb3Vy Y2VzLCBhIFJHQiBMRUQgZHJpdmVyLCBhIGJhY2tsaWdodCBXTEVEIGRyaXZlciwgYSBkaXNwbGF5 IGJpYXMKZHJpdmVyIGFuZCBhIGdlbmVyYWwgTERPIGZvciBwb3J0YWJsZSBkZXZpY2VzLgoKRmly c3QsIGluIHRoaXMgc2VyaWVzIG9mIHBhdGNoZXMsCi0gJ2R0LWJpbmRpbmc6IG1mZCcgYW5kICdt ZmQgZHJpdmVyJyBoYXZlIGJlZW4gYXBwbGllZCBieSBMZWUgaW4gdjcuCiAgaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsL1l2SmRwcTBNV05QUVp3NWNAZ29vZ2xlLmNvbS8KICBodHRwczovL2xv cmUua2VybmVsLm9yZy9hbGwvWXZKZHhFcEMyY0I1OEJxOUBnb29nbGUuY29tLwoKLSAndGNwY2kg ZHJpdmVyJyBoYXMgYmVlbiBhcHBsaWVkIGJ5IEdyZWcgaW4gdjguCiAgaHR0cHM6Ly9naXQua2Vy bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JlZ2toL3VzYi5naXQvY29tbWl0Lz9o PXVzYi1uZXh0JmlkPWMyYThlYTU5OTdmZGZlYjQzZWRhMjU5ZDU1MzMyMzRjM2NhZTA1ZDcKCi0g J2R0LWJpbmRpbmc6IGJhY2tsaWdodCcgYW5kICdiYWNrbGlnaHQgZHJpdmVyJyBoYXZlIGJlZW4g YXBwbGllZAogIGJ5IExlZSBpbiB2OS4KICBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvWXhZ U0RTbG5PRUxMMm1QRkBnb29nbGUuY29tLwogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC9Z eFlTNyUyRmRaSTY5bE1YZWhAZ29vZ2xlLmNvbS8KCi0gJ2R0LWJpbmRpbmc6IGNoYXJnZXInLCAn Y2hhcmdlciBkcml2ZXInIGFuZCAnbGluZWFyX3JhbmdlLmgnIHBhdGNoIGhhdmUKICBiZWVuIGFw cGxpZWQgYnkgU2ViYXN0aWFuIGluIHYxMS4KICBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwv MjAyMjA5MjAxNjA4NTcuNnFmaTY2Z3RtZ3dlc3E3Z0BtZXJjdXJ5LmVsZWt0cmFub3gub3JnLwog IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIyMDkyMDE2MTIxOC5ka2tmdmZvbXJydWVi YWhpQG1lcmN1cnkuZWxla3RyYW5veC5vcmcvCiAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxs LzIwMjIwOTIwMTYxMjM4LmRzd3RteW9uNDYyMzI0ZG1AbWVyY3VyeS5lbGVrdHJhbm94Lm9yZy8K Ci0gJ2R0LWJpbmRpbmc6IGxlZHM6IExFRCBJbmRpY2F0b3InIGFuZCAnZHQtYmluZGluZzogbGVk czogTEVEIEZsYXNoJyBoYXZlCiAgYmVlbiBhcHBsaWVkIGJ5IFJvYiBpbiB2MTIuCiAgaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzE2NjQ4MDkxNzcwMi4yMjUwOTc0LjEyNDM5ODY0MTg1NDE4 NDQyMDA5LnJvYmhAa2VybmVsLm9yZy8KCi0gJ0FEQyBkcml2ZXInIGhhcyBiZWVuIGFwcGxpZWQg YnkgSm9uYXRoYW4gaW4gdjE0LgogIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDIyMTAx NTE2MjIxNy40MWM0YzExMkBqaWMyMy1odWF3ZWkvCgpTZWNvbmQsIHRoZSBMRUQgUkdCIGRyaXZl ciBpcyBiYXNlZCBvbiBBbmR5J3MgcGF0Y2ggd2hpY2ggbW92ZXMKbGVkX2luaXRfZGVmYXVsdF9z dGF0ZV9nZXQoKSB0byB0aGUgZ2xvYmFsIGhlYWRlci4KaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcv YWxsLzIwMjIwODA1MTU0OTA3LjMyMjYzLTMtYW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwu Y29tLwoKSW4gYWRkaXRpb24sIHdlIG1hZGUgc29tZSBjaGFuZ2VzIGZvciBNVDYzNzAgTEVEIEZs YXNoIEtjb25maWcKKHNlZSB2MTcgc2VjdGlvbiBvZiB0aGUgY2hhbmdlIGxvZyBiZWxvdykuCgpU aGFuayB5b3UsCkNoaWFFbiBXdQotLS0KQ2hhbmdlIGluIHYxNzoKLSBJbiBQYXRjaCAxLzIgKE1U NjM3MCBMRUQgSW5kaWNhdG9yKToKCS0gVXBkYXRlIHRoZSB5ZWFyIG9mIENvcHlyaWdodCBmcm9t IDIwMjIgdG8gMjAyMwoKLSBJbiBQYXRjaCAyLzIgKE1UNjM3MCBGbGFzaCk6CgktIFVwZGF0ZSB0 aGUgeWVhciBvZiBDb3B5cmlnaHQgZnJvbSAyMDIyIHRvIDIwMjMKCi0gSW4gUGF0Y2ggMy8zIChE b2N1bWVudCBvZiBNVDYzNzAgTEVEIEluZGljYXRvcik6CgktIEFkZCBNVDYzNzAgUkdCIExFRCBk b2N1bWVudCBmb3IgZGVzY3JpYmluZyBob3cgdGhlIHBhdHRlcm4gd29ya3MsCgkgIGVhY2ggdGlt aW5nIHBlcmlvZCwgYW5kIHRoZSBwYXR0ZXJuIGRpYWdyYW0uCgoKQ2hhbmdlIGluIHYxNjoKLSBJ biBQYXRjaCAxLzIgKE1UNjM3MCBMRUQgSW5kaWNhdG9yKToKCS0gUmVtb3ZlIGJsYW5rIGxpbmUg aW4gdGhlIGhlYWQgdGV4dC4KCS0gTW92ZSAncHdtX2R1dHknIHRvIGRlc2NyZWFzZSB0aGUgc2l6 ZSBvZiBzdHJ1Y3QgbXQ2MzcwX3BkYXRhLgoJLSBNb3ZlIHRoZSBmaWVsZCAnRl9SR0JfRU4nIHdy aXRlIG91dCBmcm9tIGlmL2Vsc2UgaW4KCSAgJ210NjM3MF9pc25rX2JyaWdodG5lc3Nfc2V0Jy4K CS0gUmVtb3ZlICdkZXYnIGluIHN0cnVjdCBtdDYzNzBfcHJpdi4KCS0gUmVtb3ZlIHRoZSBwcm9w cmV0eSByZWFkaW5nIGZvciAnbGludXgsZGVmYXVsdC10cmlnZ2VyJywgbGVkIGNvcmUKCSAgYWxy ZWFkeSBkaWQgaXQuCgktIENoYW5nZSB0aGUgbW9kdWxlIGxpY2Vuc2UgZnJvbSAnR1BMIHYyJyB0 byAnR1BMJwoJICBJbiB0aGUgaGVhZCB0ZXh0LCBhbHJlYWR5IGRlc2xjcmVkIFNQRFggbGljZW5z ZSBhcyAnR1BMLTIuMC1vbmx5Jy4KCi0gSW4gUGF0Y2ggMi8yIChNVDYzNzAgRmxhc2gpOgoJLSBS ZW1vdmUgYmxhbmsgbGluZSBpbiB0aGUgaGVhZCB0ZXh0LgoJLSBGb3IgZW51bSwgZGVjbGFyZWQg dGhlIGZpcnN0IGVsZW1lbnQgYXMgMAoJLSBSZW1vdmUgdW51c2QgZGVmYXVsdCBzdGF0ZSBhbmQg c3RhdGUgZGVmaW5lLgoJLSBGb3IgbXQ2MzcwX3ByaXYsICdkZXYnIG1lbWJlciBvbmx5IGJlIHVz ZWQgb25jZS4gUmVtb3ZlIGl0LgoJLSBSZWZpbmUgYXNzaWduIG9wZXJhdG9yIGZvciAnPzonLCBu byBuZWVkIHRvIHVzZSBicmFja2V0cyBmb3IgdGhlCgkgIGp1ZGdlbWVudC4KCS0gUmVmaW5lICdf bXQ2MzcwX2ZsYXNoX2JyaWdodG5lc3Nfc2V0JyBmdW5jdGlvbiBmb3IgZWxzZSBjYXNlLgoJLSBN b2RpZnkgJ3N0cnVjdCBsZWRfZmxhc2hfc2V0dGluZyAqc2V0dGluZycgdG8gJ3N0cnVjdAoJICBs ZWRfZmxhc2hfc2V0dGluZyAqcycuIFRoaXMgY2FuIHJlZHVjZSBsaW5lIGNvdW50LgoJLSBSZW1v dmUgdGhlIHJldmVydCBsb2dpYyBpbiAnbXQ2MzcwX3N0cm9iZV9zZXQnIGZ1bmN0aW9uLgoJICBO byBuZWVkIHRvIGRvIGl0LgoJLSBSZW1vdmUgbXV0ZXggdXNhZ2UgaW4gdGltZW91dF9zZXQgYW5k IGZhdWx0X2dldC4KCSAgUmVnbWFwIGxvY2sgYWxyZWFkeSBwcm90ZWN0IGl0LgoJLSBBZGQgZGVm YXVsdCBsYWJlbCBmb3Igc3dpdGNoIGNhc2UgaW4gZmF1bHRfZ2V0LgoJLSBEaXJlY3RseSBhc3Np Z24gZndub2RlIGFzIHRoZSBwYXJhbWV0ZXIgZm9yICdtdDYzNzBfbGVkX3JlZ2lzdGVyJyBhbmQK CSAgJ210NjM3MF9pbml0X2ZsYXNoX2NvbmZpZycuCgktIER1ZSB0byBzdHJ1Y3QgbXQ2MzcwX3By aXYgJ2RldicgbWVtYmVyIHJlbW92ZWQsIHBhc3MgJ2RldicgYXMgdGhlCgkgIGlucHV0IHBhcmFt ZXRlciBmb3IgJ210NjM3MF9pbml0X2ZsYXNoX2NvbmZpZycuCgktIEZvciBzb21lIGlmIGp1ZGdl bWVudCwgcmVtb3ZlICdudW0gPiBNVDYzNzBfTUFYX0xFRFMnLgoJICBUaGVyZSdzIG5vIG5lZWQg dG8gY2hlY2sgaXQuIFRoZSBiZWxvdyBjb2RlIGFscmVhZHkgcHJvdGVjdCBpdC4KCS0gR3JvdXAg bXQ2MzYwIGFuZCBtdDYzNzAgaW4gTWFrZWZpbGUuCgktIFNQRFggYWxyZWFkeSBkZWNsYXJlZCBh cyAnR1BMIHYyLW9ubHknLCBjaGFuZ2UgTU9EVUxFX0xJQ0VOU0UgdG8KCSAgJ0dQTCcuCgktIEFk ZCBvbmUgbW9yZSBhdXRob3IgZm9yIENoaVl1YW4gSHVhbmcuCgoKQ2hhbmdlIGluIHYxNToKLSBJ biBQYXRjaCAyLzIgKE1UNjM3MCBGbGFzaCk6CiAgICAgICAgLSBSZW1vdmUgJ2RlcGVuZHMgb24g TEVEU19DTEFTU19GTEFTSCB8fCAhTEVEU19DTEFTU19GTEFTSCcgaW4gS2NvbmZpZwoKCkNoYW5n ZSBpbiB2MTQ6Ci0gSW4gUGF0Y2ggMy8zIChNVDYzNzAgRmxhc2gpOgogICAgICAgIC0gUmVtb3Zl IHVudXNlZCAnZGVwZW5kIG9uIE9GJyBpbiBLY29uZmlnCgoKQ2hhbmdlIGluIHYxMzoKLSBJbiBQ YXRjaCAxLzUgKGR0LWJpbmRpbmdzOiBNVDYzNzAgTEVEIEluZGljYXRvcik6CiAgICAgICAgLSBS ZW1vdmUgJ2FsbE9mJyBwcm9wZXJ0eQogICAgICAgIC0gQWRkICckcmVmJyBhbmQgJ3VuZXZhbHVh dGVkUHJvcGVydGllczogZmFsc2UnIGluICdtdWx0aS1sZWQnCgoKQ2hhbmdlIGluIHYxMjoKLSBJ biBQYXRjaCA1LzUgKE1UNjM3MCBGbGFzaCk6CiAgICAgICAgLSBSZW5hbWUgYWxsICdsZWRfZmxh c2hfc2V0dGluZyAqcycgLS0+ICdsZWRfZmxhc2hfc2V0dGluZyAqc2V0dGluZycKICAgICAgICAt IFJlbmFtZSAnbWF4X3VBJyAtLT4gJ21heF91YScgaW4gbXQ2MzcwX2luaXRfZmxhc2hfcHJvcGVy dGllcygpCgoKQ2hhbmdlIGluIHYxMToKLSBJbiBQYXRjaCAxLzggKGR0LWJpbmRpbmdzOiBNVDYz NzAgQ2hhcmdlcik6CiAgICAgICAgLSBBZGQgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBp cnFzLgogICAgICAgIC0gQWR1anVzdCB0aGUgb3JkZXIgb2YgaXJxcwoKCkNoYW5nZSBpbiB2MTA6 Ci0gSW4gUGF0Y2ggNi84IChNVDYzNzAgQ2hhcmdlcik6CiAgICAgICAgLSBBZGQgYSBmZWF0dXJl IChkaXNhYmxlIGlucHV0IGN1cnJlbnQgbGltaXQpIGluCiAgICAgICAgICAnbXQ2MzcwX2NoZ19p bml0X3NldHRpbmcoKScKICAgICAgICAtIEFkZCB0aGUgaGVhZGVyIGZpbGUgPGxpbnV4L2Rldm0t aGVscGVycy5oPiBmb3IgdXNpbmcKICAgICAgICAgICdkZXZtX3dvcmtfYXV0b2NhbmNlbCgpJyBh bmQgJ2Rldm1fZGVsYXllZF93b3JrX2F1dG9jYW5jZWwoKQogICAgICAgIC0gUmVuYW1lICdwd3Jf cmR5JyB0byAnb3Bwb3NpdGVfcHdyX3JkeScgaW4KICAgICAgICAgICdtdDYzNzBfY2hnX3B3cl9y ZHlfY2hlY2soKScKICAgICAgICAtIFJlbmFtZSBlbnVtIGVsZW1lbnRzCiAgICAgICAgICAoJ01U NjM3MF9BVFRBQ0hfU1RBVF9BVFRBQ0hfQkMxMl9OT1RfRE9ORScgLS0+CiAgICAgICAgICAgJ01U NjM3MF9BVFRBQ0hfU1RBVF9BVFRBQ0hfV0FJVF9GT1JfQkMxMicpCiAgICAgICAgLSBSZXZpc2Ug dGhlIGFzc2lnbm1lbnQgdmFsdWUgb2YgJ3ZhbC5pbnR2YWwnIGluCiAgICAgICAgICAnbXQ2Mzcw X2NoZ19wd3JfcmR5X2NoZWNrKCknIHRvIG1ha2UgdGhlIGNvZGUgZWFzeSB0byByZWFkLgogICAg ICAgIC0gUmV2aXNlIHRoZSBpbml0aWFsaXphdGlvbiBvZiBiYzEyX3dvcmsgKElOSVRfV09SSygp IC0tPgogICAgICAgICAgdXNpbmcgZGV2bV93b3JrX2F1dG9jYW5jZWwoKSkgYW5kIG1pdnJfZHdv cmsKICAgICAgICAgIChJTklUX0RFTEFZRURfV09SSyArIGRldm1fYWRkX2FjdGlvbl9vcl9yZXNl dCgpIC0tPgogICAgICAgICAgIGRldm1fZGVsYXllZF93b3JrX2F1dG9jYW5jZWwoKSkKCi0gSW4g UGF0Y2ggOC84IChNVDYzNzAgTEVEIEZsYXNobGlnaHQpOgogICAgICAgIC0gQWRkIHRoZSByZXZl cnQgY29kZSB3aGVuICdfX210NjM3MF9mbGFzaF9icmlnaHRuZXNzX3NldCgpJwogICAgICAgICAg cmV0dXJuIGZhaWxlZC4KICAgICAgICAtIFJldmlzZSB0eXBlIG9mICdsZWRfbm8nICh1MzIgLT4g dTgpCiAgICAgICAgLSBSZXZpc2UgdHlwZSBvZiAnZGVmYXVsdF9zdGF0ZScgKHUzMiAtPiBlbnVt IGxlZF9kZWZhdWx0X3N0YXRlKQogICAgICAgIC0gUmV2aXNlIHRoZSByZXR1cm4gdmFsdWUgb2Yg J19tdDYzNzBfZmxhc2hfYnJpZ2h0bmVzc19zZXQoKScKICAgICAgICAtIFJlbW92ZSB0aGUgdXNl bGVzcyBmdW5jdGlvbiAnbXQ2MzcwX2luaXRfY29tbW9uX3Byb3BlcnRpZXMoKScKICAgICAgICAt IFVzZSAnbGVkX2luaXRfZGVmYXVsdF9zdGF0ZV9nZXQoKScgdG8gaW5pdCAnbGVkLT5kZWZhdWx0 X3N0YXRlJwoKCkNoYW5nZXMgaW4gdjk6Ci0gSW4gUGF0Y2ggMDUvMTA6CiAgICAgICAgLSBSZXZp c2UgTElORUFSX1JBTkdFKCkgYW5kIExJTkVBUl9SQU5HRV9JRFgoKQoKLSBJbiBQYXRjaCAwNy8x MDoKICAgICAgICAtIEZpeCB3cm9uZyAnRl9JSU5MTVRTRUwnIHNldHRpbmcgaW4gJ210NjM3MF9j aGdfaW5pdF9zZXR0aW5nKCknCiAgICAgICAgLSBSZXZpc2UgdGhlIHVzYWdlIG9mIExJTkVBUl9S QU5HRV9JRFgoKQoKLSBJbiBQYXRjaCAwOS8xMDoKICAgICAgICAtIFJldmlzZSB0aGUgZm9ybWF0 IG9mIHRoZSBjb21tZW50cy4KCi0gSW4gUGF0Y2ggMTAvMTA6CiAgICAgICAgLSBSZXZpc2UgdGhl IGZvcm1hdCBvZiB0aGUgY29tbWVudHMuCgoKQ2hhbmdlcyBpbiB2ODoKLSBJbiBQYXRjaCAwNi8x MjoKICAgICAgICAtIEFkZCBsaW5lYXJfcmFuZ2VfaWR4IG1hY3JvIGZvciBkZWNsYXJpbmcgdGhl IGxpbmVhcl9yYW5nZQogICAgICAgICAgc3RydWN0IHNpbXBseS4KCi0gSW4gUGF0Y2ggMDkvMTI6 CiAgICAgICAgLSBSZW1vdmUgTVQ2MzcwX0NIR19MSU5FQVJfUkFOR0UoKSBtYWNybywgYW5kIGNo YW5nZSB0byB1c2UKICAgICAgICAgIExJTkVBUl9SQU5HRV9JRFgoKSBtYWNybwoKLSBJbiBQYXRj aCAxMC8xMjoKICAgICAgICAtIEFkZCBpbmNsdWRlIGhlYWRlciBmaWxlIDxsaW51eC9sZWRzLmg+ CiAgICAgICAgLSBSZW1vdmUgdXNlbGVzcyAnZW51bSBtdDYzNzBfc3RhdGUnIGJlY2F1c2Ugb2Yg dXNpbmcgJ2VudW0gbGVkX2RlZmF1bHRfc3RhdGUnCiAgICAgICAgLSBSZXZpc2UgdGhlIGNhbGN1 bGF0aW9uIG9mICd2YWwnIGluICdtdDYzNzBfZ2VuX2JyZWF0aF9wYXR0ZXJuKCknCiAgICAgICAg LSBSZXBsYWNlIHRoZSBtZWR0aG9kIG9mIGdldHRpbmcgZGVmYXVsdC1zdGF0ZSBieSB1c2luZwog ICAgICAgICAgbGVkX2luaXRfZGVmYXVsdF9zdGF0ZV9nZXQoKQoKLSBJbiBQYXRjaCAxMS8xMjoK ICAgICAgICAtIEFkZCBtaXNzaW5nICdkZXBlbmRlbmN5IGNvbmZpZycgaW4gS2NvbmZpZwogICAg ICAgIC0gUmV2aXNlIGFsbCBtdWx0aS1saW5lIGNvbW1lbnRzCgotIEluIFBhdGNoIDEyLzEyOgog ICAgICAgIC0gQWRkIG1pc3NpbmcgaGVhZGVyIGZpbGUgPGxpbnV4L3Byb3BlcnR5Lmg+CiAgICAg ICAgLSBSZW1vdmUgdXNlbGVkZCBoZWFkZXIgZmlsZSA8bGludXgvb2ZfZGV2aWNlLmg+CiAgICAg ICAgLSBSZXZpc2UgdGhlIGNvbW1lbnQgb2YgJ210NjM3MF9jaGVja192ZW5kb3JfaW5mbygpJwoK CkNoYW5nZXMgaW4gdjc6Ci0gSW4gUGF0Y2ggMDUvMTM6CiAgICAgICAgLSBBZGQgdGhlIHNlY29u ZCBjb21wYXRpYmxlIHN0cmluZyBmb3IgJ210NjM3MicKICAgICAgICAtIEFkZCAnbWVkaWF0ZWss YmxlZC1leHBvbmVudGlhbC1tb2RlLWVuYWJsZScgcHJvcGVydHkgZm9yIGVuYWJsZSB0aGUKICAg ICAgICAgIGV4cG9uZW50aWFsIG1vZGUgb2YgYmFja2xpZ2h0IGJyaWdodG5lc3MKICAgICAgICAt IEFkZCB2YWxpZGF0aW9uIGZvciB0aGUgbWF4aW11bSB2YWx1ZSBvZiAnZGVmYXVsdC1icmlnaHRu ZXNzJyBhbmQKICAgICAgICAgICdtYXgtYnJpZ2h0bmVzcycKCi0gSW4gUGF0Y2ggMDcvMTM6CiAg ICAgICAgLSBNb3ZlICcjZGVmaW5lIE1UNjM3MF9SRUdfTUFYQUREUicgdG8gdGhlIG5leHQgbGlu ZSBvZgogICAgICAgICAgJyNkZWZpbmUgTVQ2MzcwX1JFR19DSEdfTUFTSzEnCiAgICAgICAgLSBS ZW5hbWUgJ01UNjM3MF9SRUdfQUREUkxFTicgdG8gJ01UNjM3MF9NQVhfQUREUkxFTicKCi0gSW4g UGF0Y2ggMDgvMTM6CiAgICAgICAgLSBSZXZpc2UgJ2Rldm1fYWRkX2FjdGlvbl9vcl9yZXNldChk ZXYsIC4uLiknIHRvIG9uZSBsaW5lCiAgICAgICAgLSBSZXZpc2UgJ3JldHVybiByZWdtYXBfdXBk YXRlX2JpdHMoLi4uKScgd2l0aCB1c2luZyBwb3NpdGl2ZQogICAgICAgICAgY29uZGl0aW9uYWwK Ci0gSW4gUGF0Y2ggMDkvMTM6CiAgICAgICAgLSBBZGQgQUlDUigxMDBtQSB+IDM1MG1BKSwgSUNI RygxMDBtQSB+IDgwMG1BKSBtYWNyb3MKICAgICAgICAtIFJlbW92ZSA0MDBtQSBBSUNSIGFuZCA5 MDBtQSBJQ0hHIG1hY3JvcwogICAgICAgIC0gUmV2aXNlIHVzaW5nICdpZi1lbHNlJyB0byAnc3dp dGNoLWNhc2UnIGluIG10NjM3MF9hZGNfcmVhZF9zY2FsZSgpCiAgICAgICAgICB3aGVyZSB0aGUg YWRjIGNoYW5uZWwgaXMgaWJ1cyBvciBpYmF0CgotIEluIFBhdGNoIDEwLzEzOgogICAgICAgIC0g UmV2aXNlIHRoZSBtZXRob2QgdG8gZW5hYmxlL2Rpc2FibGUgaXJxCiAgICAgICAgLSBSZXZpc2Ug YWxsICdpZiAocmV0IDwgMCknIHRvICdpZiAocmV0KScgYWZ0ZXIgdXNpbmcKICAgICAgICAgIG10 NjM3MF9jaGdfZmllbGRfc2V0L2dldCgpCiAgICAgICAgLSBSZXZpc2UgYWxsICdPVEcnIHRleHQg YWdhaW4KCi0gSW4gUGF0Y2ggMTEvMTM6CiAgICAgICAgLSBBZGQgdGhlIGNvbW1lbnQgZm9yIHRo ZSB1bmlvbiBvZiAnc3RydWN0IG10NjM3MF9sZWQnCiAgICAgICAgLSBSZXZpc2UgdGhlIHdyb25n IGRlc2NyaXB0aW9uIG9mICdBdXRob3JzJwogICAgICAgIC0gUmV2aXNlIHNvbWUgdHlwb3MgKGUu Zy4gbGVkIC0tPiBMRUQpCiAgICAgICAgLSBSZXZpc2UgJ2lmICghZndub2RlX3Byb3BlcnR5X3Jl YWRfc3RyaW5nKCkpJyB0bwogICAgICAgICAgJ3JldCA9IGZ3bm9kZV9wcm9wZXJ0eV9yZWFkX3N0 cmluZygpJwogICAgICAgIC0gUmVwbGFjZSAnbWVtY3B5KC4uLiknIHdpdGggJ3B1dF91bmFsaWdu ZWRfYmUyNCgpJyBpbgogICAgICAgICAgbXQ2MzcwX2dlbl9icmVhdGhfcGF0dGVybigpCiAgICAg ICAgLSBSZXBsYWNlIGFsbCAnTEVEX09GRicgd2l0aCAwCiAgICAgICAgLSBSZW1vdmUgdGhlIHJl ZHVuZGFudCBhc3NpZ25tZW50IGluIG10NjM3MF9tY19wYXR0ZXJuX2NsZWFyKCkKCi0gSW4gUGF0 Y2ggMTIvMTM6CiAgICAgICAgLSBGaXggdGhlIGluZGVudGF0aW9uLgogICAgICAgIC0gRm9yIHRo ZSB3ZWxsIGRlZmluZWQgbWFjcm8sIHRoZSBwYXJlbnRoZXNpcyBpcyBuZWVkZWQgZm9yIGlucHV0 IHBhcmFtZXRlcnMuCiAgICAgICAgLSBSZXBsYWNlIHNvbWUgZGV2X3dhcm4gdG8gZGV2X2luZm8g aW4gJ2luaXRfZmxhc2hfcHJvcGVydGllcycuCiAgICAgICAgLSBBZGQgc2VudGluZWwgY29tbWVu dCBmb3IgdGhlIHRlcm1pbmF0b3IgZW50cnkgb2Ygb2ZfZGV2aWNlX2lkLgogICAgICAgIC0gVXNl IHByaXYtPmZsZWRfdG9yY2hfdXNlZCBkaXJlY3RseS4KICAgICAgICAtIERlbGV0ZSAwIGluIHt9 LgogICAgICAgIC0gVXNlIF91QSBpbnN0ZWFkIG9mIF9VQSBpbiBkZWZpbml0aW9uLgogICAgICAg IC0gUmVmaW5lIHRoZSBkZXNjcmlwdGlvbi4KICAgICAgICAtIFVzZSB1c2xlZXBfcmFuZ2UgaW5z dGVhZCBvZiB1ZGVsYXkuCiAgICAgICAgLSBSZW5hbWUgY29uZmlnIHRvIExFRFNfTVQ2MzcwX0ZM QVNILgogICAgICAgIC0gQWRkIG1pc3NpbmcgIj4iIGluIGNvcHlyaWdodC4KICAgICAgICAtIENo YW5nZSB0aGUgS2NvbmZpZyBvcmRlcgoKLSBJbiBQYXRjaCAxMy8xMzoKICAgICAgICAtIEFkZCBz dXBwb3J0ICdleHBvbmVudGlhbCBtb2RlJyBwcm9wZXJ0eSBwYXJzaW5nCiAgICAgICAgLSBBZGQg J3JldHVybiBkZXZfZXJyX3Byb2JlKCknIGFmdGVyICdpZiAoSVNfRVJSKHByaXYtPmVuYWJsZV9n cGlvKSknCiAgICAgICAgLSBBZGQgJ210NjM3MicgY29tcGF0aWJsZSBzdHJpbmcKICAgICAgICAt IFJldmlzZSBLY29uZmlnIGhlbHAgdGV4dAogICAgICAgIC0gUmV2aXNlIHVwZGF0ZSgpL2dldCgp IGZvciBzdXBwb3J0aW5nIDE2Mzg0IHN0ZXBzIChNVDYzNzIpCiAgICAgICAgLSBSZXZpc2UgYWxs IHNoaWZ0IHVzYWdlcyBmb3JtIHVzaW5nICdmZnMoKSBhbmQgZmxzKCknIHRvIGRlZmluaW5nIHRo ZQogICAgICAgICAgX1NISUZUIG1hY3Jvcy4KICAgICAgICAtIFJldmlzZSAnYnJpZ2h0bmVzcyA/ IDEgOiAwJyB0byAnISFicmlnaHRuZXNzJyBpbiBncGlvZF9zZXRfdmFsdWUoKQoKCkNoYW5nZXMg aW4gdjY6Ci0gSW4gUGF0Y2ggMDMvMTM6CiAgICAgICAgLSBBZGQgJ3JlZycgcHJvcGVydHkgb2Yg bGVkIG9mIG11bHRpLWxlZCB0byBwcmV2ZW50IGNoZWNraW5nCiAgICAgICAgICBlcnJvci4KCi0g SW4gUGF0Y2ggMDgvMTM6CiAgICAgICAgLSBDb252ZXJ0IHRjcGNpIGFzIGRldmljZSByZXNvdXJj ZSBtYW5hZ2VkIHdpdGgKICAgICAgICAgICdkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQnIGFwaS4K ICAgICAgICAtIFJlZmluZSByZW12b2UgY2FsbGJhY2suCiAgICAgICAgLSBSZWZpbmUgdGhlIGNv bW1pdCB0ZXh0IGZyb20gJ3RoaXMgY29tbWl0IGFkZCcgdG8gJ2FkZCcuCgotIEluIFBhdGNoIDA5 LzEzOgogICAgICAgIC0gVXNpbmcgJ3N0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXYnIGlu IHByb2JlKCkKICAgICAgICAtIFJldmlzZSB0aGUgc2l4dGggcGFyYW1ldGVyIG9mIHJlZ21hcF9y ZWFkX3BvbGxfdGltZW91dCgpIGJ5CiAgICAgICAgICBSZXBsYWNpbmcgJzEwMDAnIHdpdGggJ01J TExJJwogICAgICAgIC0gUmV2aXNlIHRoZSB1bml0cyBvZiB0aHJlZSBtYWNyb3MKICAgICAgICAt IE1UNjM3MF9BSUNSXzQwME1BIC0tPiBNVDYzNzBfQUlDUl80MDBfbUEKICAgICAgICAtIE1UNjM3 MF9JQ0hHXzUwME1BIC0tPiBNVDYzNzBfSUNIR181MDBfbUEKICAgICAgICAtIE1UNjM3MF9JQ0hH XzkwME1BIC0tPiBNVDYzNzBfSUNIR185MDBfbUEKCi0gSW4gcGF0Y2ggMTAvMTM6CiAgICAgICAg LSBSZW1vdmUgdGhlIHZhcmFibGUgKCpwc3lfZGVzYykgb2Ygc3RydWN0IG10NjM3MF9wcml2CiAg ICAgICAgLSBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgdXNiIHR5cGUgKFBPV0VSX1NVUFBMWV9UWVBF X1VTQl9DRFAgYW5kCiAgICAgICAgICBQT1dFUl9TVVBQTFlfVFlQRV9VU0JfRENQKQogICAgICAg IC0gUmVtb3ZlIHVzZWxlc3MgcmVtb3ZlKCkKICAgICAgICAtIFJldmlzZSBhbGwgdW5pdHMgZnJv bSBtaW5pLSB0byBtaWNyby0KICAgICAgICAtIFJldmlzZSBnZXQvc2V0IHBvd2VyX3N1cHBseV9w cm9wIChjaGFuZ2UgdG8gZGlyZWN0bHkgcmV0dXJuIGdldC9zZXQKICAgICAgICAgIHJlZ21hcF9m aWVsZCkKICAgICAgICAtIFJldmlzZSBwcm9iZSgpIGFuZCB1c2UgZGV2bV9hZGRfYWN0aW9uX29y X3Jlc2V0KCkgZm9yIGhhbmRsaW5nIG9mIHRoZQogICAgICAgICAgd29ya3F1ZXVlL2RlbGF5ZWRf d29yay9tdXRleAogICAgICAgIC0gUmV2aXNlIG10NjM3MF9jaGdfcHN5X2Rlc2MKICAgICAgICAg ICAgICAgIC0gQWRkICcubmFtZSA9ICJtdDYzNzAtY2hhcmdlciInCiAgICAgICAgICAgICAgICAt IFVzZSAnc3RhdGljIGNvbnN0JwoKLSBJbiBwYXRjaCAxMS8xMzoKICAgICAgICAtIFJlbW92ZSB0 aGUgJ2tvJyBmcm9tIG10NjM3MCBsZWQgS2NvbmZpZyBkZXNjcmlwdGlvbi4KICAgICAgICAtIEFk ZCBib3RoIGF1dGhvcnMgZm9yIEFsaWNlIGFuZCBDaGlZdWFuLgogICAgICAgIC0gVXNlIHBkYXRh IHRvIGRpc3Rpbmd1aXNoIHRoZSBjb2RlIGZyb20gbXQ2MzcwLzcxIHRvIG10NjM3Mi4KICAgICAg ICAtIEluc3RlYWQgb2YgJ3N0YXRlJyBkZWZpbmUsIHVzZSB0aGUgJ3N0YXRlJyBlbnVtLgogICAg ICAgIC0gRml4IHRoZSB0eXBvIGZvciAnTVQ2MzcyX1BNV19EVVRZJy4KICAgICAgICAtIEZvciBw d21fZHV0eSBkZWZpbmUsIHJlcGxhY2Ugd2l0aCBiaXQgbWFjcm8gLSAxLgogICAgICAgIC0gUmVm aW5lIGFsbCB0aGUgbGFiZWxzIGZyb20gJ291dCcgdG8gJ291dF91bmxvY2snLgogICAgICAgIC0g VXNlIHN0cnVjdCAnZGV2JyB2YXJpYWJsZSBhbmQgJ2Rldl9lcnJfcHJvYmUnIHRvIG9wdGltaXpl IHRoZSBMT0MuCiAgICAgICAgLSBSZXZpc2UgZm9yIHRoZSBhcnJheSBpbml0aWFsaXphdGlvbiBm cm9tIHswfSB0byB7fS4KICAgICAgICAtIE1vdmUgaW50byByZ2IgZm9sZGVyIGFuZCByZW5hbWUg ZmlsZSBuYW1lIHRvICdsZWRzLW10NjM3MC1yZ2InLgogICAgICAgIC0gUmVmaW5lIHRoZSAnY29t bWEnIHVzYWdlIGluIHN0cnVjdC9lbnVtLgoKLSBJbiBwYXRjaCAxMi8xMzoKICAgICAgICAtIFVz ZSAnR0VOTUFTSycgaW5zdGVhZCBvZiAnQklUJy4KICAgICAgICAtIFVzZSBkZXZfZXJyX3Byb2Jl IHRvIGRlY3JlYXNlIExPQy4KICAgICAgICAtIFVzZSAnZGV2JyB2YXJpYWJsZSB0byBtYWtlIHBy b2JlIGZ1bmN0aW9uIG1vcmUgY2xlYW4uCiAgICAgICAgLSBSZWZpbmUgdGhlIHJldHVybiBvZiBf bXQ2MzcwX2ZsYXNoX2JyaWdodG5lc3Nfc2V0IGZ1bmN0aW9uLgogICAgICAgIC0gUmVmaW5lIHRo ZSBkZXNjcmlwdGlvbnMuCiAgICAgICAgLSBVc2UgbXQ2MzcwX2NsYW1wKCkgaW5zdGVhZCBvZiBj bGFtcF9hbGlnbigpLgogICAgICAgIC0gVXNlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VkIEFQSSBm b3IgdjRsMiBmbGFzaF9yZWxlYXNlLgoKCkNoYW5nZXMgaW4gdjU6Ci0gSW4gcGF0Y2ggMDcvMTM6 CiAgICAgICAgLSBBZGQgdGhlIGNvbW1hIGluIHRoZSBsYXN0IFJFR01BUF9JUlFfUkVHX0xJTkUo KSwKICAgICAgICAgIERFRklORV9SRVNfSVJRX05BTUVEKCkgYW5kIE1GRF9DRUxMX1JFUygpCiAg ICAgICAgLSBBZGQgdGhlIHByZWZpeCBpbiB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGFsbCBtZmRf Y2VsbAogICAgICAgIC0gTW92ZSBlbnVtIGFuZCBzdHJ1Y3QgbXQ2MzcwX2luZm8gdG8gbXQ2Mzcw LmgKICAgICAgICAtIFJlbW92ZSBzdHJ1Y3QgZGV2aWNlICpkZXYgaW4gc3RydWN0IG10NjM3MF9p bmZvCiAgICAgICAgLSBSZXZpc2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtjb25maWcgaGVscCB0ZXh0 CiAgICAgICAgLSBSZXZpc2UgTU9EVUxFX0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMDgvMTM6 CiAgICAgICAgLSBBZGQgY29tbWEgZm9yIHRoZSBsYXN0IGluZGV4IG9mIG10NjM3MF9yZWdfaW5p dC4KICAgICAgICAtIFVzZSBkZXZfZXJyX3Byb2JlIHRvIGRlY3JlYXNlIExPQy4KICAgICAgICAt IFVzZSAnZGV2JyB2YXJpYWJsZSB0byBtYWtlIHByb2JlIGZ1bmN0aW9uIG1vcmUgY2xlYW4uCiAg ICAgICAgLSBSZWZpbmUga2NvbmZpZyB0ZXh0LgogICAgICAgIC0gUmVtb3ZlIGJvdGggJ2Vsc2Un IGluIHNldF92YnVzIGNhbGxiYWNrLgogICAgICAgIC0gUmVtb3ZlIGNvbW1hIGZvciBvZl9kZXZp Y2VfaWQgaWYgdGhlIGFzc2lnbmVkIG1lbWJlciBpcyBvbmx5IG9uZS4KCi0gSW4gcGF0Y2ggMDkv MTM6CiAgICAgICAgLSBSZXBsYWNlIHVzaW5nIHNucHJpbnRmKCkgd2l0aCBzeXNmc19lbWl0KCkg aW4gbXQ2MzcwX2FkY19yZWFkX2xhYmVsKCkKICAgICAgICAtIFJlbW92ZSBtYWNybyBBRENfQ09O Vl9USU1FX1VTCiAgICAgICAgLSBSZXZpc2UgYWxsIHZhcmlhYmxlIG9yZGVyaW5nCiAgICAgICAg LSBSZXZpc2UgdGhlIGRlc2NyaXB0aW9uIG9mIEtjb25maWcgaGVscCB0ZXh0CiAgICAgICAgLSBS ZXZpc2UgTU9EVUxFX0RFU0NSSVBUSU9OKCkKCi0gSW4gcGF0Y2ggMTAvMTM6CiAgICAgICAgLSBS ZXBsYWNlIHVuc2lnbmVkIGludCB0eXBlIG9mIHB3cl9yZHkgd2l0aCBib29sIGluCiAgICAgICAg ICBtdDYzNzBfY2hnX3NldF9vbmxpbmUoKQogICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCAnZWxz ZScgaW4gbXQ2MzcwX2NoZ19maWVsZF9nZXQoKQogICAgICAgIC0gUmV2aXNlICdpZi1lbHNlJyBp biBtdDYzNzBfY2hnX2ZpZWxkX3NldCgpCiAgICAgICAgLSBSZXZpc2UgJ2lmJyBjb25kaXRpb24g aW4gbXQ2MzcwX2NoZ19lbmFibGVfaXJxKCkKICAgICAgICAtIFJldmlzZSBhbGwgdGV4dCAnb3Rn JyAtLT4gJ09URycKICAgICAgICAtIFJldmlzZSBNVDYzNzBfTUlWUl9JQlVTX1RIXzEwMF9NQSAt LT4gTVQ2MzcwX01JVlJfSUJVU19USF8xMDBfbUEKICAgICAgICAtIFJldmlzZSB0aGUgZGVzY3Jp cHRpb24gb2YgS2NvbmZpZyBoZWxwIHRleHQKCi0gSW4gcGF0Y2ggMTIvMTM6CiAgICAgICAgLSBS ZWZpbmUgdGhlIGNvZGluZyBzdHlsZS4KICAgICAgICAtIFVzZSAiZGV2IiBpbnN0ZWFkIG9mICIm cGRldi0+ZGV2Ii4KCi0gSW4gcGF0Y2ggMTMvMTM6CiAgICAgICAgLSBBZGQgbWlzc2VkIDxtb2Rf ZGV2aWNldGFibGUuaD4KICAgICAgICAtIEFkZCBzdHJ1Y3QgZGV2aWNlICpkZXYgaW4gcHJvYmUo KSB0byBtYWtlIGNvZGUgY2xlYW5pbmcKICAgICAgICAtIFJlbW92ZSB1c2VsZXNzIGluY2x1ZGlu ZyBoZWFkZXIgZmlsZSA8Z3Bpby9kcml2ZXIuaD4sIDxvZi5oPgogICAgICAgIC0gUmVtb3ZlIHVz ZWxlc3MgdmFyaWFibGUgdWFzYWdlIGluIG10NjM3MF9pbml0X2JhY2tsaWdodF9wcm9wZXJ0aWVz KCkKICAgICAgICAtIFJlbW92ZSByZWR1bmRhbnQgY2hlY2tpbmcgZW5hYmxlX2dwaW8gaW4gbXQ2 MzcwX2JsX3VwZGF0ZV9zdGF0dXMoKQogICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJlbnRo ZXNlcyBpbiBtdDYzNzBfYmxfZ2V0X2JyaWdodG5lc3MoKQogICAgICAgIC0gUmV2aXNlIHRoZSBk ZXNjcmlwdGlvbiBvZiBLY29uZmlnIGhlbHAgdGV4dAogICAgICAgIC0gUmV2aXNlIHRoZSBjYWxj dWxhdGlvbiBvZiBoeXNfdGhfc3RlcHMKCgpDaGFuZ2VzIGluIHY0OgotIEluIHBhdGNoIDAyLzEz OgogICAgICAgIC0gQWRkIG1pbkl0ZW1zIG9mICJpby1jaGFubmVsLW5hbWVzIgogICAgICAgIC0g UmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiCgotIEluIHBhdGNoIDA2LzEz OgogICAgICAgIC0gUm9sbCBiYWNrIGFsbCAiJHJlZjogIiB0byB2MiBwYXRjaCBzdHlsZSAodXNp bmcgIi9zY2hlbWFzLy4uLiIpCgotIEluIHBhdGNoIDA3LzEzOgogICAgICAgIC0gUmVwbGFjZSB0 ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcKICAgICAgICAtIFJlcGxh Y2UgImZpcnN0IGJyZWFrIGFuZCB0aGVuIHJldHVybiIgd2l0aCAicmV0dXJuIGRpcmVjdGx5Igog ICAgICAgICAgaW4gIm10NjM3MF9jaGVja192ZW5kb3JfaW5mbygpIgogICAgICAgIC0gQWRkIG1v ZHVsZSBuYW1lIHJlbGF0ZWQgZGVzY3JpcHRpb24gaW4gS2NvbmZpZyBoZWxwdGV4dAogICAgICAg IC0gQWRkIENvcHlyaWdodCBpbiB0aGUgc291cmNlIGNvZGUKICAgICAgICAtIEFkZCBoZWFkZXIg ZmlsZSAibXQ2MzcwLmgiIGZvciBhbGwgIiNkZWZpbmUgSVJRIgogICAgICAgIC0gQWRqdXN0IE1h a2VmaWxlIG9yZGVyIG9mIE1UNjM3MAogICAgICAgIC0gUmVmaW5lICJiYW5rX2lkeCIgYW5kICJi YW5rX2FkZHIiIGluCiAgICAgICAgICAibXQ2Mzc1X3JlZ21hcF9yZWFkKCkiIC8gIm10NjM3NV9y ZWdtYXBfd3JpdGUoKSIKICAgICAgICAtIFJlZmluZSByZWR1bmRhbnQgImVsc2UgaWYiIGluICJt dDYzNzBfcmVnbWFwX3JlYWQoKSIKCi0gSW4gcGF0Y2ggMDgvMTM6CiAgICAgICAgLSBSZXBsYWNl IHRleHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRlayIgaW4gS2NvbmZpZwogICAgICAgIC0gUmVw bGFjZSAiZmlyc3QgcmV0PXJlZ3VsYXRvcl8oZGlzL2VuKWFibGUgYW5kIHRoZW4gcmV0dXJuIgog ICAgICAgICAgd2l0aCAicmV0dXJuIGRpcmVjdGx5IiBpbiAibXQ2MzcwX3RjcGNfc2V0X3ZidXMo KSIKICAgICAgICAtIFJlcGxhY2UgaGVhZGVyIGZpbGUgPGxpbnV4L29mLmg+IHdpdGggPGxpbnV4 L21vZF9kZXZpY2V0YWJsZS5oPgogICAgICAgIC0gQWRkIENvcHlyaWdodCBpbiB0aGUgc291cmNl IGNvZGUKICAgICAgICAtIEFkZCBtb2R1bGUgbmFtZSByZWxhdGVkIGRlc2NyaXB0aW9uIGluIEtj b25maWcgaGVscHRleHQKICAgICAgICAtIFJlbW92ZSBoZWFkZXIgZmlsZSA8bGludXgvb2YuaD4K ICAgICAgICAtIFJlZmluZSBhbGwgcHJvYmUgZXJyb3IgYnkgdXNpbmcgZGV2X2Vycl9wcm9iZSgp CgotIEluIHBhdGNoIDA5LzEzOgogICAgICAgIC0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0 aCAiTWVkaWFUZWsiCiAgICAgICAgLSBSZXBsYWNlIGFsbCAiZmlyc3QgZGV2X2VycigpIGFuZCB0 aGVuIHJldHVybiIgd2l0aAogICAgICAgICAgInJldHVybiBkZXZfZXJyX3Byb2JlKCkiCiAgICAg ICAgLSBBZGQgQ29weXJpZ2h0IGluIHRoZSBzb3VyY2UgY29kZQogICAgICAgIC0gQWRkIG1vZHVs ZSBuYW1lIHJlbGF0ZWQgZGVzY3JpcHRpb24gaW4gS2NvbmZpZwogICAgICAgIC0gQWRkIHVuaXQg c3VmZml4IG9mIG1hY3JvICJBRENfQ09OVl9QT0xMSU5HX1RJTUUiCiAgICAgICAgLSBBZGQgbmV3 IG1hY3JvICJBRENfQ09OVl9USU1FX01TIgogICAgICAgIC0gQWRqdXN0IHRoZSBwb3NpdGlvbiBv ZiBpbmNsdWRlIGZpbGUgPG1lZGlhdGVrLG10NjM3MF9hZGMuaD4KICAgICAgICAtIEFkanVzdCB0 aGUgcG9zdGlvbnMgYmV0d2VlbiA8bGludXgvbW9kdWxlLmg+IGFuZAogICAgICAgICAgIDxsaW51 eC9tb2RfZGV2aWNldGFibGUuaD4KICAgICAgICAtIEZpeCBzb21lIGluY29ycmVjdCBjaGFyYWN0 ZXJzCgotIEluIHBhdGNoIDEwLzEzOgogICAgICAgIC0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIg d2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcgYW5kCiAgICAgICAgICBNT0RVTEVfREVTQ1JJUFRJ T04oKQogICAgICAgIC0gUmVwbGFjZSAibXQ2MzcwX2NoZ192YWxfdG9fcmVnIiBhbmQgIm10NjM3 MF9jaGdfcmVnX3RvX3ZhbCIKICAgICAgICAgIHdpdGggImxpbmVhcl9yYW5nZSIgQVBJCiAgICAg ICAgLSBSZXBsYWNlICJmaXJzdCBicmVhayBhbmQgdGhlbiByZXR1cm4iIHdpdGggInJldHVybiBk aXJlY3RseSIKICAgICAgICAgIGluIGFsbCBjYXNlcyBvZiBnZXQvc2V0IHBvd2VyX3N1cHBseV9w cm9wZXJ0eQogICAgICAgIC0gUmVwbGFjZSBhbGwgImZpcnN0IGRldl9lcnIoKSBhbmQgdGhlbiBy ZXR1cm4iIHdpdGggInJldHVybgogICAgICAgICAgZGV2X2Vycl9wcm9iZSgpIgogICAgICAgIC0g UmVwbGFjZSBhbGwgInJldHVybiBJU19FUlIocHJpdi0+cmRldikgPyBQVFJfRVJSKHByaXYtPnJk ZXYpIDogMCIKICAgICAgICAgIHdpdGggIlBUUl9FUlJfT1JfWkVSTygpIgogICAgICAgIC0gUmVw bGFjZSAicHJpdi0+ZGV2LT5vZl9ub2RlIiB3aXRoICJkZXZfb2Zfbm9kZSgpIgogICAgICAgIC0g QWRkIENvcHlyaWdodCBpbiB0aGUgc291cmNlIGNvZGUKICAgICAgICAtIEFkZCBtb2R1bGUgbmFt ZSByZWxhdGVkIGRlc2NyaXB0aW9uIGluIEtjb25maWcgaGVscHRleHQKICAgICAgICAtIEFkZCBw cm9wZXIgdW5pdCBvZiAiTVQ2MzcwX01JVlJfSUJVU19USCIKICAgICAgICAtIEFkZCBlcnJvciBj aGVjayBpbiAibXQ2MzcwX2NoZ19nZXRfc3RhdHVzIgogICAgICAgIC0gUmVtb3ZlIGluY2x1ZGlu ZyA8bWVkaWF0ZWssbXQ2MzcwX2FkYy5oPiBoZWFkZXIgZmlsZQogICAgICAgIC0gUmVtb3ZlIHJl ZHVuZGFudCBjb21tYSBvZiBldmVyeSBlbnVtIHRlcm1pbmF0b3IgbGluZQogICAgICAgIC0gUmVt b3ZlIHVud2FudGVkIGJsYW5rIGxpbmVzCiAgICAgICAgLSBSZW1vdmUgdGhlIHVzZWxlc3MgbGFi ZWwgKHRvZ2dsZV9jZm9fZXhpdDopCiAgICAgICAgLSBSZW1vdmUgdXNpbmcgYXRvbWljCiAgICAg ICAgLSBSZW1vdmUgdXNpbmcgb2ZfbWF0Y2hfcHRyKCkKICAgICAgICAtIEZpeCBzb21lIGluY29y cmVjdCBjaGFyYWN0ZXJzCiAgICAgICAgLSBGaXggdXBkYXRpbmcgd3JvbmcgYml0cyB3aGVuIHVz aW5nIGVuYV9ncGlvZCBvZiBPVEcgcmVndWxhdG9yCiAgICAgICAgLSBBZGp1c3QgdGhlIHByb2Jl IG9yZGVyIGluIHByb2JlKCkKCi0gSW4gcGF0Y2ggMTEvMTM6CiAgICAgICAgLSBSZXBsYWNlIHRl eHQgIk1lZGlhdGVrIiB3aXRoICJNZWRpYVRlayIgaW4gS2NvbmZpZwogICAgICAgIC0gUmVwbGFj ZSB0ZXh0ICJjb25zdCIgd2l0aCAiY29uc3RhbnQiIGluIEtjb25maWcKICAgICAgICAtIEFkZCBD b3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgotIEluIHBhdGNoIDEyLzEzOgogICAgICAgIC0g UmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25maWcKICAgICAg ICAtIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCgotIEluIHBhdGNoIDEzLzEzOgog ICAgICAgIC0gUmVwbGFjZSB0ZXh0ICJNZWRpYXRlayIgd2l0aCAiTWVkaWFUZWsiIGluIEtjb25m aWcKICAgICAgICAtIEFkZCBDb3B5cmlnaHQgaW4gdGhlIHNvdXJjZSBjb2RlCiAgICAgICAgLSBS ZXZpc2UgdGhlIGNvbW1lbnQgb2YgIlBXTSBIWVMgU1RFUFMiCgoKQ2hhbmdlcyBpbiB2MzoKLSBS ZW1vdmUgQURDIEFCSSBmaWxlLCB3aGljaCBpcyBhZGRlZCBpbiB2MiBQYXRjaCA3Ci0gSW4gcGF0 Y2ggMDIvMTQ6CiAgICAgICAgLSBBZGQgaXRlbXMgYW5kIHJlbW92ZSBtYXhJdGVtcyBvZiBpby1j aGFubmVscwogICAgICAgIC0gQWRkIGlvLWNoYW5uZWwtbmFtZXMgYW5kIGRlc2NyaWJlIGVhY2gg aXRlbQogICAgICAgIC0gQWRkICJ1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlIiBpbiAidXNi LW90Zy12YnVzLXJlZ3VsYXRvciIKICAgICAgICAtIFJlbmFtZSAiZW5hYmxlLWdwaW8iIHRvICJl bmFibGUtZ3Bpb3MiIGluICJ1c2Itb3RnLXZidXMtcmVndWxhdG9yIgoKLSBJbiBwYXRjaCAwMy8x NDoKICAgICAgICAtIFVzZSBsZWRzLWNsYXNzLW11bHRpY29sb3IueWFtbCBpbnN0ZWFkIG9mIGNv bW1vbi55YW1sLgogICAgICAgIC0gU3BsaXQgbXVsdGktbGVkIGFuZCBsZWQgbm9kZS4KICAgICAg ICAtIEFkZCBzdWJkZXZpY2UgImxlZCIgaW4gIm11bHRpLWxlZCIuCgotIEluIHBhdGNoIDA0LzE0 OgogICAgICAgIC0gUmVtb3ZlIHRoZSBkZXNjcmlwdGlvbiBvZiBlbnVtLgoKLSBJbiBwYXRjaCAw NS8xNDoKICAgICAgICAtIFJlbmFtZSAibWVkaWF0ZWssYmxlZC1wd20taHlzLWlucHV0LXRocmVz aG9sZC1zdGVwcyIgdG8KICAgICAgICAgICJtZWRpYXRlayxibGVkLXB3bS1oeXMtaW5wdXQtdGgt c3RlcHMiCiAgICAgICAgLSBSZWZpbmUgImJsZWQtcHdtLWh5cy1pbnB1dC10aC1zdGVwcyIsICJi bGVkLW92cC1taWNyb3ZvbHQiLAogICAgICAgICAgImJsZWQtb2NwLW1pY3JvYW1wIiBlbnVtIHZh bHVlcwoKLSBJbiBwYXRjaCAwNi8xNDoKICAgICAgICAtIFVzZSAiIGluIGVudGlyZSBwYXRjaHNl dAogICAgICAgIC0gUmVmaW5lIEFEQyBkZXNjcmlwdGlvbgogICAgICAgIC0gUmVuYW1lICJlbmFi bGUtZ3BpbyIgdG8gImVuYWJsZS1ncGlvcyIgaW4gInJlZ3VhbHRvciIKCi0gSW4gcGF0Y2ggMDcv MTQ6CiAgICAgICAgLSBSZWZpbmUgS2NvbmZpZyBoZWxwIHRleHQKICAgICAgICAtIFJlZmluZSBl cnJvciBtZXNzYWdlIG9mIHVua25vd24gdmVuZG9yIElEIGluCiAgICAgICAgICBtdDYzNzBfY2hl Y2tfdmVuZG9yX2luZm8oKQogICAgICAgIC0gUmVmaW5lIHJldHVybiB2YWx1ZSBoYW5kbGluZyBv ZiBtdDYzNzBfcmVnbWFwX3JlYWQoKQogICAgICAgIC0gUmVmaW5lIGFsbCBwcm9iZSBlcnJvciBi eSB1c2luZyBkZXZfZXJyX3Byb2JlKCkKICAgICAgICAtIFJlZmluZSAiYmFua19pZHgiIGFuZCAi YmFua19hZGRyIiBpbiBtdDYzNzBfcmVnbWFwX3JlYWQoKSBhbmQKICAgICAgICAgIG10NjM3MF9y ZWdtYXBfd3JpdGUoKQogICAgICAgIC0gQWRkICIjZGVmaW5lIFZFTklEKiIgYW5kIGRyb3AgdGhl IGNvbW1lbnRzIGluCiAgICAgICAgICBtdDYzNzBfY2hlY2tfdmVuZG9yX2luZm8oKQogICAgICAg IC0gRHJvcCAiTUZEIiBpbiBNT0RVTEVfREVTQ1JJUFRJT04oKQoKLSBJbiBwYXRjaCAwOS8xNDoK ICAgICAgICAtIFJlZmluZSBLY29uZmlnIGhlbHAgdGV4dAoKLSBJbiBwYXRjaCAxMC8xNDoKICAg ICAgICAtIFJlZmluZSBLY29uZmlnIGhlbHAgdGV4dAogICAgICAgIC0gUmVmaW5lIGFsbCBjaGFu bmVsIHZhbHVlIGluIHJlYWRfc2NhbGUoKQogICAgICAgICAgICAgICAgYS4gY3VycmVudDogdUEg LS0+IG1BCiAgICAgICAgICAgICAgICBiLiB2b2x0YWdlOiB1ViAtLT4gbVYKICAgICAgICAgICAg ICAgIGMuIHRlbXBlcmF0dXJlOiBkZWdyZWVzIENlbHNpdXMgLS0+IG1pbGxpIGRlZ3JlZXMgQ2Vs c2l1cwogICAgICAgIC0gQWRkICJkZWZhdWx0OiIgY29uZGl0aW9uIG9mIHN3aXRjaCBzdGF0ZW1l bnQgaW4gcmVhZF9zY2FsZSgpIGFuZCByZWFkX3JhdygpCiAgICAgICAgLSBBZGQgZXJyb3IgbWVz c2FnZSBmb3IgcmVhZGluZyBBREMgcmVnaXN0ZXIgZmFpbGVkCiAgICAgICAgLSBBZGQgdGhlIGNv bW1lbnQgZm9yIGFkY19sb2NrCiAgICAgICAgLSBBZGQgPGxpbnV4L21vZF9kZXZpY2V0YWJsZS5o PiBoZWFkZXIgZmlsZSBmb3Igc3RydWN0IG9mX2RldmljZV9pZAogICAgICAgIC0gUmVwbGFjZSAi YWRjIiB0ZXh0IHdpdGggIkFEQyIgaW4gYWxsIG9mIHRoZSBlcnJvciBtZXNzYWdlcwoKLSBJbiBw YXRjaCAxMi8xNDoKICAgICAgICAtIFJlZmluZSB0aGUgZ3JhbW1lciBvZiB0aGUgS2NvbmZpZy4K ICAgICAgICAtIENoYW5nZSByZWcgbW9kZSB0byB0aGUgY29uc3QgY3VycmVudCBtb2RlLgoKLSBJ biBwYXRjaCAxNC8xNDoKICAgICAgICAtIFJlZmluZSBib29sIHByb3BlcnRpZXMgcGFyc2luZyAo cHdtLWVuYWJsZSwgb3ZwLXNodXRkb3duLCBvY3Atc2h1dGRvd24pIGluIERUCiAgICAgICAgICBw YXJzaW5nIGZ1bmN0aW9uCiAgICAgICAgLSBSZWZpbmUgdTMyIGFuZCB1OCBwcm9wZXJ0aWVzIHBh cnNpbmcgKHB3bS1oeXMtaW5wdXQtdGgtc3RlcHMsIG92cC1taWNyb3ZvbHQsCiAgICAgICAgICBv Y3AtbWljcm9hbXApLCBmcm9tIHVzaW5nIHJlZ2lzdGVyIHZhbHVlIHRvIHVzaW5nIGFjdHVhbCB2 YWx1ZQogICAgICAgIC0gUmVmaW5lIGVycm9yIHN0cmluZyBvZiAiY2hhbm5sZS11c2UiIHBhcnNp bmcgZmFpbGVkCiAgICAgICAgLSBSZWZpbmUgS2NvbmZpZyBoZWxwIHRleHQKCgpDaGFuZ2VzIGlu IHYyOgotIEluIHBhdGNoIDAxLzE1OgogICAgICAgIC0gQWRkICJ1bmV2YWx1YXRlZFByb3BlcnRp ZXM6IGZhbHNlIi4KICAgICAgICAtIERlbGV0ZSAiRFQgYmluZGluZ3MiLgogICAgICAgIC0gUmVm aW5lIHRoZSBkZXNjcmlwdGlvbiB0byBmaXQgaW4gODAgY29sdW1ucy4KICAgICAgICAtIFNraXAg dGhlIGNvbm5lY3RvciBkZXNjcmlwdGlvbi4KCi0gSW4gcGF0Y2ggMDIvMTU6CiAgICAgICAgLSBS ZWZpbmUgaXRlbXMgZGVzY3JpcHRpb24gb2YgaW50ZXJydXB0LW5hbWUKICAgICAgICAtIFJlbmFt ZSAidXNiLW90Zy12YnVzIiB0byAidXNiLW90Zy12YnVzLXJlZ3VsYXRvciIKICAgICAgICAtIEFk ZCBjb25zdHJhaW50IHByb3BlcnRpZXMgZm9yIEFEQwoKLSBJbiBwYXRjaCAwMy8xNToKICAgICAg ICAtIFNraXAgbm90IHVzZWZ1bCBkZXNjcmlwdGlvbiBvZiAiXihtdWx0aS0pP2xlZEBbMC0zXSQi CiAgICAgICAgICBhbmQgcmVnLgogICAgICAgIC0gRHVlIHRvIHRoZSBkZXBlbmRlbmN5LCByZW1v dmUgdGhlIG1lbnRpb24gb2YgbWZkCiAgICAgICAgICBkb2N1bWVudCBkaXJlY3RvcnkuCiAgICAg ICAgLSBEZWxldGUgU29mdC1zdGFydCBwcm9wZXJ0eS4gSW4gZGVzaWduIGFzcGVjdCwgd2UgdGhp bmsKICAgICAgICAgIHNvZnQtcmVzdGFydCBzaG91bGQgYWx3YXlzIGJlIGVuYWJsZWQsIG91ciBu ZXcgY2hpcAogICAgICAgICAgaGFzIGRlbGV0ZWQgdGhlIHJlbGF0ZWQgc2V0dGluZyByZWdpc3Rl ciAsIGFsc28sIHdlIGRvbuKAmXQKICAgICAgICAgIGFsbG93IHVzZXIgYWRqdXN0IHRoaXMgcGFy YW1ldGVyIGluIHRoaXMgY2hpcC4KICAgICAgICAtIFJlZmluZSB0aGUgY29tbWl0IG1lc3NhZ2Uu CgotIEluIHBhdGNoIDA0LzE1OgogICAgICAgIC0gU2tpcCBub3QgdXNlZnVsIGRlc2NyaXB0aW9u IG9mICJebGVkQFswLTFdJCIgYW5kIHJlZy4KICAgICAgICAtIEFkZCBhcGFjZSBhZnRlciAnIycu CiAgICAgICAgLSBSZWZpbmUgdGhlIGNvbW1pdCBtZXNzYWdlLgoKLSBJbiBwYXRjaCAwNS8xNToK ICAgICAgICAtIFJlbW92ZSAiYmluZGluZyBkb2N1bWVudGF0aW9uIiBpbiBzdWJqZWN0IHRpdGxl CiAgICAgICAgLSBSZWZpbmUgZGVzY3JpcHRpb24gb2YgbXQ2MzcwIGJhY2tsaWdodCBiaW5kaW5n CiAgICAgICAgICBkb2N1bWVudAogICAgICAgIC0gUmVmaW5lIHByb3BlcnRpZXMgbmFtZShibGVk LXB3bS1oeXMtaW5wdXQtYml0LAogICAgICAgICAgYmxlZC1vdnAtbWljcm92b2x0LCBibGVkLW9j cC1taWNyb2FtcCkgYW5kIHRoZWlyCiAgICAgICAgICBkZXNjcmlwdGlvbgoKLSBJbiBwYXRjaCAw Ni8xNToKICAgICAgICAtIFJlZmluZSBBREMgYW5kIFJlZ3VsYXRvciBkZXNjcmlwdGlvbnMKICAg ICAgICAtIFJlZmluZSBpbmNsdWRlIGhlYWRlciB1c2FnZSBpbiBleGFtcGxlCiAgICAgICAgLSBS ZWZpbmUgbm9kZSBuYW1lIHRvIGdlbmVyaWMgbm9kZSBuYW1lKCJwbWljQDM0IikKICAgICAgICAt IFJlZmluZSBsZWQgZXhhbXBsZSBpbmRlbnRhdGlvbgogICAgICAgIC0gUmVmaW5lIGxpY2Vuc2Ug b2YgbWVkaWF0ZWssbXQ2MzcwX2FkYy5oCiAgICAgICAgLSBSZW5hbWUgdGhlIGR0cyBleGFtcGxl IGZyb20gSVJRIGRlZmluZSB0byBudW1iZXIuCiAgICAgICAgLSBSZW1vdmUgbWVkaWF0ZWssbXQ2 MzcwLmgKCi0gSW4gcGF0Y2ggMDcvMTU6CiAgICAgICAgLSBBZGQgQUJJIGRvY3VtZW50YXRpb24g Zm9yIG10NjM3MCBub24tc3RhbmRhcmQgQURDCiAgICAgICAgICBzeXNmcyBpbnRlcmZhY2VzLgoK LSBJbiBwYXRjaCAwOC8xNToKICAgICAgICAtIEFkZCBhbGwgSVJRIGRlZmluZSBpbnRvIG10NjM3 MC5jLgogICAgICAgIC0gUmVmaW5lIGluY2x1ZGUgaGVhZGVyIHVzYWdlCgotIEluIHBhdGNoIDA5 LzE1OgogICAgICAgIC0gTm8gY2hhbmdlcy4KCi0gSW4gcGF0Y2ggMTAvMTU6CiAgICAgICAgLSBV c2UgJ2dwaW9kX2dldF9mcm9tX29mX25vZGUnIHRvIHJlcGxhY2UKICAgICAgICAgICdmd25vZGVf Z3Bpb2RfZ2V0X2luZGV4Jy4KCi0gSW4gcGF0Y2ggMTEvMTU6CiAgICAgICAgLSBSZWZpbmUgS2Nv bmZpZyBtdDYzNzAgaGVscCB0ZXh0CiAgICAgICAgLSBSZWZpbmUgbWFzayZzaGlmdCB0byBGSUVM RF9QUkVQKCkKICAgICAgICAtIFJlZmluZSBtdXRleCBsb2NrIG5hbWUgKCJsb2NrIiAtPiAiYWRj X2xvY2siKQogICAgICAgIC0gUmVmaW5lIG10NjM3MF9hZGNfcmVhZF9zY2FsZSgpCiAgICAgICAg LSBSZWZpbmUgbXQ2MzcwX2FkY19yZWFkX29mZnNldCgpCiAgICAgICAgLSBSZWZpbmUgbXQ2Mzcw X2NoYW5uZWxfbGFiZWxzW10gYnkgdXNpbmcgZW51bSB0byBpbmRleAogICAgICAgICAgY2hhbiBz cGVjCiAgICAgICAgLSBSZWZpbmUgTVQ2MzcwX0FEQ19DSEFOKCkKICAgICAgICAtIFJlZmluZSBp bmRpb19kZXYtPm5hbWUKICAgICAgICAtIFJlbW92ZSB1c2VsZXNzIGluY2x1ZGUgaGVhZGVyIGZp bGVzCgotIEluIHBhdGNoIDEyLzE1OgogICAgICAgIC0gUmVmaW5lIG10NjM3MF9jaGdfb3RnX3Jk ZXNjLm9mX21hdGNoCiAgICAgICAgICAoIm10NjM3MCxvdGctdmJ1cyIgLT4gInVzYi1vdGctdmJ1 cy1yZWd1bGF0b3IiKSB0byBtYXRjaAogICAgICAgICAgRFQgYmluZGluZwoKLSBJbiBwYXRjaCAx My8xNToKICAgICAgICAtIFJlZmluZSBLY29uZmlnIGRlc2NyaXB0aW9uLgogICAgICAgIC0gUmVt b3ZlIGluY2x1ZGUgImxpbnV4L29mLmgiIGFuZCB1c2UKICAgICAgICAgICJsaW51eC9tb2RfZGV2 aWNldGFibGUuaCIuCiAgICAgICAgLSBQbGFjZSBhIGNvbW1hIGZvciB0aGUgbGFzdCBlbGVtZW50 IG9mIHRoZSBjb25zdAogICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5LgogICAgICAgIC0gQWRk IGEgY29tbWVudCBsaW5lIGZvciB0aGUgbXV0ZXggJ2xvY2snLgogICAgICAgIC0gSW4gcHJvYmUg ZnVuY3Rpb24sIHVzZSAnZGV2X2Vycl9wcm9iZScgaW4gc29tZQogICAgICAgICAganVkZ2VtZW50 IHRvIHJlZHVjZSB0aGUgTE9DLgogICAgICAgIC0gUmVmaW5lIGluY2x1ZGUgaGVhZGVyIHVzYWdl LgogICAgICAgICAgQklUL0dFTk1BU0sgLT4gbGludXgvYml0cy5oCiAgICAgICAgICBGSUVMRF9H RVQgLT4gbGludXgvYml0ZmllbGQuaAoKLSBJbiBwYXRjaCAxNC8xNToKICAgICAgICAtIEFkZCBi bGFuayBsaW5lLgogICAgICAgIC0gUmVwbGFjZSBjb250YWluZXJfb2YoKSB3aXRoIHRvX210NjM3 MF9sZWQoKSAuCiAgICAgICAgLSBSZWZpbmUgZGVzY3JpcHRpb24gb2YgcmFtcGluZy4KICAgICAg ICAtIFJlZmluZSB0aGUgbXQ2MzcwX2luaXRfY29tbW9uX3Byb3BlcnRpZXMgZnVuY3Rpb24uCiAg ICAgICAgLSBSZWZpbmUgdGhlIHByb2JlIHJldHVybi4KCi0gSW4gcGF0Y2ggMTUvMTU6CiAgICAg ICAgLSBSZWZpbmUgTVQ2MzcwIGhlbHAgdGV4dCBpbiBLY29uZmlnCiAgICAgICAgLSBSZWZpbmUg RFQgUGFyc2UgZnVuY3Rpb24KICAgICAgICAtIFJlbW92ZSB1c2VsZXNzIGVudW0KICAgICAgICAt IEFkZCBjb21tZW50IGZvciA2MzcyIGJhY2t3YXJkIGNvbXBhdGlibGUgaW4KICAgICAgICAgIGJs X3VwZGF0ZV9zdGF0dXMoKSBhbmQKICAgICAgICAgIGNoZWNrX3ZlbmRvcl9pbmZvKCkKICAgICAg ICAtIFVzaW5nIGRldl9lcnJfcHJvYmUoKTsgaW5zdGVhZHMgZGV2X2VycigpJnJldHVybjsgaW4K ICAgICAgICAgIHRoZSBwcm9iZSgpCgoKCkNoaVl1YW4gSHVhbmcgKDMpOgogIGxlZHM6IHJnYjog bXQ2MzcwOiBBZGQgTWVkaWFUZWsgTVQ2MzcwIGN1cnJlbnQgc2luayB0eXBlIExFRCBJbmRpY2F0 b3IKICAgIHN1cHBvcnQKICBsZWRzOiBmbGFzaDogbXQ2MzcwOiBBZGQgTWVkaWFUZWsgTVQ2Mzcw IGZsYXNobGlnaHQgc3VwcG9ydAogIGRvY3M6IGxlZHM6IEFkZCBNVDYzNzAgUkdCIExFRCBwYXR0 ZXJuIGRvY3VtZW50CgogRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtbXQ2MzcwLXJnYi5yc3QgfCAg IDY0ICsrCiBkcml2ZXJzL2xlZHMvZmxhc2gvS2NvbmZpZyAgICAgICAgICAgICB8ICAgMTMgKwog ZHJpdmVycy9sZWRzL2ZsYXNoL01ha2VmaWxlICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMv bGVkcy9mbGFzaC9sZWRzLW10NjM3MC1mbGFzaC5jIHwgIDU5NiArKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2xlZHMvcmdiL0tjb25maWcgICAgICAgICAgICAgICB8ICAgMTMgKwogZHJpdmVy cy9sZWRzL3JnYi9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMvbGVkcy9y Z2IvbGVkcy1tdDYzNzAtcmdiLmMgICAgIHwgMTAwOSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAxNjk3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBEb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1tdDYzNzAtcmdiLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbGVkcy9mbGFzaC9sZWRzLW10NjM3MC1mbGFzaC5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9sZWRzL3JnYi9sZWRzLW10NjM3MC1yZ2IuYwoKLS0gCjIuNy40 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=