[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary":3,"summaries-facets-categories":189,"summary-related-484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary":3774},{"id":4,"title":5,"ai":6,"body":13,"categories":150,"created_at":152,"date_modified":152,"description":144,"extension":153,"faq":152,"featured":154,"kicker_label":152,"meta":155,"navigation":172,"path":173,"published_at":152,"question":152,"scraped_at":174,"seo":175,"sitemap":176,"source_id":177,"source_name":178,"source_type":179,"source_url":180,"stem":181,"tags":182,"thumbnail_url":152,"tldr":186,"tweet":152,"unknown_tags":187,"__hash__":188},"summaries\u002Fsummaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary.md","Rainbow Deploys: Infinite Colors for K8s Long-Draining Services",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",5066,1483,9039,0.0012474,{"type":14,"value":15,"toc":143},"minimark",[16,21,25,28,55,70,74,77,85,88,133,136,140],[17,18,20],"h2",{"id":19},"core-technique-selector-shifts-without-pod-disruption","Core Technique: Selector Shifts Without Pod Disruption",[22,23,24],"p",{},"Rainbow deploys extend blue\u002Fgreen by using infinite \"colors\" (first 6 hex chars of git HEAD) as Deployment labels matched by Service selectors. Deploy new versions by creating fresh Deployments with unique colors, then update the Service selector to point only to the new pods. Old Deployments persist, allowing TCP\u002FHTTP connections to drain over time (e.g., minutes or hours) until clients close them or you delete the old Deployment. This avoids rolling updates that kill long-lived connections abruptly.",[22,26,27],{},"Key Kubernetes config in app.yaml:",[29,30,31,40],"ul",{},[32,33,34,35,39],"li",{},"Deployment has ",[36,37,38],"code",{},"color: __COLOR__"," label.",[32,41,42,43,46,47,50,51,54],{},"Service selector matches ",[36,44,45],{},"app: rainbow-deploys, color: __COLOR__",".\n",[36,48,49],{},"make install"," runs ",[36,52,53],{},"cat app.yaml | sed s\u002F__COLOR__\u002F$(COLOR)\u002Fg | kubectl apply -f -",", where COLOR derives from git HEAD, repointing the Service instantly while old pods handle draining traffic.",[22,56,57,58,61,62,65,66,69],{},"Trade-off: Old Deployments accumulate (e.g., ",[36,59,60],{},"rainbow-deploys-3c3fdc",", ",[36,63,64],{},"rainbow-deploys-9d2cc9","), requiring manual cleanup via ",[36,67,68],{},"kubectl delete deployment \u003Cold-name>"," to reclaim resources.",[17,71,73],{"id":72},"demo-setup-and-validation","Demo Setup and Validation",[22,75,76],{},"Repo includes Go app (main.go) serving:",[29,78,79,82],{},[32,80,81],{},"HTTP on :8080: Returns hex color of git HEAD at build time.",[32,83,84],{},"TCP on :8081: Prints color every 5 seconds indefinitely.",[22,86,87],{},"Prerequisites: minikube, Docker env setup.\nCommands:",[89,90,91,101,116,123],"ol",{},[32,92,93,96,97,100],{},[36,94,95],{},"minikube start; eval $(minikube docker-env); export DOCKER_IMAGE=your-image; make image; make install"," → Creates ",[36,98,99],{},"rainbow-deploys-\u003Ccolor>"," Deployment (2 replicas), NodePort Service (8080→31080, 8081→31081).",[32,102,103,104,107,108],{},"Access: ",[36,105,106],{},"minikube service rainbow-deploys"," → http:\u002F\u002F",[109,110,111,112,115],"minikube-ip",{},":31080 shows color; ",[36,113,114],{},"telnet \u003Cip> 31081"," streams color.",[32,117,118,119,122],{},"Rebuild\u002Fdeploy: ",[36,120,121],{},"make image; make install"," → New Deployment appears, Service shifts (old connections on TCP continue printing old color).",[32,124,125,128,129,132],{},[36,126,127],{},"kubectl get deployments"," shows both; delete older after drain: ",[36,130,131],{},"kubectl delete deployment rainbow-deploys-3c3fdc",".",[22,134,135],{},"Dockerfile, Makefile, app.yaml provided for direct replication; LICENSE is MIT.",[17,137,139],{"id":138},"when-to-use-handling-stateful-realities","When to Use: Handling Stateful Realities",[22,141,142],{},"Ideal for services with long-running TCP (e.g., WebSockets, streaming) or in-memory state where restarts lose connections. Contrasts stateless short-cycle services fine with standard rolling updates. See author's 2018 blog for production cases avoiding backend restarts.",{"title":144,"searchDepth":145,"depth":145,"links":146},"",2,[147,148,149],{"id":19,"depth":145,"text":20},{"id":72,"depth":145,"text":73},{"id":138,"depth":145,"text":139},[151],"DevOps & Cloud",null,"md",false,{"content_references":156,"triage":167},[157,163],{"type":158,"title":159,"author":160,"url":161,"context":162},"other","BlueGreenDeployment","Martin Fowler","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FBlueGreenDeployment.html","mentioned",{"type":158,"title":164,"author":165,"url":166,"context":162},"Rainbow Deploys with Kubernetes","Brandon Dimcheff","http:\u002F\u002Fbrandon.dimcheff.com\u002F2018\u002F02\u002Frainbow-deploys-with-kubernetes\u002F",{"relevance":168,"novelty":169,"quality":168,"actionability":168,"composite":170,"reasoning":171},4,3,3.8,"Category: DevOps & Cloud. The article provides a practical technique for managing Kubernetes deployments that addresses a specific pain point of maintaining long-lived connections during updates. It includes actionable commands and configurations that developers can implement directly in their workflows.",true,"\u002Fsummaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary","2026-04-16 03:04:29",{"title":5,"description":144},{"loc":173},"484a145fcb3a7450","__oneoff__","article","https:\u002F\u002Fgithub.com\u002Fbdimcheff\u002Frainbow-deploys","summaries\u002F484a145fcb3a7450-rainbow-deploys-infinite-colors-for-k8s-long-drain-summary",[183,184,185],"devops","cloud","open-source","Shift Kubernetes Service selectors to new git-colored Deployments for zero-downtime deploys on stateful, long-connection services—old pods drain naturally without restarts.",[],"SBaYiCTavDVEr6FZrSLVtAMKAiZH7V6FEQMb5M58L0w",[190,193,196,199,202,205,207,209,211,213,215,217,220,222,224,226,228,230,232,234,236,238,241,244,246,248,251,253,255,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204,1206,1208,1210,1212,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386,1388,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512,1514,1516,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2616,2618,2620,2622,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2716,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3032,3034,3036,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158,3160,3162,3164,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186,3188,3190,3192,3194,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220,3222,3224,3226,3228,3230,3232,3234,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284,3286,3288,3290,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374,3376,3378,3380,3382,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546,3548,3550,3552,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572,3574,3576,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634,3636,3638,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3696,3698,3700,3702,3704,3706,3708,3710,3712,3714,3716,3718,3720,3722,3724,3726,3728,3730,3732,3734,3736,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3762,3764,3766,3768,3770,3772],{"categories":191},[192],"Developer Productivity",{"categories":194},[195],"Business & SaaS",{"categories":197},[198],"AI & LLMs",{"categories":200},[201],"AI Automation",{"categories":203},[204],"Product Strategy",{"categories":206},[198],{"categories":208},[192],{"categories":210},[195],{"categories":212},[],{"categories":214},[198],{"categories":216},[],{"categories":218},[219],"AI News & Trends",{"categories":221},[201],{"categories":223},[219],{"categories":225},[201],{"categories":227},[201],{"categories":229},[198],{"categories":231},[198],{"categories":233},[219],{"categories":235},[198],{"categories":237},[],{"categories":239},[240],"Design & Frontend",{"categories":242},[243],"Data Science & Visualization",{"categories":245},[219],{"categories":247},[],{"categories":249},[250],"Software Engineering",{"categories":252},[198],{"categories":254},[201],{"categories":256},[257],"Marketing & Growth",{"categories":259},[198],{"categories":261},[201],{"categories":263},[],{"categories":265},[],{"categories":267},[240],{"categories":269},[201],{"categories":271},[192],{"categories":273},[240],{"categories":275},[198],{"categories":277},[201],{"categories":279},[219],{"categories":281},[],{"categories":283},[],{"categories":285},[201],{"categories":287},[250],{"categories":289},[],{"categories":291},[195],{"categories":293},[],{"categories":295},[],{"categories":297},[201],{"categories":299},[201],{"categories":301},[198],{"categories":303},[],{"categories":305},[250],{"categories":307},[],{"categories":309},[],{"categories":311},[],{"categories":313},[198],{"categories":315},[257],{"categories":317},[240],{"categories":319},[240],{"categories":321},[198],{"categories":323},[201],{"categories":325},[198],{"categories":327},[198],{"categories":329},[201],{"categories":331},[201],{"categories":333},[243],{"categories":335},[219],{"categories":337},[201],{"categories":339},[257],{"categories":341},[201],{"categories":343},[204],{"categories":345},[],{"categories":347},[201],{"categories":349},[],{"categories":351},[201],{"categories":353},[250],{"categories":355},[240],{"categories":357},[198],{"categories":359},[],{"categories":361},[],{"categories":363},[201],{"categories":365},[],{"categories":367},[198],{"categories":369},[],{"categories":371},[192],{"categories":373},[250],{"categories":375},[195],{"categories":377},[219],{"categories":379},[198],{"categories":381},[],{"categories":383},[198],{"categories":385},[],{"categories":387},[250],{"categories":389},[243],{"categories":391},[],{"categories":393},[198],{"categories":395},[240],{"categories":397},[],{"categories":399},[240],{"categories":401},[201],{"categories":403},[],{"categories":405},[201],{"categories":407},[219],{"categories":409},[195],{"categories":411},[198],{"categories":413},[],{"categories":415},[201],{"categories":417},[198],{"categories":419},[204],{"categories":421},[],{"categories":423},[198],{"categories":425},[201],{"categories":427},[201],{"categories":429},[],{"categories":431},[243],{"categories":433},[198],{"categories":435},[],{"categories":437},[192],{"categories":439},[195],{"categories":441},[198],{"categories":443},[201],{"categories":445},[250],{"categories":447},[198],{"categories":449},[],{"categories":451},[],{"categories":453},[198],{"categories":455},[],{"categories":457},[240],{"categories":459},[],{"categories":461},[198],{"categories":463},[],{"categories":465},[201],{"categories":467},[198],{"categories":469},[240],{"categories":471},[],{"categories":473},[198],{"categories":475},[198],{"categories":477},[195],{"categories":479},[201],{"categories":481},[198],{"categories":483},[240],{"categories":485},[201],{"categories":487},[],{"categories":489},[],{"categories":491},[219],{"categories":493},[],{"categories":495},[198],{"categories":497},[195,257],{"categories":499},[],{"categories":501},[198],{"categories":503},[],{"categories":505},[],{"categories":507},[198],{"categories":509},[],{"categories":511},[198],{"categories":513},[151],{"categories":515},[],{"categories":517},[219],{"categories":519},[240],{"categories":521},[],{"categories":523},[219],{"categories":525},[219],{"categories":527},[198],{"categories":529},[257],{"categories":531},[],{"categories":533},[195],{"categories":535},[],{"categories":537},[198,151],{"categories":539},[198],{"categories":541},[198],{"categories":543},[201],{"categories":545},[198,250],{"categories":547},[243],{"categories":549},[198],{"categories":551},[257],{"categories":553},[201],{"categories":555},[201],{"categories":557},[],{"categories":559},[201],{"categories":561},[198,195],{"categories":563},[],{"categories":565},[240],{"categories":567},[240],{"categories":569},[],{"categories":571},[],{"categories":573},[219],{"categories":575},[],{"categories":577},[192],{"categories":579},[250],{"categories":581},[198],{"categories":583},[240],{"categories":585},[201],{"categories":587},[250],{"categories":589},[219],{"categories":591},[240],{"categories":593},[],{"categories":595},[198],{"categories":597},[198],{"categories":599},[198],{"categories":601},[219],{"categories":603},[192],{"categories":605},[198],{"categories":607},[201],{"categories":609},[151],{"categories":611},[240],{"categories":613},[201],{"categories":615},[],{"categories":617},[],{"categories":619},[240],{"categories":621},[219],{"categories":623},[243],{"categories":625},[],{"categories":627},[198],{"categories":629},[198],{"categories":631},[195],{"categories":633},[198],{"categories":635},[198],{"categories":637},[219],{"categories":639},[],{"categories":641},[201],{"categories":643},[250],{"categories":645},[],{"categories":647},[198],{"categories":649},[198],{"categories":651},[201],{"categories":653},[],{"categories":655},[],{"categories":657},[198],{"categories":659},[],{"categories":661},[195],{"categories":663},[201],{"categories":665},[],{"categories":667},[192],{"categories":669},[198],{"categories":671},[195],{"categories":673},[219],{"categories":675},[],{"categories":677},[],{"categories":679},[],{"categories":681},[219],{"categories":683},[219],{"categories":685},[],{"categories":687},[],{"categories":689},[195],{"categories":691},[],{"categories":693},[],{"categories":695},[192],{"categories":697},[],{"categories":699},[257],{"categories":701},[201],{"categories":703},[195],{"categories":705},[201],{"categories":707},[250],{"categories":709},[],{"categories":711},[204],{"categories":713},[240],{"categories":715},[250],{"categories":717},[198],{"categories":719},[201],{"categories":721},[195],{"categories":723},[198],{"categories":725},[],{"categories":727},[],{"categories":729},[250],{"categories":731},[243],{"categories":733},[204],{"categories":735},[201],{"categories":737},[198],{"categories":739},[],{"categories":741},[151],{"categories":743},[],{"categories":745},[201],{"categories":747},[],{"categories":749},[],{"categories":751},[198],{"categories":753},[240],{"categories":755},[257],{"categories":757},[201],{"categories":759},[],{"categories":761},[192],{"categories":763},[],{"categories":765},[219],{"categories":767},[198,151],{"categories":769},[219],{"categories":771},[198],{"categories":773},[195],{"categories":775},[198],{"categories":777},[],{"categories":779},[195],{"categories":781},[],{"categories":783},[250],{"categories":785},[240],{"categories":787},[219],{"categories":789},[243],{"categories":791},[192],{"categories":793},[198],{"categories":795},[250],{"categories":797},[],{"categories":799},[],{"categories":801},[204],{"categories":803},[],{"categories":805},[198],{"categories":807},[],{"categories":809},[240],{"categories":811},[240],{"categories":813},[240],{"categories":815},[],{"categories":817},[],{"categories":819},[219],{"categories":821},[201],{"categories":823},[198],{"categories":825},[198],{"categories":827},[198],{"categories":829},[195],{"categories":831},[198],{"categories":833},[],{"categories":835},[250],{"categories":837},[250],{"categories":839},[195],{"categories":841},[],{"categories":843},[198],{"categories":845},[198],{"categories":847},[195],{"categories":849},[219],{"categories":851},[257],{"categories":853},[201],{"categories":855},[],{"categories":857},[240],{"categories":859},[],{"categories":861},[198],{"categories":863},[],{"categories":865},[195],{"categories":867},[201],{"categories":869},[],{"categories":871},[151],{"categories":873},[243],{"categories":875},[250],{"categories":877},[257],{"categories":879},[250],{"categories":881},[201],{"categories":883},[],{"categories":885},[],{"categories":887},[201],{"categories":889},[192],{"categories":891},[201],{"categories":893},[204],{"categories":895},[195],{"categories":897},[],{"categories":899},[198],{"categories":901},[204],{"categories":903},[198],{"categories":905},[198],{"categories":907},[257],{"categories":909},[240],{"categories":911},[201],{"categories":913},[],{"categories":915},[],{"categories":917},[151],{"categories":919},[250],{"categories":921},[],{"categories":923},[201],{"categories":925},[198],{"categories":927},[240,198],{"categories":929},[192],{"categories":931},[],{"categories":933},[198],{"categories":935},[192],{"categories":937},[240],{"categories":939},[201],{"categories":941},[250],{"categories":943},[],{"categories":945},[198],{"categories":947},[],{"categories":949},[192],{"categories":951},[],{"categories":953},[201],{"categories":955},[204],{"categories":957},[198],{"categories":959},[198],{"categories":961},[240],{"categories":963},[201],{"categories":965},[151],{"categories":967},[240],{"categories":969},[201],{"categories":971},[198],{"categories":973},[198],{"categories":975},[198],{"categories":977},[219],{"categories":979},[],{"categories":981},[204],{"categories":983},[201],{"categories":985},[240],{"categories":987},[201],{"categories":989},[250],{"categories":991},[240],{"categories":993},[201],{"categories":995},[219],{"categories":997},[],{"categories":999},[198],{"categories":1001},[240],{"categories":1003},[198],{"categories":1005},[192],{"categories":1007},[219],{"categories":1009},[198],{"categories":1011},[257],{"categories":1013},[198],{"categories":1015},[198],{"categories":1017},[201],{"categories":1019},[201],{"categories":1021},[198],{"categories":1023},[201],{"categories":1025},[240],{"categories":1027},[198],{"categories":1029},[],{"categories":1031},[],{"categories":1033},[250],{"categories":1035},[],{"categories":1037},[192],{"categories":1039},[151],{"categories":1041},[],{"categories":1043},[192],{"categories":1045},[195],{"categories":1047},[257],{"categories":1049},[],{"categories":1051},[195],{"categories":1053},[],{"categories":1055},[],{"categories":1057},[],{"categories":1059},[],{"categories":1061},[],{"categories":1063},[198],{"categories":1065},[201],{"categories":1067},[151],{"categories":1069},[192],{"categories":1071},[198],{"categories":1073},[250],{"categories":1075},[204],{"categories":1077},[198],{"categories":1079},[257],{"categories":1081},[198],{"categories":1083},[198],{"categories":1085},[198],{"categories":1087},[198,192],{"categories":1089},[250],{"categories":1091},[250],{"categories":1093},[240],{"categories":1095},[198],{"categories":1097},[],{"categories":1099},[],{"categories":1101},[],{"categories":1103},[250],{"categories":1105},[243],{"categories":1107},[219],{"categories":1109},[240],{"categories":1111},[],{"categories":1113},[198],{"categories":1115},[198],{"categories":1117},[],{"categories":1119},[],{"categories":1121},[201],{"categories":1123},[198],{"categories":1125},[195],{"categories":1127},[],{"categories":1129},[192],{"categories":1131},[198],{"categories":1133},[192],{"categories":1135},[198],{"categories":1137},[250],{"categories":1139},[257],{"categories":1141},[198,240],{"categories":1143},[219],{"categories":1145},[240],{"categories":1147},[],{"categories":1149},[151],{"categories":1151},[240],{"categories":1153},[201],{"categories":1155},[],{"categories":1157},[],{"categories":1159},[],{"categories":1161},[],{"categories":1163},[250],{"categories":1165},[201],{"categories":1167},[201],{"categories":1169},[151],{"categories":1171},[198],{"categories":1173},[198],{"categories":1175},[198],{"categories":1177},[],{"categories":1179},[240],{"categories":1181},[],{"categories":1183},[],{"categories":1185},[201],{"categories":1187},[],{"categories":1189},[],{"categories":1191},[257],{"categories":1193},[257],{"categories":1195},[201],{"categories":1197},[],{"categories":1199},[198],{"categories":1201},[198],{"categories":1203},[250],{"categories":1205},[240],{"categories":1207},[240],{"categories":1209},[201],{"categories":1211},[192],{"categories":1213},[198],{"categories":1215},[240],{"categories":1217},[240],{"categories":1219},[201],{"categories":1221},[201],{"categories":1223},[198],{"categories":1225},[],{"categories":1227},[],{"categories":1229},[198],{"categories":1231},[201],{"categories":1233},[219],{"categories":1235},[250],{"categories":1237},[192],{"categories":1239},[198],{"categories":1241},[],{"categories":1243},[201],{"categories":1245},[201],{"categories":1247},[],{"categories":1249},[192],{"categories":1251},[198],{"categories":1253},[192],{"categories":1255},[192],{"categories":1257},[],{"categories":1259},[],{"categories":1261},[201],{"categories":1263},[201],{"categories":1265},[198],{"categories":1267},[198],{"categories":1269},[219],{"categories":1271},[243],{"categories":1273},[204],{"categories":1275},[219],{"categories":1277},[240],{"categories":1279},[],{"categories":1281},[219],{"categories":1283},[],{"categories":1285},[],{"categories":1287},[],{"categories":1289},[],{"categories":1291},[250],{"categories":1293},[243],{"categories":1295},[],{"categories":1297},[198],{"categories":1299},[198],{"categories":1301},[243],{"categories":1303},[250],{"categories":1305},[],{"categories":1307},[],{"categories":1309},[201],{"categories":1311},[219],{"categories":1313},[219],{"categories":1315},[201],{"categories":1317},[192],{"categories":1319},[198,151],{"categories":1321},[],{"categories":1323},[240],{"categories":1325},[192],{"categories":1327},[201],{"categories":1329},[240],{"categories":1331},[],{"categories":1333},[201],{"categories":1335},[201],{"categories":1337},[198],{"categories":1339},[257],{"categories":1341},[250],{"categories":1343},[240],{"categories":1345},[],{"categories":1347},[201],{"categories":1349},[198],{"categories":1351},[201],{"categories":1353},[201],{"categories":1355},[201],{"categories":1357},[257],{"categories":1359},[201],{"categories":1361},[198],{"categories":1363},[],{"categories":1365},[257],{"categories":1367},[219],{"categories":1369},[201],{"categories":1371},[],{"categories":1373},[],{"categories":1375},[198],{"categories":1377},[201],{"categories":1379},[219],{"categories":1381},[201],{"categories":1383},[],{"categories":1385},[],{"categories":1387},[],{"categories":1389},[201],{"categories":1391},[],{"categories":1393},[],{"categories":1395},[243],{"categories":1397},[198],{"categories":1399},[243],{"categories":1401},[219],{"categories":1403},[198],{"categories":1405},[198],{"categories":1407},[201],{"categories":1409},[198],{"categories":1411},[],{"categories":1413},[],{"categories":1415},[151],{"categories":1417},[],{"categories":1419},[],{"categories":1421},[192],{"categories":1423},[],{"categories":1425},[],{"categories":1427},[],{"categories":1429},[],{"categories":1431},[250],{"categories":1433},[219],{"categories":1435},[257],{"categories":1437},[195],{"categories":1439},[198],{"categories":1441},[198],{"categories":1443},[195],{"categories":1445},[],{"categories":1447},[240],{"categories":1449},[201],{"categories":1451},[195],{"categories":1453},[198],{"categories":1455},[198],{"categories":1457},[192],{"categories":1459},[],{"categories":1461},[192],{"categories":1463},[198],{"categories":1465},[257],{"categories":1467},[201],{"categories":1469},[219],{"categories":1471},[195],{"categories":1473},[198],{"categories":1475},[201],{"categories":1477},[],{"categories":1479},[198],{"categories":1481},[192],{"categories":1483},[198],{"categories":1485},[],{"categories":1487},[219],{"categories":1489},[198],{"categories":1491},[],{"categories":1493},[195],{"categories":1495},[198],{"categories":1497},[],{"categories":1499},[],{"categories":1501},[],{"categories":1503},[198],{"categories":1505},[],{"categories":1507},[151],{"categories":1509},[198],{"categories":1511},[],{"categories":1513},[198],{"categories":1515},[198],{"categories":1517},[198],{"categories":1519},[198,151],{"categories":1521},[198],{"categories":1523},[198],{"categories":1525},[240],{"categories":1527},[201],{"categories":1529},[],{"categories":1531},[201],{"categories":1533},[198],{"categories":1535},[198],{"categories":1537},[198],{"categories":1539},[192],{"categories":1541},[192],{"categories":1543},[250],{"categories":1545},[240],{"categories":1547},[201],{"categories":1549},[],{"categories":1551},[198],{"categories":1553},[219],{"categories":1555},[198],{"categories":1557},[195],{"categories":1559},[],{"categories":1561},[151],{"categories":1563},[240],{"categories":1565},[240],{"categories":1567},[201],{"categories":1569},[219],{"categories":1571},[201],{"categories":1573},[198],{"categories":1575},[],{"categories":1577},[198],{"categories":1579},[],{"categories":1581},[],{"categories":1583},[198],{"categories":1585},[198],{"categories":1587},[198],{"categories":1589},[201],{"categories":1591},[198],{"categories":1593},[],{"categories":1595},[243],{"categories":1597},[201],{"categories":1599},[],{"categories":1601},[],{"categories":1603},[198],{"categories":1605},[219],{"categories":1607},[],{"categories":1609},[240],{"categories":1611},[151],{"categories":1613},[219],{"categories":1615},[250],{"categories":1617},[250],{"categories":1619},[219],{"categories":1621},[219],{"categories":1623},[151],{"categories":1625},[],{"categories":1627},[219],{"categories":1629},[198],{"categories":1631},[192],{"categories":1633},[219],{"categories":1635},[],{"categories":1637},[243],{"categories":1639},[219],{"categories":1641},[250],{"categories":1643},[219],{"categories":1645},[151],{"categories":1647},[198],{"categories":1649},[198],{"categories":1651},[],{"categories":1653},[195],{"categories":1655},[],{"categories":1657},[],{"categories":1659},[198],{"categories":1661},[198],{"categories":1663},[198],{"categories":1665},[198],{"categories":1667},[],{"categories":1669},[243],{"categories":1671},[192],{"categories":1673},[],{"categories":1675},[198],{"categories":1677},[198],{"categories":1679},[151],{"categories":1681},[151],{"categories":1683},[],{"categories":1685},[201],{"categories":1687},[219],{"categories":1689},[219],{"categories":1691},[198],{"categories":1693},[201],{"categories":1695},[],{"categories":1697},[240],{"categories":1699},[198],{"categories":1701},[198],{"categories":1703},[],{"categories":1705},[],{"categories":1707},[151],{"categories":1709},[198],{"categories":1711},[250],{"categories":1713},[195],{"categories":1715},[198],{"categories":1717},[],{"categories":1719},[201],{"categories":1721},[192],{"categories":1723},[192],{"categories":1725},[],{"categories":1727},[198],{"categories":1729},[240],{"categories":1731},[201],{"categories":1733},[],{"categories":1735},[198],{"categories":1737},[198],{"categories":1739},[201],{"categories":1741},[],{"categories":1743},[201],{"categories":1745},[250],{"categories":1747},[],{"categories":1749},[198],{"categories":1751},[],{"categories":1753},[198],{"categories":1755},[],{"categories":1757},[198],{"categories":1759},[198],{"categories":1761},[],{"categories":1763},[198],{"categories":1765},[219],{"categories":1767},[198],{"categories":1769},[198],{"categories":1771},[192],{"categories":1773},[198],{"categories":1775},[219],{"categories":1777},[201],{"categories":1779},[],{"categories":1781},[198],{"categories":1783},[257],{"categories":1785},[],{"categories":1787},[],{"categories":1789},[],{"categories":1791},[192],{"categories":1793},[219],{"categories":1795},[201],{"categories":1797},[198],{"categories":1799},[240],{"categories":1801},[201],{"categories":1803},[],{"categories":1805},[201],{"categories":1807},[],{"categories":1809},[198],{"categories":1811},[201],{"categories":1813},[198],{"categories":1815},[],{"categories":1817},[198],{"categories":1819},[198],{"categories":1821},[219],{"categories":1823},[240],{"categories":1825},[201],{"categories":1827},[240],{"categories":1829},[195],{"categories":1831},[],{"categories":1833},[],{"categories":1835},[198],{"categories":1837},[192],{"categories":1839},[219],{"categories":1841},[],{"categories":1843},[],{"categories":1845},[250],{"categories":1847},[240],{"categories":1849},[],{"categories":1851},[198],{"categories":1853},[],{"categories":1855},[257],{"categories":1857},[198],{"categories":1859},[151],{"categories":1861},[250],{"categories":1863},[],{"categories":1865},[201],{"categories":1867},[198],{"categories":1869},[201],{"categories":1871},[201],{"categories":1873},[198],{"categories":1875},[],{"categories":1877},[192],{"categories":1879},[198],{"categories":1881},[195],{"categories":1883},[250],{"categories":1885},[240],{"categories":1887},[],{"categories":1889},[],{"categories":1891},[],{"categories":1893},[201],{"categories":1895},[240],{"categories":1897},[219],{"categories":1899},[198],{"categories":1901},[219],{"categories":1903},[240],{"categories":1905},[],{"categories":1907},[240],{"categories":1909},[219],{"categories":1911},[195],{"categories":1913},[198],{"categories":1915},[219],{"categories":1917},[257],{"categories":1919},[],{"categories":1921},[],{"categories":1923},[243],{"categories":1925},[198,250],{"categories":1927},[219],{"categories":1929},[198],{"categories":1931},[201],{"categories":1933},[201],{"categories":1935},[198],{"categories":1937},[],{"categories":1939},[250],{"categories":1941},[198],{"categories":1943},[243],{"categories":1945},[201],{"categories":1947},[257],{"categories":1949},[151],{"categories":1951},[],{"categories":1953},[192],{"categories":1955},[201],{"categories":1957},[201],{"categories":1959},[250],{"categories":1961},[198],{"categories":1963},[198],{"categories":1965},[],{"categories":1967},[],{"categories":1969},[],{"categories":1971},[151],{"categories":1973},[219],{"categories":1975},[198],{"categories":1977},[198],{"categories":1979},[198],{"categories":1981},[],{"categories":1983},[243],{"categories":1985},[195],{"categories":1987},[],{"categories":1989},[201],{"categories":1991},[151],{"categories":1993},[],{"categories":1995},[240],{"categories":1997},[240],{"categories":1999},[],{"categories":2001},[250],{"categories":2003},[240],{"categories":2005},[198],{"categories":2007},[],{"categories":2009},[219],{"categories":2011},[198],{"categories":2013},[240],{"categories":2015},[201],{"categories":2017},[219],{"categories":2019},[],{"categories":2021},[201],{"categories":2023},[240],{"categories":2025},[198],{"categories":2027},[],{"categories":2029},[198],{"categories":2031},[198],{"categories":2033},[151],{"categories":2035},[219],{"categories":2037},[243],{"categories":2039},[243],{"categories":2041},[],{"categories":2043},[],{"categories":2045},[],{"categories":2047},[201],{"categories":2049},[250],{"categories":2051},[250],{"categories":2053},[],{"categories":2055},[],{"categories":2057},[198],{"categories":2059},[],{"categories":2061},[201],{"categories":2063},[198],{"categories":2065},[],{"categories":2067},[198],{"categories":2069},[195],{"categories":2071},[198],{"categories":2073},[257],{"categories":2075},[201],{"categories":2077},[198],{"categories":2079},[250],{"categories":2081},[219],{"categories":2083},[201],{"categories":2085},[],{"categories":2087},[219],{"categories":2089},[201],{"categories":2091},[201],{"categories":2093},[],{"categories":2095},[195],{"categories":2097},[201],{"categories":2099},[],{"categories":2101},[198],{"categories":2103},[192],{"categories":2105},[219],{"categories":2107},[151],{"categories":2109},[201],{"categories":2111},[201],{"categories":2113},[192],{"categories":2115},[198],{"categories":2117},[],{"categories":2119},[],{"categories":2121},[240],{"categories":2123},[198,195],{"categories":2125},[],{"categories":2127},[192],{"categories":2129},[243],{"categories":2131},[198],{"categories":2133},[250],{"categories":2135},[198],{"categories":2137},[201],{"categories":2139},[198],{"categories":2141},[198],{"categories":2143},[219],{"categories":2145},[201],{"categories":2147},[],{"categories":2149},[],{"categories":2151},[201],{"categories":2153},[198],{"categories":2155},[151],{"categories":2157},[],{"categories":2159},[198],{"categories":2161},[201],{"categories":2163},[],{"categories":2165},[198],{"categories":2167},[257],{"categories":2169},[243],{"categories":2171},[201],{"categories":2173},[198],{"categories":2175},[151],{"categories":2177},[],{"categories":2179},[198],{"categories":2181},[257],{"categories":2183},[240],{"categories":2185},[198],{"categories":2187},[],{"categories":2189},[257],{"categories":2191},[219],{"categories":2193},[198],{"categories":2195},[198],{"categories":2197},[192],{"categories":2199},[],{"categories":2201},[],{"categories":2203},[240],{"categories":2205},[198],{"categories":2207},[243],{"categories":2209},[257],{"categories":2211},[257],{"categories":2213},[219],{"categories":2215},[],{"categories":2217},[],{"categories":2219},[198],{"categories":2221},[],{"categories":2223},[198,250],{"categories":2225},[219],{"categories":2227},[201],{"categories":2229},[250],{"categories":2231},[198],{"categories":2233},[192],{"categories":2235},[],{"categories":2237},[],{"categories":2239},[192],{"categories":2241},[257],{"categories":2243},[198],{"categories":2245},[],{"categories":2247},[240,198],{"categories":2249},[151],{"categories":2251},[192],{"categories":2253},[],{"categories":2255},[195],{"categories":2257},[195],{"categories":2259},[198],{"categories":2261},[250],{"categories":2263},[201],{"categories":2265},[219],{"categories":2267},[257],{"categories":2269},[240],{"categories":2271},[198],{"categories":2273},[198],{"categories":2275},[198],{"categories":2277},[192],{"categories":2279},[198],{"categories":2281},[201],{"categories":2283},[219],{"categories":2285},[],{"categories":2287},[],{"categories":2289},[243],{"categories":2291},[250],{"categories":2293},[198],{"categories":2295},[240],{"categories":2297},[243],{"categories":2299},[198],{"categories":2301},[198],{"categories":2303},[201],{"categories":2305},[201],{"categories":2307},[198,195],{"categories":2309},[],{"categories":2311},[240],{"categories":2313},[],{"categories":2315},[198],{"categories":2317},[219],{"categories":2319},[192],{"categories":2321},[192],{"categories":2323},[201],{"categories":2325},[198],{"categories":2327},[195],{"categories":2329},[250],{"categories":2331},[257],{"categories":2333},[],{"categories":2335},[219],{"categories":2337},[198],{"categories":2339},[198],{"categories":2341},[219],{"categories":2343},[250],{"categories":2345},[198],{"categories":2347},[201],{"categories":2349},[219],{"categories":2351},[198],{"categories":2353},[240],{"categories":2355},[198],{"categories":2357},[198],{"categories":2359},[151],{"categories":2361},[204],{"categories":2363},[201],{"categories":2365},[198],{"categories":2367},[219],{"categories":2369},[201],{"categories":2371},[257],{"categories":2373},[198],{"categories":2375},[],{"categories":2377},[198],{"categories":2379},[],{"categories":2381},[],{"categories":2383},[],{"categories":2385},[195],{"categories":2387},[198],{"categories":2389},[201],{"categories":2391},[219],{"categories":2393},[219],{"categories":2395},[219],{"categories":2397},[219],{"categories":2399},[],{"categories":2401},[192],{"categories":2403},[201],{"categories":2405},[219],{"categories":2407},[192],{"categories":2409},[201],{"categories":2411},[198],{"categories":2413},[198,201],{"categories":2415},[201],{"categories":2417},[151],{"categories":2419},[219],{"categories":2421},[219],{"categories":2423},[201],{"categories":2425},[198],{"categories":2427},[],{"categories":2429},[219],{"categories":2431},[257],{"categories":2433},[192],{"categories":2435},[198],{"categories":2437},[198],{"categories":2439},[],{"categories":2441},[250],{"categories":2443},[],{"categories":2445},[192],{"categories":2447},[201],{"categories":2449},[219],{"categories":2451},[198],{"categories":2453},[219],{"categories":2455},[192],{"categories":2457},[219],{"categories":2459},[219],{"categories":2461},[],{"categories":2463},[195],{"categories":2465},[201],{"categories":2467},[219],{"categories":2469},[219],{"categories":2471},[219],{"categories":2473},[219],{"categories":2475},[219],{"categories":2477},[219],{"categories":2479},[219],{"categories":2481},[219],{"categories":2483},[219],{"categories":2485},[219],{"categories":2487},[243],{"categories":2489},[192],{"categories":2491},[198],{"categories":2493},[198],{"categories":2495},[],{"categories":2497},[198,192],{"categories":2499},[],{"categories":2501},[201],{"categories":2503},[219],{"categories":2505},[201],{"categories":2507},[198],{"categories":2509},[198],{"categories":2511},[198],{"categories":2513},[198],{"categories":2515},[198],{"categories":2517},[201],{"categories":2519},[195],{"categories":2521},[240],{"categories":2523},[219],{"categories":2525},[198],{"categories":2527},[],{"categories":2529},[],{"categories":2531},[201],{"categories":2533},[240],{"categories":2535},[198],{"categories":2537},[],{"categories":2539},[],{"categories":2541},[257],{"categories":2543},[198],{"categories":2545},[],{"categories":2547},[],{"categories":2549},[192],{"categories":2551},[195],{"categories":2553},[198],{"categories":2555},[195],{"categories":2557},[240],{"categories":2559},[],{"categories":2561},[219],{"categories":2563},[],{"categories":2565},[240],{"categories":2567},[198],{"categories":2569},[257],{"categories":2571},[],{"categories":2573},[257],{"categories":2575},[],{"categories":2577},[],{"categories":2579},[201],{"categories":2581},[],{"categories":2583},[195],{"categories":2585},[192],{"categories":2587},[240],{"categories":2589},[250],{"categories":2591},[],{"categories":2593},[],{"categories":2595},[198],{"categories":2597},[192],{"categories":2599},[257],{"categories":2601},[],{"categories":2603},[201],{"categories":2605},[201],{"categories":2607},[219],{"categories":2609},[198],{"categories":2611},[201],{"categories":2613},[198],{"categories":2615},[201],{"categories":2617},[198],{"categories":2619},[204],{"categories":2621},[219],{"categories":2623},[],{"categories":2625},[257],{"categories":2627},[250],{"categories":2629},[201],{"categories":2631},[],{"categories":2633},[198],{"categories":2635},[201],{"categories":2637},[195],{"categories":2639},[192],{"categories":2641},[198],{"categories":2643},[240],{"categories":2645},[250],{"categories":2647},[250],{"categories":2649},[198],{"categories":2651},[243],{"categories":2653},[198],{"categories":2655},[201],{"categories":2657},[195],{"categories":2659},[201],{"categories":2661},[198],{"categories":2663},[198],{"categories":2665},[201],{"categories":2667},[219],{"categories":2669},[],{"categories":2671},[192],{"categories":2673},[198],{"categories":2675},[201],{"categories":2677},[198],{"categories":2679},[198],{"categories":2681},[],{"categories":2683},[240],{"categories":2685},[195],{"categories":2687},[219],{"categories":2689},[198],{"categories":2691},[198],{"categories":2693},[240],{"categories":2695},[257],{"categories":2697},[243],{"categories":2699},[198],{"categories":2701},[219],{"categories":2703},[198],{"categories":2705},[201],{"categories":2707},[151],{"categories":2709},[198],{"categories":2711},[201],{"categories":2713},[243],{"categories":2715},[],{"categories":2717},[201],{"categories":2719},[250],{"categories":2721},[240],{"categories":2723},[198],{"categories":2725},[192],{"categories":2727},[195],{"categories":2729},[250],{"categories":2731},[],{"categories":2733},[201],{"categories":2735},[198],{"categories":2737},[],{"categories":2739},[219],{"categories":2741},[],{"categories":2743},[219],{"categories":2745},[198],{"categories":2747},[201],{"categories":2749},[201],{"categories":2751},[201],{"categories":2753},[],{"categories":2755},[],{"categories":2757},[198],{"categories":2759},[198],{"categories":2761},[],{"categories":2763},[240],{"categories":2765},[201],{"categories":2767},[257],{"categories":2769},[192],{"categories":2771},[],{"categories":2773},[],{"categories":2775},[219],{"categories":2777},[250],{"categories":2779},[198],{"categories":2781},[198],{"categories":2783},[198],{"categories":2785},[250],{"categories":2787},[219],{"categories":2789},[240],{"categories":2791},[198],{"categories":2793},[198],{"categories":2795},[198],{"categories":2797},[219],{"categories":2799},[198],{"categories":2801},[219],{"categories":2803},[201],{"categories":2805},[201],{"categories":2807},[250],{"categories":2809},[201],{"categories":2811},[198],{"categories":2813},[250],{"categories":2815},[240],{"categories":2817},[],{"categories":2819},[201],{"categories":2821},[],{"categories":2823},[],{"categories":2825},[],{"categories":2827},[195],{"categories":2829},[198],{"categories":2831},[201],{"categories":2833},[192],{"categories":2835},[201],{"categories":2837},[257],{"categories":2839},[],{"categories":2841},[201],{"categories":2843},[],{"categories":2845},[192],{"categories":2847},[201],{"categories":2849},[],{"categories":2851},[201],{"categories":2853},[198],{"categories":2855},[219],{"categories":2857},[198],{"categories":2859},[201],{"categories":2861},[219],{"categories":2863},[201],{"categories":2865},[250],{"categories":2867},[240],{"categories":2869},[192],{"categories":2871},[],{"categories":2873},[201],{"categories":2875},[240],{"categories":2877},[151],{"categories":2879},[219],{"categories":2881},[198],{"categories":2883},[240],{"categories":2885},[192],{"categories":2887},[],{"categories":2889},[201],{"categories":2891},[201],{"categories":2893},[198],{"categories":2895},[],{"categories":2897},[201],{"categories":2899},[204],{"categories":2901},[219],{"categories":2903},[201],{"categories":2905},[195],{"categories":2907},[],{"categories":2909},[198],{"categories":2911},[204],{"categories":2913},[198],{"categories":2915},[201],{"categories":2917},[219],{"categories":2919},[192],{"categories":2921},[151],{"categories":2923},[198],{"categories":2925},[198],{"categories":2927},[198],{"categories":2929},[219],{"categories":2931},[195],{"categories":2933},[198],{"categories":2935},[240],{"categories":2937},[219],{"categories":2939},[151],{"categories":2941},[198],{"categories":2943},[],{"categories":2945},[],{"categories":2947},[151],{"categories":2949},[243],{"categories":2951},[201],{"categories":2953},[201],{"categories":2955},[219],{"categories":2957},[198],{"categories":2959},[192],{"categories":2961},[240],{"categories":2963},[201],{"categories":2965},[198],{"categories":2967},[257],{"categories":2969},[198],{"categories":2971},[201],{"categories":2973},[],{"categories":2975},[198],{"categories":2977},[198],{"categories":2979},[219],{"categories":2981},[192],{"categories":2983},[],{"categories":2985},[198],{"categories":2987},[198],{"categories":2989},[250],{"categories":2991},[240],{"categories":2993},[198,201],{"categories":2995},[257,195],{"categories":2997},[198],{"categories":2999},[],{"categories":3001},[201],{"categories":3003},[],{"categories":3005},[250],{"categories":3007},[198],{"categories":3009},[219],{"categories":3011},[],{"categories":3013},[201],{"categories":3015},[],{"categories":3017},[240],{"categories":3019},[201],{"categories":3021},[192],{"categories":3023},[201],{"categories":3025},[198],{"categories":3027},[151],{"categories":3029},[257],{"categories":3031},[195],{"categories":3033},[195],{"categories":3035},[192],{"categories":3037},[192],{"categories":3039},[198],{"categories":3041},[201],{"categories":3043},[198],{"categories":3045},[198],{"categories":3047},[192],{"categories":3049},[198],{"categories":3051},[257],{"categories":3053},[219],{"categories":3055},[198],{"categories":3057},[201],{"categories":3059},[198],{"categories":3061},[],{"categories":3063},[250],{"categories":3065},[],{"categories":3067},[201],{"categories":3069},[192],{"categories":3071},[],{"categories":3073},[151],{"categories":3075},[198],{"categories":3077},[],{"categories":3079},[219],{"categories":3081},[201],{"categories":3083},[250],{"categories":3085},[198],{"categories":3087},[201],{"categories":3089},[250],{"categories":3091},[201],{"categories":3093},[219],{"categories":3095},[192],{"categories":3097},[219],{"categories":3099},[250],{"categories":3101},[198],{"categories":3103},[240],{"categories":3105},[198],{"categories":3107},[198],{"categories":3109},[198],{"categories":3111},[198],{"categories":3113},[201],{"categories":3115},[198],{"categories":3117},[201],{"categories":3119},[198],{"categories":3121},[192],{"categories":3123},[198],{"categories":3125},[201],{"categories":3127},[240],{"categories":3129},[192],{"categories":3131},[201],{"categories":3133},[240],{"categories":3135},[],{"categories":3137},[198],{"categories":3139},[198],{"categories":3141},[250],{"categories":3143},[],{"categories":3145},[201],{"categories":3147},[257],{"categories":3149},[198],{"categories":3151},[219],{"categories":3153},[257],{"categories":3155},[201],{"categories":3157},[195],{"categories":3159},[195],{"categories":3161},[198],{"categories":3163},[192],{"categories":3165},[],{"categories":3167},[198],{"categories":3169},[],{"categories":3171},[192],{"categories":3173},[198],{"categories":3175},[201],{"categories":3177},[201],{"categories":3179},[],{"categories":3181},[250],{"categories":3183},[250],{"categories":3185},[257],{"categories":3187},[240],{"categories":3189},[],{"categories":3191},[198],{"categories":3193},[192],{"categories":3195},[198],{"categories":3197},[250],{"categories":3199},[192],{"categories":3201},[219],{"categories":3203},[219],{"categories":3205},[],{"categories":3207},[219],{"categories":3209},[201],{"categories":3211},[240],{"categories":3213},[243],{"categories":3215},[198],{"categories":3217},[],{"categories":3219},[219],{"categories":3221},[250],{"categories":3223},[195],{"categories":3225},[198],{"categories":3227},[192],{"categories":3229},[151],{"categories":3231},[192],{"categories":3233},[],{"categories":3235},[],{"categories":3237},[219],{"categories":3239},[],{"categories":3241},[201],{"categories":3243},[201],{"categories":3245},[201],{"categories":3247},[],{"categories":3249},[198],{"categories":3251},[],{"categories":3253},[219],{"categories":3255},[192],{"categories":3257},[240],{"categories":3259},[198],{"categories":3261},[219],{"categories":3263},[219],{"categories":3265},[],{"categories":3267},[219],{"categories":3269},[192],{"categories":3271},[198],{"categories":3273},[],{"categories":3275},[201],{"categories":3277},[201],{"categories":3279},[192],{"categories":3281},[],{"categories":3283},[],{"categories":3285},[],{"categories":3287},[240],{"categories":3289},[201],{"categories":3291},[198],{"categories":3293},[],{"categories":3295},[],{"categories":3297},[],{"categories":3299},[240],{"categories":3301},[],{"categories":3303},[192],{"categories":3305},[],{"categories":3307},[],{"categories":3309},[240],{"categories":3311},[198],{"categories":3313},[219],{"categories":3315},[],{"categories":3317},[257],{"categories":3319},[219],{"categories":3321},[257],{"categories":3323},[198],{"categories":3325},[],{"categories":3327},[],{"categories":3329},[201],{"categories":3331},[],{"categories":3333},[],{"categories":3335},[201],{"categories":3337},[198],{"categories":3339},[],{"categories":3341},[201],{"categories":3343},[219],{"categories":3345},[257],{"categories":3347},[243],{"categories":3349},[201],{"categories":3351},[201],{"categories":3353},[],{"categories":3355},[],{"categories":3357},[],{"categories":3359},[219],{"categories":3361},[],{"categories":3363},[],{"categories":3365},[240],{"categories":3367},[192],{"categories":3369},[],{"categories":3371},[195],{"categories":3373},[257],{"categories":3375},[198],{"categories":3377},[250],{"categories":3379},[192],{"categories":3381},[243],{"categories":3383},[195],{"categories":3385},[250],{"categories":3387},[],{"categories":3389},[],{"categories":3391},[201],{"categories":3393},[192],{"categories":3395},[240],{"categories":3397},[192],{"categories":3399},[201],{"categories":3401},[151],{"categories":3403},[201],{"categories":3405},[],{"categories":3407},[198],{"categories":3409},[219],{"categories":3411},[250],{"categories":3413},[],{"categories":3415},[240],{"categories":3417},[219],{"categories":3419},[192],{"categories":3421},[201],{"categories":3423},[198],{"categories":3425},[195],{"categories":3427},[201,151],{"categories":3429},[201],{"categories":3431},[250],{"categories":3433},[198],{"categories":3435},[243],{"categories":3437},[257],{"categories":3439},[201],{"categories":3441},[],{"categories":3443},[201],{"categories":3445},[198],{"categories":3447},[195],{"categories":3449},[],{"categories":3451},[],{"categories":3453},[198],{"categories":3455},[243],{"categories":3457},[198],{"categories":3459},[],{"categories":3461},[219],{"categories":3463},[],{"categories":3465},[219],{"categories":3467},[250],{"categories":3469},[201],{"categories":3471},[198],{"categories":3473},[257],{"categories":3475},[250],{"categories":3477},[],{"categories":3479},[219],{"categories":3481},[198],{"categories":3483},[],{"categories":3485},[198],{"categories":3487},[201],{"categories":3489},[198],{"categories":3491},[201],{"categories":3493},[198],{"categories":3495},[198],{"categories":3497},[198],{"categories":3499},[198],{"categories":3501},[195],{"categories":3503},[],{"categories":3505},[204],{"categories":3507},[219],{"categories":3509},[198],{"categories":3511},[],{"categories":3513},[250],{"categories":3515},[198],{"categories":3517},[198],{"categories":3519},[201],{"categories":3521},[219],{"categories":3523},[198],{"categories":3525},[198],{"categories":3527},[195],{"categories":3529},[201],{"categories":3531},[240],{"categories":3533},[],{"categories":3535},[243],{"categories":3537},[198],{"categories":3539},[],{"categories":3541},[219],{"categories":3543},[257],{"categories":3545},[],{"categories":3547},[],{"categories":3549},[219],{"categories":3551},[219],{"categories":3553},[257],{"categories":3555},[192],{"categories":3557},[201],{"categories":3559},[201],{"categories":3561},[198],{"categories":3563},[195],{"categories":3565},[],{"categories":3567},[],{"categories":3569},[219],{"categories":3571},[243],{"categories":3573},[250],{"categories":3575},[201],{"categories":3577},[240],{"categories":3579},[243],{"categories":3581},[243],{"categories":3583},[],{"categories":3585},[219],{"categories":3587},[198],{"categories":3589},[198],{"categories":3591},[250],{"categories":3593},[],{"categories":3595},[219],{"categories":3597},[219],{"categories":3599},[219],{"categories":3601},[],{"categories":3603},[201],{"categories":3605},[198],{"categories":3607},[],{"categories":3609},[192],{"categories":3611},[195],{"categories":3613},[],{"categories":3615},[198],{"categories":3617},[198],{"categories":3619},[],{"categories":3621},[250],{"categories":3623},[],{"categories":3625},[],{"categories":3627},[],{"categories":3629},[],{"categories":3631},[198],{"categories":3633},[219],{"categories":3635},[],{"categories":3637},[],{"categories":3639},[198],{"categories":3641},[198],{"categories":3643},[198],{"categories":3645},[243],{"categories":3647},[198],{"categories":3649},[243],{"categories":3651},[],{"categories":3653},[243],{"categories":3655},[243],{"categories":3657},[151],{"categories":3659},[201],{"categories":3661},[250],{"categories":3663},[],{"categories":3665},[],{"categories":3667},[243],{"categories":3669},[250],{"categories":3671},[250],{"categories":3673},[250],{"categories":3675},[],{"categories":3677},[192],{"categories":3679},[250],{"categories":3681},[250],{"categories":3683},[192],{"categories":3685},[250],{"categories":3687},[195],{"categories":3689},[250],{"categories":3691},[250],{"categories":3693},[250],{"categories":3695},[243],{"categories":3697},[219],{"categories":3699},[219],{"categories":3701},[198],{"categories":3703},[250],{"categories":3705},[243],{"categories":3707},[151],{"categories":3709},[243],{"categories":3711},[243],{"categories":3713},[243],{"categories":3715},[],{"categories":3717},[195],{"categories":3719},[],{"categories":3721},[151],{"categories":3723},[250],{"categories":3725},[250],{"categories":3727},[250],{"categories":3729},[201],{"categories":3731},[219,195],{"categories":3733},[243],{"categories":3735},[],{"categories":3737},[],{"categories":3739},[243],{"categories":3741},[],{"categories":3743},[243],{"categories":3745},[219],{"categories":3747},[201],{"categories":3749},[],{"categories":3751},[250],{"categories":3753},[198],{"categories":3755},[240],{"categories":3757},[],{"categories":3759},[198],{"categories":3761},[],{"categories":3763},[219],{"categories":3765},[192],{"categories":3767},[243],{"categories":3769},[],{"categories":3771},[250],{"categories":3773},[219],[3775,3884,4040,4114],{"id":3776,"title":3777,"ai":3778,"body":3783,"categories":3861,"created_at":152,"date_modified":152,"description":144,"extension":153,"faq":152,"featured":154,"kicker_label":152,"meta":3862,"navigation":172,"path":3872,"published_at":152,"question":152,"scraped_at":3873,"seo":3874,"sitemap":3875,"source_id":3876,"source_name":3877,"source_type":179,"source_url":3878,"stem":3879,"tags":3880,"thumbnail_url":152,"tldr":3881,"tweet":152,"unknown_tags":3882,"__hash__":3883},"summaries\u002Fsummaries\u002Fd78a27ea5811605b-pin-github-actions-deps-to-avoid-axios-supply-chai-summary.md","Pin GitHub Actions Deps to Avoid Axios Supply Chain Attacks",{"provider":7,"model":8,"input_tokens":3779,"output_tokens":3780,"processing_time_ms":3781,"cost_usd":3782},6521,1824,10596,0.0021937,{"type":14,"value":3784,"toc":3856},[3785,3789,3792,3799,3803,3806,3809,3813,3816,3830],[17,3786,3788],{"id":3787},"secure-cicd-against-supply-chain-attacks","Secure CI\u002FCD Against Supply Chain Attacks",[22,3790,3791],{},"A North Korean actor compromised Axios npm library (v1.14.1) on March 31, 2026, as part of a broad attack. OpenAI's GitHub Actions workflow for macOS app signing (ChatGPT Desktop, Codex App\u002FCLI, Atlas) downloaded and ran the malicious version, exposing signing certificates and notarization materials. Root cause: using floating tag instead of specific commit hash and lacking minimumReleaseAge config, allowing instant malicious package pulls.",[22,3793,3794,3795,3798],{},"Key lesson: Always pin dependencies to commit hashes in GitHub Actions (e.g., avoid ",[36,3796,3797],{},"@latest"," or tags) and enforce minimumReleaseAge to delay new package adoption, blocking rapid supply chain exploits. OpenAI confirmed no cert exfiltration due to workflow timing and mitigations, but rotated anyway—no evidence of data breach, IP theft, or tampered software.",[17,3800,3802],{"id":3801},"proactive-cert-rotation-and-apple-coordination","Proactive Cert Rotation and Apple Coordination",[22,3804,3805],{},"OpenAI engaged forensics firm, revoked old cert, issued new builds, and collaborated with Apple to block new notarizations using prior cert. Reviewed all notarizations: all expected, no unauthorized apps. Post-revocation (May 8, 2026), macOS blocks old-signed app launches\u002Fdownloads unless bypassed.",[22,3807,3808],{},"Trade-off: Delayed full revocation 30 days to avoid disrupting users, monitoring for misuse. Result: New fake OpenAI apps would lack notarization and fail Gatekeeper by default, minimizing risk during transition.",[17,3810,3812],{"id":3811},"user-impact-update-macos-apps-now","User Impact: Update macOS Apps Now",[22,3814,3815],{},"Only macOS affected (iOS\u002FAndroid\u002FLinux\u002FWindows\u002Fweb safe). Pre-May 8 versions lose support\u002Fupdates:",[29,3817,3818,3821,3824,3827],{},[32,3819,3820],{},"ChatGPT Desktop: \u003C1.2026.051",[32,3822,3823],{},"Codex App: \u003C26.406.40811",[32,3825,3826],{},"Codex CLI: \u003C0.119.0",[32,3828,3829],{},"Atlas: \u003C1.2026.84.2",[22,3831,3832,3833,61,3840,61,3845,61,3850,3855],{},"Update via in-app or official links: ",[3834,3835,3839],"a",{"href":3836,"rel":3837},"https:\u002F\u002Fchatgpt.com\u002Fdownload\u002F",[3838],"nofollow","ChatGPT",[3834,3841,3844],{"href":3842,"rel":3843},"https:\u002F\u002Fchatgpt.com\u002Fcodex\u002F",[3838],"Codex",[3834,3846,3849],{"href":3847,"rel":3848},"https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcli",[3838],"Codex CLI",[3834,3851,3854],{"href":3852,"rel":3853},"https:\u002F\u002Fchatgpt.com\u002Fatlas",[3838],"Atlas",". Avoid third-party sources to prevent phishing. No password\u002FAPI key changes needed.",{"title":144,"searchDepth":145,"depth":145,"links":3857},[3858,3859,3860],{"id":3787,"depth":145,"text":3788},{"id":3801,"depth":145,"text":3802},{"id":3811,"depth":145,"text":3812},[151],{"content_references":3863,"triage":3870},[3864],{"type":3865,"title":3866,"author":3867,"publisher":3867,"url":3868,"context":3869},"report","North Korea threat actor targets Axios npm package","Google Cloud","https:\u002F\u002Fcloud.google.com\u002Fblog\u002Ftopics\u002Fthreat-intelligence\u002Fnorth-korea-threat-actor-targets-axios-npm-package","cited",{"relevance":168,"novelty":169,"quality":168,"actionability":168,"composite":170,"reasoning":3871},"Category: DevOps & Cloud. The article provides actionable insights on securing CI\u002FCD pipelines against supply chain attacks, specifically by pinning dependencies to commit hashes and enforcing minimumReleaseAge. This directly addresses the audience's need for practical security measures in their development workflows.","\u002Fsummaries\u002Fd78a27ea5811605b-pin-github-actions-deps-to-avoid-axios-supply-chai-summary","2026-04-16 03:19:03",{"title":3777,"description":144},{"loc":3872},"d78a27ea5811605b","OpenAI News","https:\u002F\u002Fopenai.com\u002Findex\u002Faxios-developer-tool-compromise","summaries\u002Fd78a27ea5811605b-pin-github-actions-deps-to-avoid-axios-supply-chai-summary",[183,184,185],"OpenAI's macOS signing cert exposed via malicious Axios npm package in GitHub Actions; rotate certs, pin to commit hashes, set minimumReleaseAge—no user data lost.",[],"HyaCy-hFwKPU04t9JAGrqzW07xU5PCg-BnPd7drsSTY",{"id":3885,"title":3886,"ai":3887,"body":3892,"categories":3993,"created_at":152,"date_modified":152,"description":144,"extension":153,"faq":152,"featured":154,"kicker_label":152,"meta":3994,"navigation":172,"path":4026,"published_at":4027,"question":152,"scraped_at":4028,"seo":4029,"sitemap":4030,"source_id":4031,"source_name":4032,"source_type":179,"source_url":4033,"stem":4034,"tags":4035,"thumbnail_url":152,"tldr":4037,"tweet":152,"unknown_tags":4038,"__hash__":4039},"summaries\u002Fsummaries\u002F57efa85fbbf99fa5-scaffold-ai-agent-prod-infra-in-60s-with-google-st-summary.md","Scaffold AI Agent Prod Infra in 60s with Google Starter Pack",{"provider":7,"model":8,"input_tokens":3888,"output_tokens":3889,"processing_time_ms":3890,"cost_usd":3891},6245,2114,24890,0.00179915,{"type":14,"value":3893,"toc":3987},[3894,3898,3905,3908,3912,3915,3954,3957,3961,3972,3976,3984],[17,3895,3897],{"id":3896},"slash-3-9-month-ai-agent-infra-tax-to-60-seconds","Slash 3-9 Month AI Agent Infra Tax to 60 Seconds",[22,3899,3900,3901,3904],{},"AI agent prototypes fail to ship because teams spend 3-9 months on four core challenges: customization (secure data connections), evaluation (pre-production quality checks), deployment (scalable infra with CI\u002FCD), and observability (real-time monitoring). Agent Starter Pack, an Apache 2.0 project generator from Google Cloud Platform (6,100 GitHub stars, 1,400 forks, weekly releases for a year), solves this with one CLI command: ",[36,3902,3903],{},"uvx agent-starter-pack create",". It scaffolds everything around your agent logic, independent of frameworks like LangGraph or CrewAI, letting you focus on business logic.",[22,3906,3907],{},"Run the command, pick a template and deployment target (two prompts only), and get seven components instantly: FastAPI backend with auth, chat UI frontend, Terraform for GCP resources, Cloud Build\u002FGitHub Actions CI\u002FCD, Vertex AI evaluation framework, Cloud Logging\u002FTrace observability, and auto-generated docs. No manual YAML, boilerplate, or late-night Terraform debugging—output deploys directly.",[17,3909,3911],{"id":3910},"leverage-6-battle-tested-agent-templates","Leverage 6 Battle-Tested Agent Templates",[22,3913,3914],{},"Choose from six complete, working templates matching your architecture:",[29,3916,3917,3924,3930,3936,3942,3948],{},[32,3918,3919,3923],{},[3920,3921,3922],"strong",{},"ADK",": Base ReAct agent via Google's Agent Development Kit.",[32,3925,3926,3929],{},[3920,3927,3928],{},"ADK + A2A",": Adds Agent-to-Agent (A2A) protocol for cross-framework communication (e.g., ADK agent invokes LangGraph\u002FCrewAI agents via standardized tasks).",[32,3931,3932,3935],{},[3920,3933,3934],{},"Agentic RAG",": Integrates Vertex AI Search\u002FVector Search for secure document Q&A.",[32,3937,3938,3941],{},[3920,3939,3940],{},"LangGraph",": ReAct flow using LangChain's stateful orchestration.",[32,3943,3944,3947],{},[3920,3945,3946],{},"ADK Java",": ReAct pattern for Java teams.",[32,3949,3950,3953],{},[3920,3951,3952],{},"ADK Live",": Multimodal (audio\u002Fvideo\u002Ftext) real-time chat with Gemini.",[22,3955,3956],{},"All share identical production scaffolding. A2A enables multi-agent coordination out-of-box, future-proofing for distributed systems (upgrading per Google Cloud Blog).",[17,3958,3960],{"id":3959},"pick-cloud-run-or-agent-engine-for-flexible-deployment","Pick Cloud Run or Agent Engine for Flexible Deployment",[22,3962,3963,3964,3967,3968,3971],{},"Generate for ",[3920,3965,3966],{},"Cloud Run"," (containerized FastAPI): Full control over scaling, networking, resources; pay-per-use; ideal if you know GCP. Or ",[3920,3969,3970],{},"Vertex AI Agent Engine"," (fully managed): Auto-scaling, security (VPC Service Controls), no infra ops; deploy and forget. Switch targets with one CLI flag. Built-in Vertex AI eval runs quality checks pre\u002Fpost-deploy. Observability defaults: Cloud Trace for request paths, Cloud Logging for searchable logs, Looker dashboards for analytics—avoids 6-month regrets from skipped monitoring.",[17,3973,3975],{"id":3974},"stack-up-against-langgraphcrewaiknow-the-trade-offs","Stack Up Against LangGraph\u002FCrewAI—Know the Trade-offs",[22,3977,3978,3979,3983],{},"Unlike orchestration frameworks, Starter Pack wraps ",[3980,3981,3982],"em",{},"any"," (LangGraph for mature state persistence\u002Fcheckpointing but verbose schemas\u002Fnodes\u002Fedges; CrewAI for simple roles but weak long-running state, leading to migrations). Use LangGraph inside Starter Pack for best of both.",[22,3985,3986],{},"Caveats: GCP lock-in (Vertex AI, Cloud Run—no AWS\u002FAzure); no official Google support\u002FSLAs (\"demonstrative\" repo); Python-first (Java template secondary); infra incurs costs (Vertex AI, etc.). Skip if avoiding vendor lock or non-GCP. For GCP teams, it accelerates shipping without reinventing wheels—test via GitHub repo.",{"title":144,"searchDepth":145,"depth":145,"links":3988},[3989,3990,3991,3992],{"id":3896,"depth":145,"text":3897},{"id":3910,"depth":145,"text":3911},{"id":3959,"depth":145,"text":3960},{"id":3974,"depth":145,"text":3975},[198,151],{"content_references":3995,"triage":4022},[3996,4001,4004,4007,4011,4014,4017,4019],{"type":3997,"title":3998,"url":3999,"context":4000},"tool","Agent Starter Pack","https:\u002F\u002Fgithub.com\u002FGoogleCloudPlatform\u002Fagent-starter-pack","recommended",{"type":158,"title":4002,"url":4003,"context":162},"Official Docs","https:\u002F\u002Fgooglecloudplatform.github.io\u002Fagent-starter-pack\u002F",{"type":158,"title":4005,"url":4006,"context":162},"Why Starter Pack Guide","https:\u002F\u002Fgooglecloudplatform.github.io\u002Fagent-starter-pack\u002Fguide\u002Fwhy_starter_pack.html",{"type":158,"title":4008,"author":4009,"url":4010,"context":162},"A2A Protocol Upgrade","Google Cloud Blog","https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fai-machine-learning\u002Fagent2agent-protocol-is-getting-an-upgrade",{"type":158,"title":4012,"url":4013,"context":162},"Product Hunt Launch","https:\u002F\u002Fwww.producthunt.com\u002Fproducts\u002Fagent-starter-pack",{"type":3997,"title":4015,"url":4016,"context":162},"Google ADK (Agent Development Kit)","https:\u002F\u002Fgoogle.github.io\u002Fadk-docs\u002F",{"type":3997,"title":3970,"url":4018,"context":162},"https:\u002F\u002Fcloud.google.com\u002Fvertex-ai\u002Fgenerative-ai\u002Fdocs\u002Fagent-engine\u002Foverview",{"type":3997,"title":4020,"url":4021,"context":4000},"Dynamous AI","https:\u002F\u002Fdynamous.ai\u002F?code=646a60",{"relevance":4023,"novelty":168,"quality":168,"actionability":4023,"composite":4024,"reasoning":4025},5,4.55,"Category: AI & LLMs. The article provides a detailed overview of Google's Agent Starter Pack, which directly addresses the pain point of lengthy infrastructure setup for AI agents by offering a practical solution that can be implemented immediately. The step-by-step command and the description of the components generated make it highly actionable for developers looking to streamline their AI agent deployment.","\u002Fsummaries\u002F57efa85fbbf99fa5-scaffold-ai-agent-prod-infra-in-60s-with-google-st-summary","2026-04-19 16:48:34","2026-04-21 15:22:17",{"title":3886,"description":144},{"loc":4026},"8bb17917095e04bd","DIY Smart Code","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=3XcpwHu9ahQ","summaries\u002F57efa85fbbf99fa5-scaffold-ai-agent-prod-infra-in-60s-with-google-st-summary",[4036,183,184,185],"agents","Google's Agent Starter Pack CLI generates full production-ready AI agent stack—FastAPI backend, Terraform IaC, CI\u002FCD, Vertex AI eval, observability—in 60 seconds, cutting typical 3-9 month infra setup to minutes across 6 templates.",[],"2WYxEySmkGl-6PT6g6swlwIGu6Z8QlW4YinCWHlJ-Ks",{"id":4041,"title":4042,"ai":4043,"body":4048,"categories":4089,"created_at":152,"date_modified":152,"description":144,"extension":153,"faq":152,"featured":154,"kicker_label":152,"meta":4090,"navigation":172,"path":4101,"published_at":4102,"question":152,"scraped_at":4103,"seo":4104,"sitemap":4105,"source_id":4106,"source_name":4107,"source_type":179,"source_url":4108,"stem":4109,"tags":4110,"thumbnail_url":152,"tldr":4111,"tweet":152,"unknown_tags":4112,"__hash__":4113},"summaries\u002Fsummaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary.md","GitHub RCE via Single Git Push X-Stat Injection",{"provider":7,"model":8,"input_tokens":4044,"output_tokens":4045,"processing_time_ms":4046,"cost_usd":4047},3870,2355,26057,0.001929,{"type":14,"value":4049,"toc":4084},[4050,4054,4061,4064,4068,4071,4074,4078],[17,4051,4053],{"id":4052},"exploit-mechanism-x-stat-injection-in-internal-git-protocol","Exploit Mechanism: X-Stat Injection in Internal Git Protocol",[22,4055,4056,4057,4060],{},"GitHub's internal git protocol processes push requests with an X-Stat field that's vulnerable to injection attacks. An authenticated attacker crafts a malicious git push that injects payloads into this field, bypassing normal access controls. This triggers remote code execution (RCE) directly on GitHub.com infrastructure and GitHub Enterprise Server (GHES) instances. No special tools needed—just a standard ",[36,4058,4059],{},"git push"," command developers run daily, highlighting risks in routine operations.",[22,4062,4063],{},"Key attack vector: The protocol doesn't properly sanitize or validate X-Stat headers during push handling, allowing arbitrary code injection. Builders should audit custom git hooks and protocol extensions for similar field injection flaws, as they mirror this path.",[17,4065,4067],{"id":4066},"impact-widespread-repo-access-and-high-severity","Impact: Widespread Repo Access and High Severity",[22,4069,4070],{},"RCE grants attackers control over GitHub servers, enabling access to millions of repositories beyond the attacker's permissions. This compromises private code, secrets, and deployment pipelines connected to repos. Tracked as CVE-2026-3854 with High severity, it underscores how a single push can escalate privileges across the platform.",[22,4072,4073],{},"Trade-offs in GitHub's design: Optimized for speed in high-volume pushes trades off stricter input validation, a common pitfall in distributed version control systems. Mitigate by enabling strict protocol enforcement and monitoring anomalous push patterns in your workflows.",[17,4075,4077],{"id":4076},"lessons-for-secure-git-workflows","Lessons for Secure Git Workflows",[22,4079,4080,4081,4083],{},"Everyday ",[36,4082,4059],{}," isn't bulletproof—internal protocol flaws expose production systems. Scan for field injections in git server configs, use authenticated-only pushes where possible, and integrate vulnerability alerts like CVE feeds into CI\u002FCD. For GHES users, patch immediately and review audit logs for suspicious X-Stat activity. This vuln proves even battle-tested platforms like GitHub need ongoing protocol hardening.",{"title":144,"searchDepth":145,"depth":145,"links":4085},[4086,4087,4088],{"id":4052,"depth":145,"text":4053},{"id":4066,"depth":145,"text":4067},{"id":4076,"depth":145,"text":4077},[151],{"content_references":4091,"triage":4098},[4092,4095],{"type":3997,"title":4093,"url":4094,"context":162},"GitHub","https:\u002F\u002Fgithub.com\u002F",{"type":158,"title":4096,"url":4097,"context":3869},"CVE-2026-3854","https:\u002F\u002Fwww.cve.org\u002Fcverecord?id=CVE-2026-3854",{"relevance":169,"novelty":169,"quality":168,"actionability":168,"composite":4099,"reasoning":4100},3.45,"Category: DevOps. The article discusses a specific vulnerability in GitHub's internal git protocol, which is relevant to DevOps practices. It provides actionable insights on securing git workflows, such as auditing custom git hooks and enabling strict protocol enforcement, which can help builders mitigate similar risks.","\u002Fsummaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary","2026-04-29 01:55:02","2026-05-03 17:00:51",{"title":4042,"description":144},{"loc":4101},"3e8ba433c0dc3549","Generative AI","https:\u002F\u002Fgenerativeai.pub\u002Fit-only-took-one-git-push-to-access-millions-of-github-repos-21d055d9c774?source=rss----440100e76000---4","summaries\u002F3e8ba433c0dc3549-github-rce-via-single-git-push-x-stat-injection-summary",[183,185],"Authenticated users exploited X-Stat field injection in GitHub's internal git protocol for RCE on GitHub.com and GHES using a standard git push, enabling access to millions of repos (CVE-2026-3854, High severity).",[],"0g3xr7fsya2prYzwl05ASxRgi2MuqSo3PHEtp1y3sB8",{"id":4115,"title":4116,"ai":4117,"body":4122,"categories":4167,"created_at":152,"date_modified":152,"description":144,"extension":153,"faq":152,"featured":154,"kicker_label":152,"meta":4168,"navigation":172,"path":4173,"published_at":4174,"question":152,"scraped_at":4175,"seo":4176,"sitemap":4177,"source_id":4178,"source_name":4179,"source_type":179,"source_url":4180,"stem":4181,"tags":4182,"thumbnail_url":152,"tldr":4183,"tweet":152,"unknown_tags":4184,"__hash__":4185},"summaries\u002Fsummaries\u002F73f55123201134f9-mount-s3-buckets-as-file-systems-with-aws-s3-files-summary.md","Mount S3 Buckets as File Systems with AWS S3 Files",{"provider":7,"model":8,"input_tokens":4118,"output_tokens":4119,"processing_time_ms":4120,"cost_usd":4121},3939,1507,8922,0.00151865,{"type":14,"value":4123,"toc":4162},[4124,4128,4131,4138,4142,4145,4148,4152,4155],[17,4125,4127],{"id":4126},"s3-files-delivers-native-file-system-access-to-s3","S3 Files Delivers Native File System Access to S3",[22,4129,4130],{},"AWS S3 Files transforms object storage into a POSIX-compliant file system mountable on EC2 instances, containers, and Lambda functions. This eliminates custom hacks like FUSE wrappers or periodic sync scripts, providing low-latency read\u002Fwrite access indistinguishable from local disks for AI\u002FML, data engineering, and DevOps workloads. Under the hood, it leverages S3's metadata for directory structures and supports standard file operations without data migration—your existing buckets work immediately.",[22,4132,4133,4134,4137],{},"To implement, grant IAM roles with s3:PutObject, s3:GetObject, etc., permissions scoped to the bucket prefix, then mount via AWS CLI or SDK: ",[36,4135,4136],{},"aws s3files mount s3:\u002F\u002Fyour-bucket \u002Fmnt\u002Fpoint",". This cuts integration time from hours of scripting to minutes, enabling seamless data access in containerized ML training pipelines or serverless inference.",[17,4139,4141],{"id":4140},"realistic-use-cases-in-aiml-and-devops","Realistic Use Cases in AI\u002FML and DevOps",[22,4143,4144],{},"For AI\u002FML teams, mount training datasets directly into Jupyter on EC2 or SageMaker, avoiding costly EBS volumes or data downloads—process petabyte-scale S3 data at near-native speeds. DevOps benefits include containerized ETL jobs reading\u002Fwriting S3 as local files without volume mounts, and Lambda functions handling file I\u002FO for event-driven processing without temporary storage hacks.",[22,4146,4147],{},"Trade-offs: Strong consistency for small files (\u003C100MB), eventual consistency for large ones; throughput caps at S3's request rates (3,500 PUT\u002FGET per prefix\u002Fsec). Ideal for read-heavy ML feature stores or log processing, less so for high-write transactional DBs.",[17,4149,4151],{"id":4150},"avoid-common-pitfalls-security-cost-data-risks","Avoid Common Pitfalls: Security, Cost, Data Risks",[22,4153,4154],{},"Misconfigurations amplify S3's pitfalls: Broad IAM policies expose buckets publicly—use least-privilege with bucket policies denying public access and encrypting at-rest\u002Ftransit. Costs spike from unoptimized PUTs (e.g., frequent small writes); batch operations and use Intelligent-Tiering to mitigate, monitoring via CloudWatch for >$0.023\u002FGB PUT fees.",[22,4156,4157,4158,4161],{},"Data loss hits from concurrent writes without locks—implement app-level semaphores or use S3 atomic operations. Test mounts in staging: unmount with ",[36,4159,4160],{},"aws s3files unmount \u002Fmnt\u002Fpoint"," to verify no corruption. Always enable versioning and MFA-delete on production buckets.",{"title":144,"searchDepth":145,"depth":145,"links":4163},[4164,4165,4166],{"id":4126,"depth":145,"text":4127},{"id":4140,"depth":145,"text":4141},{"id":4150,"depth":145,"text":4151},[151],{"content_references":4169,"triage":4170},[],{"relevance":4023,"novelty":168,"quality":168,"actionability":168,"composite":4171,"reasoning":4172},4.35,"Category: DevOps & Cloud. The article provides a detailed explanation of how AWS S3 Files can be used to enhance AI\u002FML workflows by transforming S3 buckets into file systems, addressing a specific pain point for developers looking to streamline data access. It includes practical implementation steps and highlights potential pitfalls, making it actionable for the target audience.","\u002Fsummaries\u002F73f55123201134f9-mount-s3-buckets-as-file-systems-with-aws-s3-files-summary","2026-04-18 18:01:01","2026-04-19 01:22:18",{"title":4116,"description":144},{"loc":4173},"73f55123201134f9","Towards AI","https:\u002F\u002Fpub.towardsai.net\u002Faws-s3-files-explained-the-smarter-way-to-turn-s3-buckets-into-file-systems-3459560f7046?source=rss----98111c9905da---4","summaries\u002F73f55123201134f9-mount-s3-buckets-as-file-systems-with-aws-s3-files-summary",[183,184],"AWS S3 Files mounts buckets directly as file systems on EC2, containers, and Lambda—eliminating FUSE hacks and sync scripts for AI\u002FML workflows, but misconfigurations risk exposing, corrupting, or losing data.",[],"i9cGWnIzxtJTktm1csYQQ2MxZ9wdsHkt8i8DFEsZ0tQ"]