Profiling results ----------------- Total cpu time observed: 10046ms (out of 10228ms) Number of samples taken: 47 (once every 214ms) ========================================================================= Caller Idx Total Self Name+src Local% ms(pct) ms(pct) Callee ========================================================================= [1] 10046(100.0%) 0(0.0%) ??? ...lects/racket/private/more-scheme.rkt:261:28 profile-thunk16 [11] 100.0% ------------------------------------------------------------------------- ??? [61] 100.0% [2] 1328(13.2%) 0(0.0%) approximate9 ...pler-alts/src/core/taylor.rkt:11:0 loop [13] 100.0% ------------------------------------------------------------------------- map [14] 6.6% parse-loop74 [3] 25.4% hash-ref! [66] 68.1% [3] 1124(11.2%) 0(0.0%) parse-loop74 (unknown source) eval-const-expr [12] 68.1% parse-loop74 [3] 25.4% f61 [5] 6.6% ------------------------------------------------------------------------- for-loop [90] 33.8% loop [92] 66.2% [4] 610(6.1%) 0(0.0%) expand-id-application-form17 (unknown source) resolve+shift28 [100] 67.2% syntax-e/no-taint [17] 32.8% ------------------------------------------------------------------------- map [14] 23.9% hash-ref! [66] 23.9% parse-loop74 [3] 52.1% [5] 426(4.2%) 0(0.0%) f61 (unknown source) map [14] 76.1% eval-const-expr [12] 23.9% ------------------------------------------------------------------------- hash-ref! [66] 100.0% [6] 420(4.2%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:290:26 for-loop [15] 100.0% ------------------------------------------------------------------------- hash-ref! [66] 100.0% [7] 410(4.1%) 0(0.0%) ??? ...bie/simpler-alts/src/core/taylor.rkt:300:23 for-loop [16] 100.0% ------------------------------------------------------------------------- hash-ref! [66] 100.0% [8] 200(2.0%) 0(0.0%) parse-loop15 (unknown source) map [14] 100.0% ------------------------------------------------------------------------- for-loop [90] 100.0% [9] 200(2.0%) 0(0.0%) syntax-e (unknown source) syntax-e/no-taint [17] 100.0% ------------------------------------------------------------------------- for-loop [90] 100.0% [10] 200(2.0%) 0(0.0%) expand-implicit (unknown source) resolve+shift28 [100] 100.0% ------------------------------------------------------------------------- ??? [1] 100.0% [11] 10046(100.0%) 0(0.0%) profile-thunk16 ...e/pkgs/profile-lib/main.rkt:9:0 run [18] 100.0% ------------------------------------------------------------------------- f61 [5] 15.4% parse-loop74 [3] 84.6% [12] 1328(13.2%) 0(0.0%) eval-const-expr ...ler-alts/src/programs.rkt:144:0 temp85_0 [74] 63.4% eval-prog [19] 21.1% loop [92] 15.5% ------------------------------------------------------------------------- approximate9 [2] 100.0% [13] 1328(13.2%) 0(0.0%) loop ...rbie/simpler-alts/src/core/taylor.rkt:86:4 ??? [61] 100.0% ------------------------------------------------------------------------- parse-loop15 [8] 31.9% f61 [5] 68.1% [14] 626(6.2%) 0(0.0%) map ...t-7.5/collects/racket/private/map.rkt:35:13 parse-loop74 [3] 35.5% f61 [5] 32.6% hash-ref! [66] 31.9% ------------------------------------------------------------------------- ??? [6] 100.0% [15] 420(4.2%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:290:52 hash-ref! [66] 100.0% ------------------------------------------------------------------------- ??? [7] 100.0% [16] 410(4.1%) 0(0.0%) for-loop ...impler-alts/src/core/taylor.rkt:303:27 hash-ref! [66] 100.0% ------------------------------------------------------------------------- syntax-e [9] 50.0% expand-id-application-form17 [4] 50.0% [17] 400(4.0%) 0(0.0%) syntax-e/no-taint (unknown source) loop [92] 100.0% ------------------------------------------------------------------------- profile-thunk16 [11] 100.0% [18] 10046(100.0%) 0(0.0%) run ...et-7.5/share/pkgs/profile-lib/main.rkt:39:2 .../more-scheme.rkt:261:28 [20] 100.0% ------------------------------------------------------------------------- eval-const-expr [12] 100.0% [19] 280(2.8%) 0(0.0%) eval-prog ...e/simpler-alts/src/programs.rkt:106:0 inductor [21] 100.0% ------------------------------------------------------------------------- for-loop [73] 10.0% run [18] 90.0% [20] 10046(100.0%) 600(6.0%) .../more-scheme.rkt:261:28 (unknown source) run-improve47 [22] 65.5% prepare-points-intervals [23] 16.4% ??? [96] 7.0% oracle-error [24] 4.0% get-p&es [26] 2.1% loop [92] 2.0% ------------------------------------------------------------------------- eval-prog [19] 14.3% inductor [21] 85.7% [21] 280(2.8%) 0(0.0%) inductor ...ie/simpler-alts/src/programs.rkt:127:4 inductor [21] 85.7% value? [25] 14.3% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [22] 7584(75.5%) 0(0.0%) run-improve47 ...mpler-alts/src/mainloop.rkt:365:0 for-loop [27] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [23] 1652(16.4%) 0(0.0%) prepare-points-intervals ...s/src/points.rkt:122:0 loop [28] 100.0% ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [24] 402(4.0%) 0(0.0%) oracle-error .../simpler-alts/src/points.rkt:179:0 for-loop [29] 100.0% ------------------------------------------------------------------------- inductor [21] 100.0% [25] 280(2.8%) 280(2.8%) value? ...e/simpler-alts/src/syntax/types.rkt:18:0 ------------------------------------------------------------------------- .../more-scheme.rkt:261:28 [20] 100.0% [26] 208(2.1%) 208(2.1%) get-p&es ...rbie/simpler-alts/src/sandbox.rkt:25:0 ------------------------------------------------------------------------- run-improve47 [22] 100.0% [27] 7584(75.5%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:384:4 run-iter! [30] 100.0% ------------------------------------------------------------------------- prepare-points-intervals [23] 100.0% [28] 1652(16.4%) 0(0.0%) loop ...s/herbie/simpler-alts/src/points.rkt:134:4 loop [31] 75.8% ??? [32] 24.2% ------------------------------------------------------------------------- oracle-error [24] 100.0% [29] 402(4.0%) 0(0.0%) for-loop ...rbie/simpler-alts/src/points.rkt:180:2 loop [92] 100.0% ------------------------------------------------------------------------- for-loop [27] 100.0% [30] 7584(75.5%) 0(0.0%) run-iter! ...e/simpler-alts/src/mainloop.rkt:346:0 finalize-iter! [33] 53.1% gen-series! [34] 20.2% simplify! [35] 18.8% gen-rewrites! [38] 2.7% localize! [40] 2.6% choose-best-alt! [41] 2.6% ------------------------------------------------------------------------- loop [28] 100.0% [31] 1252(12.5%) 0(0.0%) loop ...es/herbie/simpler-alts/src/points.rkt:79:2 ??? [61] 65.8% real->precision [36] 17.9% ??? [37] 16.3% ------------------------------------------------------------------------- loop [28] 100.0% [32] 400(4.0%) 200(2.0%) ??? ...es/herbie/simpler-alts/src/points.rkt:115:6 sample-multi-bounded [39] 50.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [33] 4024(40.1%) 0(0.0%) finalize-iter! ...pler-alts/src/mainloop.rkt:278:0 ??? [42] 100.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [34] 1534(15.3%) 0(0.0%) gen-series! ...simpler-alts/src/mainloop.rkt:160:0 for-loop [43] 100.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [35] 1424(14.2%) 0(0.0%) simplify! ...e/simpler-alts/src/mainloop.rkt:224:0 ??? [44] 85.5% for-loop [45] 14.5% ------------------------------------------------------------------------- loop [31] 100.0% [36] 224(2.2%) 0(0.0%) real->precision ...er-alts/src/programs.rkt:118:11 ??? [61] 100.0% ------------------------------------------------------------------------- loop [31] 100.0% [37] 204(2.0%) 0(0.0%) ??? ...tract/private/arrow-higher-order.rkt:379:33 ival-add [46] 100.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [38] 202(2.0%) 0(0.0%) gen-rewrites! ...mpler-alts/src/mainloop.rkt:183:0 group-by61 [47] 100.0% ------------------------------------------------------------------------- ??? [32] 100.0% [39] 200(2.0%) 0(0.0%) sample-multi-bounded ...r-alts/src/points.rkt:14:0 for-loop [48] 100.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [40] 200(2.0%) 0(0.0%) localize! ...e/simpler-alts/src/mainloop.rkt:127:0 localize-error [49] 100.0% ------------------------------------------------------------------------- run-iter! [30] 100.0% [41] 200(2.0%) 0(0.0%) choose-best-alt! ...er-alts/src/mainloop.rkt:117:0 ...ow-val-first.rkt:486:18 [50] 100.0% ------------------------------------------------------------------------- finalize-iter! [33] 100.0% [42] 4024(40.1%) 0(0.0%) ??? ...contract/private/arrow-val-first.rkt:486:18 for-loop [51] 100.0% ------------------------------------------------------------------------- gen-series! [34] 100.0% [43] 1534(15.3%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:167:7 taylor-alt [52] 100.0% ------------------------------------------------------------------------- simplify! [35] 100.0% [44] 1218(12.1%) 0(0.0%) ??? ...bie/simpler-alts/src/core/simplify.rkt:42:0 egraph-run [53] 100.0% ------------------------------------------------------------------------- for-loop [45] 50.0% simplify! [35] 50.0% [45] 206(2.1%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:251:6 for-loop [45] 50.0% ??? [61] 50.0% ------------------------------------------------------------------------- ??? [37] 100.0% [46] 204(2.0%) 0(0.0%) ival-add ...simpler-alts/src/biginterval.rkt:111:0 bfadd [76] 100.0% ------------------------------------------------------------------------- gen-rewrites! [38] 100.0% [47] 202(2.0%) 0(0.0%) group-by61 ...t-7.5/collects/racket/list.rkt:771:0 for-loop [54] 100.0% ------------------------------------------------------------------------- sample-multi-bounded [39] 100.0% [48] 200(2.0%) 200(2.0%) for-loop ...erbie/simpler-alts/src/points.rkt:20:4 ------------------------------------------------------------------------- localize! [40] 100.0% [49] 200(2.0%) 0(0.0%) localize-error ...-alts/src/core/localize.rkt:57:0 hash-ref! [66] 100.0% ------------------------------------------------------------------------- choose-best-alt! [41] 100.0% [50] 200(2.0%) 0(0.0%) ...ow-val-first.rkt:486:18 (unknown source) ??? [55] 100.0% ------------------------------------------------------------------------- ??? [42] 100.0% [51] 4024(40.1%) 0(0.0%) for-loop ...pler-alts/src/core/alt-table.rkt:201:2 atab-add-altn [56] 100.0% ------------------------------------------------------------------------- for-loop [43] 100.0% [52] 1534(15.3%) 0(0.0%) taylor-alt .../simpler-alts/src/mainloop.rkt:146:0 for-loop [57] 100.0% ------------------------------------------------------------------------- ??? [44] 100.0% [53] 1218(12.1%) 0(0.0%) egraph-run .../pkgs/egg-herbie-linux/main.rkt:49:0 egraph-add-exprs [58] 100.0% ------------------------------------------------------------------------- group-by61 [47] 100.0% [54] 202(2.0%) 0(0.0%) for-loop ...ket-7.5/collects/racket/list.rkt:818:2 loop [59] 100.0% ------------------------------------------------------------------------- ...ow-val-first.rkt:486:18 [50] 100.0% [55] 200(2.0%) 0(0.0%) ??? ...ie/simpler-alts/src/core/alt-table.rkt:41:0 argmin [60] 100.0% ------------------------------------------------------------------------- for-loop [51] 100.0% [56] 4024(40.1%) 0(0.0%) atab-add-altn ...alts/src/core/alt-table.rkt:204:0 errors [65] 80.1% best-and-tied-at-points [63] 19.9% ------------------------------------------------------------------------- taylor-alt [52] 100.0% [57] 1534(15.3%) 0(0.0%) for-loop ...ie/simpler-alts/src/mainloop.rkt:152:6 ??? [61] 100.0% ------------------------------------------------------------------------- egraph-run [53] 100.0% [58] 1218(12.1%) 0(0.0%) egraph-add-exprs ...gg-herbie-linux/main.rkt:111:0 ??? [62] 100.0% ------------------------------------------------------------------------- for-loop [54] 1.3% loop [59] 98.7% [59] 202(2.0%) 202(2.0%) loop ...-7.5/collects/racket/private/map.rkt:40:19 loop [59] 98.7% ------------------------------------------------------------------------- ??? [55] 100.0% [60] 200(2.0%) 0(0.0%) argmin ...acket-7.5/collects/racket/list.rkt:765:0 ??? [64] 100.0% ------------------------------------------------------------------------- loop [92] 6.7% for-loop [45] 6.9% real->precision [36] 7.5% loop [13] 14.8% location-do [67] 14.8% for-loop [57] 21.7% loop [31] 27.6% [61] 2988(29.7%) 206(2.1%) ??? ...tract/private/arrow-higher-order.rkt:375:33 ival-div [69] 27.6% location-do [67] 14.8% approximate9 [2] 14.8% hash-ref! [66] 14.8% bf [71] 14.2% ??? [72] 6.9% ------------------------------------------------------------------------- egraph-add-exprs [58] 100.0% [62] 1218(12.1%) 0(0.0%) ??? ...ie/simpler-alts/src/core/simplify.rkt:103:6 for-loop [68] 100.0% ------------------------------------------------------------------------- atab-add-altn [56] 100.0% [63] 800(8.0%) 0(0.0%) best-and-tied-at-points ...core/alt-table.rkt:91:0 for-loop [70] 100.0% ------------------------------------------------------------------------- argmin [60] 100.0% [64] 200(2.0%) 0(0.0%) ??? ...herbie/simpler-alts/src/mainloop.rkt:114:10 errors [65] 100.0% ------------------------------------------------------------------------- ??? [64] 5.8% atab-add-altn [56] 94.2% [65] 3424(34.1%) 0(0.0%) errors ...herbie/simpler-alts/src/points.rkt:192:0 for-loop [73] 70.5% temp85_0 [74] 29.5% ------------------------------------------------------------------------- localize-error [49] 2.6% for-loop [16] 7.8% for-loop [15] 8.0% map [14] 10.5% ??? [75] 35.5% ??? [61] 35.5% [66] 1528(15.2%) 0(0.0%) hash-ref! .../racket/private/more-scheme.rkt:376:2 ??? [75] 35.5% parse-loop74 [3] 32.2% parse-loop15 [8] 10.5% ??? [6] 8.0% ??? [7] 7.8% f61 [5] 3.3% ??? [78] 2.6% ------------------------------------------------------------------------- location-do [67] 18.9% ??? [61] 81.1% [67] 1328(13.2%) 0(0.0%) location-do .../simpler-alts/src/programs.rkt:87:0 ??? [61] 81.1% location-do [67] 18.9% ------------------------------------------------------------------------- ??? [62] 100.0% [68] 1218(12.1%) 1218(12.1%) for-loop ...mpler-alts/src/core/simplify.rkt:121:2 ------------------------------------------------------------------------- ??? [61] 100.0% [69] 824(8.2%) 616(6.1%) ival-div ...simpler-alts/src/biginterval.rkt:149:0 bfadd [76] 25.2% ------------------------------------------------------------------------- best-and-tied-at-points [63] 100.0% [70] 800(8.0%) 400(4.0%) for-loop ...mpler-alts/src/core/alt-table.rkt:94:4 ??? [77] 50.0% ------------------------------------------------------------------------- ??? [61] 100.0% [71] 424(4.2%) 0(0.0%) bf ...ath-lib/math/private/bigfloat/mpfr.rkt:615:2 new-mpfr [80] 100.0% ------------------------------------------------------------------------- ??? [61] 100.0% [72] 206(2.1%) 206(2.1%) ??? ...cts/racket/contract/private/list.rkt:209:10 ------------------------------------------------------------------------- errors [65] 100.0% [73] 2414(24.0%) 400(4.0%) for-loop ...rbie/simpler-alts/src/points.rkt:194:2 .../more-scheme.rkt:261:28 [20] 83.4% ------------------------------------------------------------------------- loop [92] 9.7% eval-const-expr [12] 41.0% errors [65] 49.2% [74] 2052(20.4%) 0(0.0%) temp85_0 (unknown source) compile15 [79] 100.0% ------------------------------------------------------------------------- hash-ref! [66] 100.0% [75] 1328(13.2%) 0(0.0%) ??? ...rbie/simpler-alts/src/core/taylor.rkt:44:15 hash-ref! [66] 100.0% ------------------------------------------------------------------------- ival-add [46] 49.5% ival-div [69] 50.5% [76] 412(4.1%) 0(0.0%) bfadd ...-lib/math/private/bigfloat/mpfr.rkt:835:4 new-mpfr [80] 100.0% ------------------------------------------------------------------------- for-loop [70] 100.0% [77] 400(4.0%) 400(4.0%) ??? ...7.5/collects/racket/private/for.rkt:1236:14 ------------------------------------------------------------------------- hash-ref! [66] 100.0% [78] 200(2.0%) 0(0.0%) ??? ...ie/simpler-alts/src/core/localize.rkt:16:13 loop [92] 100.0% ------------------------------------------------------------------------- temp85_0 [74] 100.0% [79] 2052(20.4%) 0(0.0%) compile15 (unknown source) temp91_0 [81] 100.0% ------------------------------------------------------------------------- bfadd [76] 49.3% bf [71] 50.7% [80] 836(8.3%) 836(8.3%) new-mpfr ...b/math/private/bigfloat/mpfr.rkt:348:0 ------------------------------------------------------------------------- compile15 [79] 100.0% [81] 2052(20.4%) 0(0.0%) temp91_0 (unknown source) temp118_0 [82] 79.3% compile-top9 [83] 20.7% ------------------------------------------------------------------------- temp91_0 [81] 100.0% [82] 1628(16.2%) 0(0.0%) temp118_0 (unknown source) expand-capturing-lifts [84] 100.0% ------------------------------------------------------------------------- temp91_0 [81] 100.0% [83] 424(4.2%) 0(0.0%) compile-top9 (unknown source) compile-forms33 [85] 100.0% ------------------------------------------------------------------------- loop [92] 11.2% temp118_0 [82] 88.8% [84] 1834(18.3%) 0(0.0%) expand-capturing-lifts (unknown source) lambda-clause-expander [86] 88.8% dispatch-transformer41 [87] 11.2% ------------------------------------------------------------------------- compile-top9 [83] 100.0% [85] 424(4.2%) 0(0.0%) compile-forms33 (unknown source) for-loop [90] 100.0% ------------------------------------------------------------------------- expand-capturing-lifts [84] 100.0% [86] 1628(16.2%) 0(0.0%) lambda-clause-expander (unknown source) finish-bodys [88] 100.0% ------------------------------------------------------------------------- for-loop [90] 49.5% expand-capturing-lifts [84] 50.5% [87] 408(4.1%) 0(0.0%) dispatch-transformer41 (unknown source) apply-transformer52 [89] 100.0% ------------------------------------------------------------------------- lambda-clause-expander [86] 21.0% for-loop [90] 79.0% [88] 1628(16.2%) 200(2.0%) finish-bodys (unknown source) for-loop [90] 96.9% ------------------------------------------------------------------------- dispatch-transformer41 [87] 100.0% [89] 408(4.1%) 0(0.0%) apply-transformer52 (unknown source) apply-transformer-in-context [91] 50.5% loop [92] 49.5% ------------------------------------------------------------------------- fallback-loop [107] 0.8% for-loop [90] 18.2% compile-forms33 [85] 20.7% finish-bodys [88] 60.4% [90] 2052(20.4%) 200(2.0%) for-loop (unknown source) finish-bodys [88] 50.1% compile-module-linklet57 [93] 20.7% for-loop [90] 18.2% loop [92] 4.9% expand-identifier [94] 1.5% expand-id-application-form17 [4] 1.4% syntax-e [9] 1.0% expand-implicit [10] 0.8% dispatch-transformer41 [87] 0.7% ------------------------------------------------------------------------- apply-transformer52 [89] 100.0% [91] 206(2.1%) 0(0.0%) apply-transformer-in-context (unknown source) new-lambda [95] 100.0% ------------------------------------------------------------------------- ??? [78] 0.4% .../more-scheme.rkt:261:28 [20] 4.1% loop [92] 12.0% apply-transformer52 [89] 12.5% eval-const-expr [12] 12.8% syntax-e/no-taint [17] 16.5% for-loop [90] 16.8% for-loop [29] 24.9% [92] 1614(16.1%) 200(2.0%) loop (unknown source) expand-id-application-form17 [4] 16.8% gf [97] 16.5% expand-capturing-lifts [84] 12.8% ??? [96] 12.5% core-form-sym [99] 12.5% loop [92] 12.0% temp85_0 [74] 4.1% ??? [61] 0.4% ------------------------------------------------------------------------- for-loop [90] 100.0% [93] 424(4.2%) 424(4.2%) compile-module-linklet57 (unknown source) ------------------------------------------------------------------------- for-loop [90] 100.0% [94] 216(2.2%) 216(2.2%) expand-identifier (unknown source) ------------------------------------------------------------------------- apply-transformer-in-context [91]100.0% [95] 206(2.1%) 0(0.0%) new-lambda ...ollects/racket/private/kw.rkt:856:11 datum->syntax [98] 100.0% ------------------------------------------------------------------------- loop [92] 12.5% .../more-scheme.rkt:261:28 [20] 87.5% [96] 1616(16.1%) 804(8.0%) ??? ...e/simpler-alts/src/syntax/syntax.rkt:214:17 return/no-unsupplied [101] 24.9% ??? [102] 12.7% list-member? [103] 12.6% ------------------------------------------------------------------------- loop [92] 100.0% [97] 400(4.0%) 0(0.0%) gf (unknown source) cache-or-reuse-set [104] 50.0% propagation-merge [105] 50.0% ------------------------------------------------------------------------- new-lambda [95] 100.0% [98] 206(2.1%) 206(2.1%) datum->syntax (unknown source) ------------------------------------------------------------------------- loop [92] 100.0% [99] 202(2.0%) 0(0.0%) core-form-sym (unknown source) resolve+shift28 [100] 100.0% ------------------------------------------------------------------------- expand-implicit [10] 24.6% core-form-sym [99] 24.9% expand-id-application-form17 [4] 50.5% [100] 812(8.1%) 612(6.1%) resolve+shift28 (unknown source) fallback-loop [107] 24.6% ------------------------------------------------------------------------- ??? [96] 100.0% [101] 402(4.0%) 200(2.0%) return/no-unsupplied ...ct/private/arr-i.rkt:566:0 filter [106] 50.2% ------------------------------------------------------------------------- ??? [96] 100.0% [102] 206(2.1%) 206(2.1%) ??? ...ects/racket/contract/private/prop.rkt:301:4 ------------------------------------------------------------------------- ??? [96] 100.0% [103] 204(2.0%) 204(2.0%) list-member? ...llects/racket/private/set.rkt:24:0 ------------------------------------------------------------------------- gf [97] 100.0% [104] 200(2.0%) 200(2.0%) cache-or-reuse-set (unknown source) ------------------------------------------------------------------------- gf [97] 100.0% [105] 200(2.0%) 200(2.0%) propagation-merge (unknown source) ------------------------------------------------------------------------- return/no-unsupplied [101] 100.0% [106] 202(2.0%) 202(2.0%) filter ...5/collects/racket/private/list.rkt:256:2 ------------------------------------------------------------------------- resolve+shift28 [100] 100.0% [107] 200(2.0%) 0(0.0%) fallback-loop (unknown source) for-loop [90] 100.0% -------------------------------------------------------------------------