/**
 * Generated bundle index. Do not edit.
 */
export * from './index';
export { BrowserJsonp as ɵangular_packages_http_http_e } from './src/backends/browser_jsonp';
export { Body as ɵangular_packages_http_http_f } from './src/body';
export { _createDefaultCookieXSRFStrategy as ɵangular_packages_http_http_a, httpFactory as ɵangular_packages_http_http_b, jsonpFactory as ɵangular_packages_http_http_c } from './src/http_module';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDO0FBRXhCLE9BQU8sRUFBQyxZQUFZLElBQUksNkJBQTZCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRixPQUFPLEVBQUMsSUFBSSxJQUFJLDZCQUE2QixFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQ0FBZ0MsSUFBSSw2QkFBNkIsRUFBQyxXQUFXLElBQUksNkJBQTZCLEVBQUMsWUFBWSxJQUFJLDZCQUE2QixFQUFDLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQge0Jyb3dzZXJKc29ucCBhcyDJtWFuZ3VsYXJfcGFja2FnZXNfaHR0cF9odHRwX2V9IGZyb20gJy4vc3JjL2JhY2tlbmRzL2Jyb3dzZXJfanNvbnAnO1xuZXhwb3J0IHtCb2R5IGFzIMm1YW5ndWxhcl9wYWNrYWdlc19odHRwX2h0dHBfZn0gZnJvbSAnLi9zcmMvYm9keSc7XG5leHBvcnQge19jcmVhdGVEZWZhdWx0Q29va2llWFNSRlN0cmF0ZWd5IGFzIMm1YW5ndWxhcl9wYWNrYWdlc19odHRwX2h0dHBfYSxodHRwRmFjdG9yeSBhcyDJtWFuZ3VsYXJfcGFja2FnZXNfaHR0cF9odHRwX2IsanNvbnBGYWN0b3J5IGFzIMm1YW5ndWxhcl9wYWNrYWdlc19odHRwX2h0dHBfY30gZnJvbSAnLi9zcmMvaHR0cF9tb2R1bGUnO1xuZXhwb3J0IHtSZXF1ZXN0QXJncyBhcyDJtWFuZ3VsYXJfcGFja2FnZXNfaHR0cF9odHRwX2R9IGZyb20gJy4vc3JjL2ludGVyZmFjZXMnOyJdfQ==